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

111:                                              ; preds = %14
  %112 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %112, align 4, !tbaa !9
  br label %133

113:                                              ; preds = %14
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = icmp slt i32 %115, 1
  br i1 %116, label %117, label %119

117:                                              ; preds = %113
  %118 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %118, align 4, !tbaa !9
  br label %132

119:                                              ; preds = %113
  %120 = load ptr, ptr %22, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = icmp slt i32 %121, 1
  br i1 %122, label %129, label %123

123:                                              ; preds = %119
  %124 = load ptr, ptr %22, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = load ptr, ptr %17, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = icmp slt i32 %125, %127
  br i1 %128, label %129, label %131

129:                                              ; preds = %123, %119
  %130 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %130, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %129, %123
  br label %132

132:                                              ; preds = %131, %117
  br label %133

133:                                              ; preds = %132, %111
  %134 = load ptr, ptr %28, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %137, label %142

137:                                              ; preds = %133
  %138 = load ptr, ptr %28, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = sub nsw i32 0, %139
  store i32 %140, ptr %31, align 4, !tbaa !9
  %141 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %31, i32 noundef 6)
  store i32 1, ptr %86, align 4
  br label %2172

142:                                              ; preds = %133
  %143 = call double @dlamch_(ptr noundef @.str.1)
  store double %143, ptr %83, align 8, !tbaa !11
  %144 = load ptr, ptr %23, align 8, !tbaa !5
  %145 = load double, ptr %144, align 8, !tbaa !11
  %146 = fcmp ole double %145, 0.000000e+00
  br i1 %146, label %151, label %147

147:                                              ; preds = %142
  %148 = load ptr, ptr %23, align 8, !tbaa !5
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = fcmp oge double %149, 1.000000e+00
  br i1 %150, label %151, label %153

151:                                              ; preds = %147, %142
  %152 = load double, ptr %83, align 8, !tbaa !11
  store double %152, ptr %41, align 8, !tbaa !11
  br label %156

153:                                              ; preds = %147
  %154 = load ptr, ptr %23, align 8, !tbaa !5
  %155 = load double, ptr %154, align 8, !tbaa !11
  store double %155, ptr %41, align 8, !tbaa !11
  br label %156

156:                                              ; preds = %153, %151
  %157 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 0, ptr %157, align 4, !tbaa !9
  %158 = load ptr, ptr %17, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %156
  store i32 1, ptr %86, align 4
  br label %2172

162:                                              ; preds = %156
  %163 = load ptr, ptr %17, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp eq i32 %164, 1
  br i1 %165, label %166, label %207

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

171:                                              ; preds = %166
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load ptr, ptr %21, align 8, !tbaa !5
  %174 = load i32, ptr %30, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.doublecomplex, ptr %173, i64 %175
  %177 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %172, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %176, ptr noundef %177)
  br label %206

178:                                              ; preds = %166
  %179 = load ptr, ptr %24, align 8, !tbaa !5
  store i32 1, ptr %179, align 4, !tbaa !9
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = getelementptr inbounds double, ptr %180, i64 1
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = load ptr, ptr %21, align 8, !tbaa !5
  %184 = load i32, ptr %30, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %183, i64 %185
  %187 = load ptr, ptr %22, align 8, !tbaa !5
  %188 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %181, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %182, ptr noundef %186, ptr noundef %187, ptr noundef %188)
  %189 = load ptr, ptr %19, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i64 1
  %191 = load double, ptr %190, align 8, !tbaa !11
  %192 = fcmp oge double %191, 0.000000e+00
  br i1 %192, label %193, label %197

193:                                              ; preds = %178
  %194 = load ptr, ptr %19, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i64 1
  %196 = load double, ptr %195, align 8, !tbaa !11
  br label %202

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

202:                                              ; preds = %197, %193
  %203 = phi double [ %196, %193 ], [ %201, %197 ]
  %204 = load ptr, ptr %19, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %204, i64 1
  store double %203, ptr %205, align 8, !tbaa !11
  br label %206

206:                                              ; preds = %202, %171
  store i32 1, ptr %86, align 4
  br label %2172

207:                                              ; preds = %162
  br label %208

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

213:                                              ; preds = %208
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = sub nsw i32 %215, 1
  store i32 %216, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %292, %213
  %218 = load i32, ptr %52, align 4, !tbaa !9
  %219 = load i32, ptr %31, align 4, !tbaa !9
  %220 = icmp sle i32 %218, %219
  br i1 %220, label %221, label %295

221:                                              ; preds = %217
  %222 = load ptr, ptr %19, align 8, !tbaa !5
  %223 = load i32, ptr %52, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %222, i64 %224
  %226 = load ptr, ptr %20, align 8, !tbaa !5
  %227 = load i32, ptr %52, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  call void @dlartg_(ptr noundef %225, ptr noundef %229, ptr noundef %69, ptr noundef %71, ptr noundef %55)
  %230 = load double, ptr %55, align 8, !tbaa !11
  %231 = load ptr, ptr %19, align 8, !tbaa !5
  %232 = load i32, ptr %52, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %231, i64 %233
  store double %230, ptr %234, align 8, !tbaa !11
  %235 = load double, ptr %71, align 8, !tbaa !11
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = load i32, ptr %52, align 4, !tbaa !9
  %238 = add nsw i32 %237, 1
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %236, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !11
  %242 = fmul double %235, %241
  %243 = load ptr, ptr %20, align 8, !tbaa !5
  %244 = load i32, ptr %52, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds double, ptr %243, i64 %245
  store double %242, ptr %246, align 8, !tbaa !11
  %247 = load double, ptr %69, align 8, !tbaa !11
  %248 = load ptr, ptr %19, align 8, !tbaa !5
  %249 = load i32, ptr %52, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %248, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !11
  %254 = fmul double %247, %253
  %255 = load ptr, ptr %19, align 8, !tbaa !5
  %256 = load i32, ptr %52, align 4, !tbaa !9
  %257 = add nsw i32 %256, 1
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %255, i64 %258
  store double %254, ptr %259, align 8, !tbaa !11
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp eq i32 %261, 1
  br i1 %262, label %263, label %277

263:                                              ; preds = %221
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load i32, ptr %52, align 4, !tbaa !9
  %266 = load i32, ptr %29, align 4, !tbaa !9
  %267 = add nsw i32 %265, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %264, i64 %268
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load i32, ptr %52, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  %273 = load i32, ptr %29, align 4, !tbaa !9
  %274 = add nsw i32 %272, %273
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %270, i64 %275
  call void @zdrot_(ptr noundef @c__1, ptr noundef %269, ptr noundef @c__1, ptr noundef %276, ptr noundef @c__1, ptr noundef %69, ptr noundef %71)
  br label %291

277:                                              ; preds = %221
  %278 = load double, ptr %69, align 8, !tbaa !11
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load i32, ptr %52, align 4, !tbaa !9
  %281 = shl i32 %280, 1
  %282 = sub nsw i32 %281, 1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %279, i64 %283
  store double %278, ptr %284, align 8, !tbaa !11
  %285 = load double, ptr %71, align 8, !tbaa !11
  %286 = load ptr, ptr %26, align 8, !tbaa !5
  %287 = load i32, ptr %52, align 4, !tbaa !9
  %288 = mul nsw i32 %287, 2
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %286, i64 %289
  store double %285, ptr %290, align 8, !tbaa !11
  br label %291

291:                                              ; preds = %277, %263
  br label %292

292:                                              ; preds = %291
  %293 = load i32, ptr %52, align 4, !tbaa !9
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr %52, align 4, !tbaa !9
  br label %217, !llvm.loop !14

295:                                              ; preds = %217
  %296 = load ptr, ptr %18, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp sgt i32 %297, 1
  br i1 %298, label %299, label %353

299:                                              ; preds = %295
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  store i32 %301, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %349, %299
  %303 = load i32, ptr %52, align 4, !tbaa !9
  %304 = load i32, ptr %31, align 4, !tbaa !9
  %305 = icmp sle i32 %303, %304
  br i1 %305, label %306, label %352

306:                                              ; preds = %302
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = sub nsw i32 %308, 1
  store i32 %309, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %345, %306
  %311 = load i32, ptr %53, align 4, !tbaa !9
  %312 = load i32, ptr %32, align 4, !tbaa !9
  %313 = icmp sle i32 %311, %312
  br i1 %313, label %314, label %348

314:                                              ; preds = %310
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load i32, ptr %53, align 4, !tbaa !9
  %317 = shl i32 %316, 1
  %318 = sub nsw i32 %317, 1
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %315, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  store double %321, ptr %69, align 8, !tbaa !11
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = load i32, ptr %53, align 4, !tbaa !9
  %324 = mul nsw i32 %323, 2
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %322, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !11
  store double %327, ptr %71, align 8, !tbaa !11
  %328 = load ptr, ptr %21, align 8, !tbaa !5
  %329 = load i32, ptr %53, align 4, !tbaa !9
  %330 = load i32, ptr %52, align 4, !tbaa !9
  %331 = load i32, ptr %29, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = add nsw i32 %329, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %328, i64 %334
  %336 = load ptr, ptr %21, align 8, !tbaa !5
  %337 = load i32, ptr %53, align 4, !tbaa !9
  %338 = add nsw i32 %337, 1
  %339 = load i32, ptr %52, align 4, !tbaa !9
  %340 = load i32, ptr %29, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %338, %341
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %336, i64 %343
  call void @zdrot_(ptr noundef @c__1, ptr noundef %335, ptr noundef @c__1, ptr noundef %344, ptr noundef @c__1, ptr noundef %69, ptr noundef %71)
  br label %345

345:                                              ; preds = %314
  %346 = load i32, ptr %53, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %53, align 4, !tbaa !9
  br label %310, !llvm.loop !16

348:                                              ; preds = %310
  br label %349

349:                                              ; preds = %348
  %350 = load i32, ptr %52, align 4, !tbaa !9
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %52, align 4, !tbaa !9
  br label %302, !llvm.loop !17

352:                                              ; preds = %302
  br label %353

353:                                              ; preds = %352, %295
  br label %354

354:                                              ; preds = %353, %208
  %355 = load ptr, ptr %17, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = sub nsw i32 %356, 1
  store i32 %357, ptr %78, align 4, !tbaa !9
  %358 = load ptr, ptr %17, align 8, !tbaa !5
  %359 = load ptr, ptr %19, align 8, !tbaa !5
  %360 = getelementptr inbounds double, ptr %359, i64 1
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = getelementptr inbounds double, ptr %361, i64 1
  %363 = call double @dlanst_(ptr noundef @.str.4, ptr noundef %358, ptr noundef %360, ptr noundef %362)
  store double %363, ptr %75, align 8, !tbaa !11
  %364 = load double, ptr %75, align 8, !tbaa !11
  %365 = fcmp oeq double %364, 0.000000e+00
  br i1 %365, label %366, label %374

366:                                              ; preds = %354
  %367 = load ptr, ptr %17, align 8, !tbaa !5
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load ptr, ptr %21, align 8, !tbaa !5
  %370 = load i32, ptr %30, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds %struct.doublecomplex, ptr %369, i64 %371
  %373 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.2, ptr noundef %367, ptr noundef %368, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %372, ptr noundef %373)
  store i32 1, ptr %86, align 4
  br label %2172

374:                                              ; preds = %354
  %375 = load ptr, ptr %17, align 8, !tbaa !5
  %376 = load ptr, ptr %19, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  %378 = load ptr, ptr %17, align 8, !tbaa !5
  %379 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef @c_b10, ptr noundef %375, ptr noundef @c__1, ptr noundef %377, ptr noundef %378, ptr noundef %379)
  %380 = load ptr, ptr %20, align 8, !tbaa !5
  %381 = getelementptr inbounds double, ptr %380, i64 1
  %382 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef @c_b10, ptr noundef %78, ptr noundef @c__1, ptr noundef %381, ptr noundef %78, ptr noundef %382)
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = load ptr, ptr %16, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = icmp sle i32 %384, %386
  br i1 %387, label %388, label %906

388:                                              ; preds = %374
  store i32 1, ptr %50, align 4, !tbaa !9
  %389 = load i32, ptr %50, align 4, !tbaa !9
  %390 = load ptr, ptr %17, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = load ptr, ptr %17, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = mul nsw i32 %391, %393
  %395 = add nsw i32 %389, %394
  store i32 %395, ptr %66, align 4, !tbaa !9
  %396 = load i32, ptr %66, align 4, !tbaa !9
  %397 = load ptr, ptr %17, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = load ptr, ptr %17, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = mul nsw i32 %398, %400
  %402 = add nsw i32 %396, %401
  store i32 %402, ptr %80, align 4, !tbaa !9
  %403 = load i32, ptr %80, align 4, !tbaa !9
  store i32 %403, ptr %64, align 4, !tbaa !9
  %404 = load i32, ptr %64, align 4, !tbaa !9
  %405 = load ptr, ptr %17, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = mul nsw i32 %406, %408
  %410 = add nsw i32 %404, %409
  store i32 %410, ptr %61, align 4, !tbaa !9
  %411 = load i32, ptr %61, align 4, !tbaa !9
  %412 = load ptr, ptr %17, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = mul nsw i32 %413, %415
  %417 = add nsw i32 %411, %416
  store i32 %417, ptr %43, align 4, !tbaa !9
  %418 = load ptr, ptr %17, align 8, !tbaa !5
  %419 = load ptr, ptr %17, align 8, !tbaa !5
  %420 = load ptr, ptr %26, align 8, !tbaa !5
  %421 = load i32, ptr %50, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %420, i64 %422
  %424 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %418, ptr noundef %419, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %423, ptr noundef %424)
  %425 = load ptr, ptr %17, align 8, !tbaa !5
  %426 = load ptr, ptr %17, align 8, !tbaa !5
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = load i32, ptr %66, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %427, i64 %429
  %431 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %425, ptr noundef %426, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %430, ptr noundef %431)
  %432 = load ptr, ptr %17, align 8, !tbaa !5
  %433 = load ptr, ptr %17, align 8, !tbaa !5
  %434 = load ptr, ptr %17, align 8, !tbaa !5
  %435 = load ptr, ptr %19, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = load ptr, ptr %20, align 8, !tbaa !5
  %438 = getelementptr inbounds double, ptr %437, i64 1
  %439 = load ptr, ptr %26, align 8, !tbaa !5
  %440 = load i32, ptr %66, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %439, i64 %441
  %443 = load ptr, ptr %17, align 8, !tbaa !5
  %444 = load ptr, ptr %26, align 8, !tbaa !5
  %445 = load i32, ptr %50, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %444, i64 %446
  %448 = load ptr, ptr %17, align 8, !tbaa !5
  %449 = load ptr, ptr %26, align 8, !tbaa !5
  %450 = load i32, ptr %80, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %449, i64 %451
  %453 = load ptr, ptr %26, align 8, !tbaa !5
  %454 = load i32, ptr %80, align 4, !tbaa !9
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %453, i64 %455
  %457 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %432, ptr noundef %433, ptr noundef %434, ptr noundef @c__0, ptr noundef %436, ptr noundef %438, ptr noundef %442, ptr noundef %443, ptr noundef %447, ptr noundef %448, ptr noundef %452, ptr noundef @c__1, ptr noundef %456, ptr noundef %457)
  %458 = load ptr, ptr %28, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  %460 = icmp ne i32 %459, 0
  br i1 %460, label %461, label %462

461:                                              ; preds = %388
  store i32 1, ptr %86, align 4
  br label %2172

462:                                              ; preds = %388
  %463 = load i32, ptr %43, align 4, !tbaa !9
  %464 = sub nsw i32 %463, 1
  store i32 %464, ptr %53, align 4, !tbaa !9
  %465 = load ptr, ptr %18, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  store i32 %466, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %500, %462
  %468 = load i32, ptr %42, align 4, !tbaa !9
  %469 = load i32, ptr %31, align 4, !tbaa !9
  %470 = icmp sle i32 %468, %469
  br i1 %470, label %471, label %503

471:                                              ; preds = %467
  %472 = load ptr, ptr %17, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  store i32 %473, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %474

474:                                              ; preds = %496, %471
  %475 = load i32, ptr %49, align 4, !tbaa !9
  %476 = load i32, ptr %32, align 4, !tbaa !9
  %477 = icmp sle i32 %475, %476
  br i1 %477, label %478, label %499

478:                                              ; preds = %474
  %479 = load i32, ptr %53, align 4, !tbaa !9
  %480 = add nsw i32 %479, 1
  store i32 %480, ptr %53, align 4, !tbaa !9
  %481 = load i32, ptr %49, align 4, !tbaa !9
  %482 = load i32, ptr %42, align 4, !tbaa !9
  %483 = load i32, ptr %29, align 4, !tbaa !9
  %484 = mul nsw i32 %482, %483
  %485 = add nsw i32 %481, %484
  store i32 %485, ptr %33, align 4, !tbaa !9
  %486 = load ptr, ptr %21, align 8, !tbaa !5
  %487 = load i32, ptr %33, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %486, i64 %488
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %489, i32 0, i32 0
  %491 = load double, ptr %490, align 8, !tbaa !18
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = load i32, ptr %53, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  store double %491, ptr %495, align 8, !tbaa !11
  br label %496

496:                                              ; preds = %478
  %497 = load i32, ptr %49, align 4, !tbaa !9
  %498 = add nsw i32 %497, 1
  store i32 %498, ptr %49, align 4, !tbaa !9
  br label %474, !llvm.loop !20

499:                                              ; preds = %474
  br label %500

500:                                              ; preds = %499
  %501 = load i32, ptr %42, align 4, !tbaa !9
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %42, align 4, !tbaa !9
  br label %467, !llvm.loop !21

503:                                              ; preds = %467
  %504 = load ptr, ptr %17, align 8, !tbaa !5
  %505 = load ptr, ptr %18, align 8, !tbaa !5
  %506 = load ptr, ptr %17, align 8, !tbaa !5
  %507 = load ptr, ptr %26, align 8, !tbaa !5
  %508 = load i32, ptr %50, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load ptr, ptr %17, align 8, !tbaa !5
  %512 = load ptr, ptr %26, align 8, !tbaa !5
  %513 = load i32, ptr %43, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %512, i64 %514
  %516 = load ptr, ptr %17, align 8, !tbaa !5
  %517 = load ptr, ptr %26, align 8, !tbaa !5
  %518 = load i32, ptr %64, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %504, ptr noundef %505, ptr noundef %506, ptr noundef @c_b10, ptr noundef %510, ptr noundef %511, ptr noundef %515, ptr noundef %516, ptr noundef @c_b35, ptr noundef %520, ptr noundef %521)
  %522 = load i32, ptr %43, align 4, !tbaa !9
  %523 = sub nsw i32 %522, 1
  store i32 %523, ptr %53, align 4, !tbaa !9
  %524 = load ptr, ptr %18, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  store i32 %525, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %526

526:                                              ; preds = %559, %503
  %527 = load i32, ptr %42, align 4, !tbaa !9
  %528 = load i32, ptr %31, align 4, !tbaa !9
  %529 = icmp sle i32 %527, %528
  br i1 %529, label %530, label %562

530:                                              ; preds = %526
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  store i32 %532, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %555, %530
  %534 = load i32, ptr %49, align 4, !tbaa !9
  %535 = load i32, ptr %32, align 4, !tbaa !9
  %536 = icmp sle i32 %534, %535
  br i1 %536, label %537, label %558

537:                                              ; preds = %533
  %538 = load i32, ptr %53, align 4, !tbaa !9
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %53, align 4, !tbaa !9
  %540 = load ptr, ptr %21, align 8, !tbaa !5
  %541 = load i32, ptr %49, align 4, !tbaa !9
  %542 = load i32, ptr %42, align 4, !tbaa !9
  %543 = load i32, ptr %29, align 4, !tbaa !9
  %544 = mul nsw i32 %542, %543
  %545 = add nsw i32 %541, %544
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %540, i64 %546
  %548 = call { double, double } @Cd(ptr noundef %547)
  %549 = extractvalue { double, double } %548, 0
  %550 = extractvalue { double, double } %548, 1
  %551 = load ptr, ptr %26, align 8, !tbaa !5
  %552 = load i32, ptr %53, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  store double %550, ptr %554, align 8, !tbaa !11
  br label %555

555:                                              ; preds = %537
  %556 = load i32, ptr %49, align 4, !tbaa !9
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %49, align 4, !tbaa !9
  br label %533, !llvm.loop !22

558:                                              ; preds = %533
  br label %559

559:                                              ; preds = %558
  %560 = load i32, ptr %42, align 4, !tbaa !9
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %42, align 4, !tbaa !9
  br label %526, !llvm.loop !23

562:                                              ; preds = %526
  %563 = load ptr, ptr %17, align 8, !tbaa !5
  %564 = load ptr, ptr %18, align 8, !tbaa !5
  %565 = load ptr, ptr %17, align 8, !tbaa !5
  %566 = load ptr, ptr %26, align 8, !tbaa !5
  %567 = load i32, ptr %50, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %566, i64 %568
  %570 = load ptr, ptr %17, align 8, !tbaa !5
  %571 = load ptr, ptr %26, align 8, !tbaa !5
  %572 = load i32, ptr %43, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load ptr, ptr %17, align 8, !tbaa !5
  %576 = load ptr, ptr %26, align 8, !tbaa !5
  %577 = load i32, ptr %61, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %576, i64 %578
  %580 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %563, ptr noundef %564, ptr noundef %565, ptr noundef @c_b10, ptr noundef %569, ptr noundef %570, ptr noundef %574, ptr noundef %575, ptr noundef @c_b35, ptr noundef %579, ptr noundef %580)
  %581 = load i32, ptr %64, align 4, !tbaa !9
  %582 = sub nsw i32 %581, 1
  store i32 %582, ptr %60, align 4, !tbaa !9
  %583 = load i32, ptr %61, align 4, !tbaa !9
  %584 = sub nsw i32 %583, 1
  store i32 %584, ptr %58, align 4, !tbaa !9
  %585 = load ptr, ptr %18, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  store i32 %586, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %587

587:                                              ; preds = %640, %562
  %588 = load i32, ptr %42, align 4, !tbaa !9
  %589 = load i32, ptr %31, align 4, !tbaa !9
  %590 = icmp sle i32 %588, %589
  br i1 %590, label %591, label %643

591:                                              ; preds = %587
  %592 = load ptr, ptr %17, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  store i32 %593, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %636, %591
  %595 = load i32, ptr %49, align 4, !tbaa !9
  %596 = load i32, ptr %32, align 4, !tbaa !9
  %597 = icmp sle i32 %595, %596
  br i1 %597, label %598, label %639

598:                                              ; preds = %594
  %599 = load i32, ptr %60, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %60, align 4, !tbaa !9
  %601 = load i32, ptr %58, align 4, !tbaa !9
  %602 = add nsw i32 %601, 1
  store i32 %602, ptr %58, align 4, !tbaa !9
  %603 = load i32, ptr %49, align 4, !tbaa !9
  %604 = load i32, ptr %42, align 4, !tbaa !9
  %605 = load i32, ptr %29, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %603, %606
  store i32 %607, ptr %33, align 4, !tbaa !9
  %608 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %608, ptr %34, align 4, !tbaa !9
  %609 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %609, ptr %35, align 4, !tbaa !9
  %610 = load ptr, ptr %26, align 8, !tbaa !5
  %611 = load i32, ptr %34, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %614, ptr %615, align 8, !tbaa !18
  %616 = load ptr, ptr %26, align 8, !tbaa !5
  %617 = load i32, ptr %35, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %616, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %620, ptr %621, align 8, !tbaa !24
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %623 = load double, ptr %622, align 8, !tbaa !18
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i32, ptr %33, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %624, i64 %626
  %628 = getelementptr inbounds %struct.doublecomplex, ptr %627, i32 0, i32 0
  store double %623, ptr %628, align 8, !tbaa !18
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %630 = load double, ptr %629, align 8, !tbaa !24
  %631 = load ptr, ptr %21, align 8, !tbaa !5
  %632 = load i32, ptr %33, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds %struct.doublecomplex, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.doublecomplex, ptr %634, i32 0, i32 1
  store double %630, ptr %635, align 8, !tbaa !24
  br label %636

636:                                              ; preds = %598
  %637 = load i32, ptr %49, align 4, !tbaa !9
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %49, align 4, !tbaa !9
  br label %594, !llvm.loop !25

639:                                              ; preds = %594
  br label %640

640:                                              ; preds = %639
  %641 = load i32, ptr %42, align 4, !tbaa !9
  %642 = add nsw i32 %641, 1
  store i32 %642, ptr %42, align 4, !tbaa !9
  br label %587, !llvm.loop !26

643:                                              ; preds = %587
  %644 = load double, ptr %41, align 8, !tbaa !11
  %645 = load ptr, ptr %19, align 8, !tbaa !5
  %646 = load ptr, ptr %17, align 8, !tbaa !5
  %647 = load ptr, ptr %19, align 8, !tbaa !5
  %648 = getelementptr inbounds double, ptr %647, i64 1
  %649 = call i32 @idamax_(ptr noundef %646, ptr noundef %648, ptr noundef @c__1)
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %645, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  store double %652, ptr %37, align 8, !tbaa !11
  %653 = load double, ptr %37, align 8, !tbaa !11
  %654 = fcmp oge double %653, 0.000000e+00
  br i1 %654, label %655, label %657

655:                                              ; preds = %643
  %656 = load double, ptr %37, align 8, !tbaa !11
  br label %660

657:                                              ; preds = %643
  %658 = load double, ptr %37, align 8, !tbaa !11
  %659 = fneg double %658
  br label %660

660:                                              ; preds = %657, %655
  %661 = phi double [ %656, %655 ], [ %659, %657 ]
  %662 = fmul double %644, %661
  store double %662, ptr %85, align 8, !tbaa !11
  %663 = load ptr, ptr %17, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  store i32 %664, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %704, %660
  %666 = load i32, ptr %52, align 4, !tbaa !9
  %667 = load i32, ptr %31, align 4, !tbaa !9
  %668 = icmp sle i32 %666, %667
  br i1 %668, label %669, label %707

669:                                              ; preds = %665
  %670 = load ptr, ptr %19, align 8, !tbaa !5
  %671 = load i32, ptr %52, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = load double, ptr %85, align 8, !tbaa !11
  %676 = fcmp ole double %674, %675
  br i1 %676, label %677, label %686

677:                                              ; preds = %669
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = load ptr, ptr %21, align 8, !tbaa !5
  %680 = load i32, ptr %52, align 4, !tbaa !9
  %681 = load i32, ptr %29, align 4, !tbaa !9
  %682 = add nsw i32 %680, %681
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %683
  %685 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %678, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %684, ptr noundef %685)
  br label %703

686:                                              ; preds = %669
  %687 = load ptr, ptr %19, align 8, !tbaa !5
  %688 = load i32, ptr %52, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load ptr, ptr %18, align 8, !tbaa !5
  %692 = load ptr, ptr %21, align 8, !tbaa !5
  %693 = load i32, ptr %52, align 4, !tbaa !9
  %694 = load i32, ptr %29, align 4, !tbaa !9
  %695 = add nsw i32 %693, %694
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %696
  %698 = load ptr, ptr %22, align 8, !tbaa !5
  %699 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %690, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %691, ptr noundef %697, ptr noundef %698, ptr noundef %699)
  %700 = load ptr, ptr %24, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = add nsw i32 %701, 1
  store i32 %702, ptr %700, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %686, %677
  br label %704

704:                                              ; preds = %703
  %705 = load i32, ptr %52, align 4, !tbaa !9
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %52, align 4, !tbaa !9
  br label %665, !llvm.loop !27

707:                                              ; preds = %665
  %708 = load i32, ptr %43, align 4, !tbaa !9
  %709 = sub nsw i32 %708, 1
  store i32 %709, ptr %53, align 4, !tbaa !9
  %710 = load ptr, ptr %18, align 8, !tbaa !5
  %711 = load i32, ptr %710, align 4, !tbaa !9
  store i32 %711, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %712

712:                                              ; preds = %745, %707
  %713 = load i32, ptr %42, align 4, !tbaa !9
  %714 = load i32, ptr %31, align 4, !tbaa !9
  %715 = icmp sle i32 %713, %714
  br i1 %715, label %716, label %748

716:                                              ; preds = %712
  %717 = load ptr, ptr %17, align 8, !tbaa !5
  %718 = load i32, ptr %717, align 4, !tbaa !9
  store i32 %718, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %741, %716
  %720 = load i32, ptr %49, align 4, !tbaa !9
  %721 = load i32, ptr %32, align 4, !tbaa !9
  %722 = icmp sle i32 %720, %721
  br i1 %722, label %723, label %744

723:                                              ; preds = %719
  %724 = load i32, ptr %53, align 4, !tbaa !9
  %725 = add nsw i32 %724, 1
  store i32 %725, ptr %53, align 4, !tbaa !9
  %726 = load i32, ptr %49, align 4, !tbaa !9
  %727 = load i32, ptr %42, align 4, !tbaa !9
  %728 = load i32, ptr %29, align 4, !tbaa !9
  %729 = mul nsw i32 %727, %728
  %730 = add nsw i32 %726, %729
  store i32 %730, ptr %33, align 4, !tbaa !9
  %731 = load ptr, ptr %21, align 8, !tbaa !5
  %732 = load i32, ptr %33, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds %struct.doublecomplex, ptr %731, i64 %733
  %735 = getelementptr inbounds %struct.doublecomplex, ptr %734, i32 0, i32 0
  %736 = load double, ptr %735, align 8, !tbaa !18
  %737 = load ptr, ptr %26, align 8, !tbaa !5
  %738 = load i32, ptr %53, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  store double %736, ptr %740, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %723
  %742 = load i32, ptr %49, align 4, !tbaa !9
  %743 = add nsw i32 %742, 1
  store i32 %743, ptr %49, align 4, !tbaa !9
  br label %719, !llvm.loop !28

744:                                              ; preds = %719
  br label %745

745:                                              ; preds = %744
  %746 = load i32, ptr %42, align 4, !tbaa !9
  %747 = add nsw i32 %746, 1
  store i32 %747, ptr %42, align 4, !tbaa !9
  br label %712, !llvm.loop !29

748:                                              ; preds = %712
  %749 = load ptr, ptr %17, align 8, !tbaa !5
  %750 = load ptr, ptr %18, align 8, !tbaa !5
  %751 = load ptr, ptr %17, align 8, !tbaa !5
  %752 = load ptr, ptr %26, align 8, !tbaa !5
  %753 = load i32, ptr %66, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %752, i64 %754
  %756 = load ptr, ptr %17, align 8, !tbaa !5
  %757 = load ptr, ptr %26, align 8, !tbaa !5
  %758 = load i32, ptr %43, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds double, ptr %757, i64 %759
  %761 = load ptr, ptr %17, align 8, !tbaa !5
  %762 = load ptr, ptr %26, align 8, !tbaa !5
  %763 = load i32, ptr %64, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %749, ptr noundef %750, ptr noundef %751, ptr noundef @c_b10, ptr noundef %755, ptr noundef %756, ptr noundef %760, ptr noundef %761, ptr noundef @c_b35, ptr noundef %765, ptr noundef %766)
  %767 = load i32, ptr %43, align 4, !tbaa !9
  %768 = sub nsw i32 %767, 1
  store i32 %768, ptr %53, align 4, !tbaa !9
  %769 = load ptr, ptr %18, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  store i32 %770, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %804, %748
  %772 = load i32, ptr %42, align 4, !tbaa !9
  %773 = load i32, ptr %31, align 4, !tbaa !9
  %774 = icmp sle i32 %772, %773
  br i1 %774, label %775, label %807

775:                                              ; preds = %771
  %776 = load ptr, ptr %17, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  store i32 %777, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %778

778:                                              ; preds = %800, %775
  %779 = load i32, ptr %49, align 4, !tbaa !9
  %780 = load i32, ptr %32, align 4, !tbaa !9
  %781 = icmp sle i32 %779, %780
  br i1 %781, label %782, label %803

782:                                              ; preds = %778
  %783 = load i32, ptr %53, align 4, !tbaa !9
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr %53, align 4, !tbaa !9
  %785 = load ptr, ptr %21, align 8, !tbaa !5
  %786 = load i32, ptr %49, align 4, !tbaa !9
  %787 = load i32, ptr %42, align 4, !tbaa !9
  %788 = load i32, ptr %29, align 4, !tbaa !9
  %789 = mul nsw i32 %787, %788
  %790 = add nsw i32 %786, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %785, i64 %791
  %793 = call { double, double } @Cd(ptr noundef %792)
  %794 = extractvalue { double, double } %793, 0
  %795 = extractvalue { double, double } %793, 1
  %796 = load ptr, ptr %26, align 8, !tbaa !5
  %797 = load i32, ptr %53, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %796, i64 %798
  store double %795, ptr %799, align 8, !tbaa !11
  br label %800

800:                                              ; preds = %782
  %801 = load i32, ptr %49, align 4, !tbaa !9
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %49, align 4, !tbaa !9
  br label %778, !llvm.loop !30

803:                                              ; preds = %778
  br label %804

804:                                              ; preds = %803
  %805 = load i32, ptr %42, align 4, !tbaa !9
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %42, align 4, !tbaa !9
  br label %771, !llvm.loop !31

807:                                              ; preds = %771
  %808 = load ptr, ptr %17, align 8, !tbaa !5
  %809 = load ptr, ptr %18, align 8, !tbaa !5
  %810 = load ptr, ptr %17, align 8, !tbaa !5
  %811 = load ptr, ptr %26, align 8, !tbaa !5
  %812 = load i32, ptr %66, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %811, i64 %813
  %815 = load ptr, ptr %17, align 8, !tbaa !5
  %816 = load ptr, ptr %26, align 8, !tbaa !5
  %817 = load i32, ptr %43, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %816, i64 %818
  %820 = load ptr, ptr %17, align 8, !tbaa !5
  %821 = load ptr, ptr %26, align 8, !tbaa !5
  %822 = load i32, ptr %61, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %821, i64 %823
  %825 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %808, ptr noundef %809, ptr noundef %810, ptr noundef @c_b10, ptr noundef %814, ptr noundef %815, ptr noundef %819, ptr noundef %820, ptr noundef @c_b35, ptr noundef %824, ptr noundef %825)
  %826 = load i32, ptr %64, align 4, !tbaa !9
  %827 = sub nsw i32 %826, 1
  store i32 %827, ptr %60, align 4, !tbaa !9
  %828 = load i32, ptr %61, align 4, !tbaa !9
  %829 = sub nsw i32 %828, 1
  store i32 %829, ptr %58, align 4, !tbaa !9
  %830 = load ptr, ptr %18, align 8, !tbaa !5
  %831 = load i32, ptr %830, align 4, !tbaa !9
  store i32 %831, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %885, %807
  %833 = load i32, ptr %42, align 4, !tbaa !9
  %834 = load i32, ptr %31, align 4, !tbaa !9
  %835 = icmp sle i32 %833, %834
  br i1 %835, label %836, label %888

836:                                              ; preds = %832
  %837 = load ptr, ptr %17, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  store i32 %838, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %839

839:                                              ; preds = %881, %836
  %840 = load i32, ptr %49, align 4, !tbaa !9
  %841 = load i32, ptr %32, align 4, !tbaa !9
  %842 = icmp sle i32 %840, %841
  br i1 %842, label %843, label %884

843:                                              ; preds = %839
  %844 = load i32, ptr %60, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %60, align 4, !tbaa !9
  %846 = load i32, ptr %58, align 4, !tbaa !9
  %847 = add nsw i32 %846, 1
  store i32 %847, ptr %58, align 4, !tbaa !9
  %848 = load i32, ptr %49, align 4, !tbaa !9
  %849 = load i32, ptr %42, align 4, !tbaa !9
  %850 = load i32, ptr %29, align 4, !tbaa !9
  %851 = mul nsw i32 %849, %850
  %852 = add nsw i32 %848, %851
  store i32 %852, ptr %33, align 4, !tbaa !9
  %853 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %853, ptr %34, align 4, !tbaa !9
  %854 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %854, ptr %35, align 4, !tbaa !9
  %855 = load ptr, ptr %26, align 8, !tbaa !5
  %856 = load i32, ptr %34, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %855, i64 %857
  %859 = load double, ptr %858, align 8, !tbaa !11
  %860 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %859, ptr %860, align 8, !tbaa !18
  %861 = load ptr, ptr %26, align 8, !tbaa !5
  %862 = load i32, ptr %35, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !11
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %865, ptr %866, align 8, !tbaa !24
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %868 = load double, ptr %867, align 8, !tbaa !18
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = load i32, ptr %33, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %871
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %872, i32 0, i32 0
  store double %868, ptr %873, align 8, !tbaa !18
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %875 = load double, ptr %874, align 8, !tbaa !24
  %876 = load ptr, ptr %21, align 8, !tbaa !5
  %877 = load i32, ptr %33, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %878
  %880 = getelementptr inbounds %struct.doublecomplex, ptr %879, i32 0, i32 1
  store double %875, ptr %880, align 8, !tbaa !24
  br label %881

881:                                              ; preds = %843
  %882 = load i32, ptr %49, align 4, !tbaa !9
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %49, align 4, !tbaa !9
  br label %839, !llvm.loop !32

884:                                              ; preds = %839
  br label %885

885:                                              ; preds = %884
  %886 = load i32, ptr %42, align 4, !tbaa !9
  %887 = add nsw i32 %886, 1
  store i32 %887, ptr %42, align 4, !tbaa !9
  br label %832, !llvm.loop !33

888:                                              ; preds = %832
  %889 = load ptr, ptr %17, align 8, !tbaa !5
  %890 = load ptr, ptr %19, align 8, !tbaa !5
  %891 = getelementptr inbounds double, ptr %890, i64 1
  %892 = load ptr, ptr %17, align 8, !tbaa !5
  %893 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %75, ptr noundef %889, ptr noundef @c__1, ptr noundef %891, ptr noundef %892, ptr noundef %893)
  %894 = load ptr, ptr %17, align 8, !tbaa !5
  %895 = load ptr, ptr %19, align 8, !tbaa !5
  %896 = getelementptr inbounds double, ptr %895, i64 1
  %897 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasrt_(ptr noundef @.str.8, ptr noundef %894, ptr noundef %896, ptr noundef %897)
  %898 = load ptr, ptr %17, align 8, !tbaa !5
  %899 = load ptr, ptr %18, align 8, !tbaa !5
  %900 = load ptr, ptr %21, align 8, !tbaa !5
  %901 = load i32, ptr %30, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %900, i64 %902
  %904 = load ptr, ptr %22, align 8, !tbaa !5
  %905 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef @c_b10, ptr noundef %898, ptr noundef %899, ptr noundef %903, ptr noundef %904, ptr noundef %905)
  store i32 1, ptr %86, align 4
  br label %2172

906:                                              ; preds = %374
  %907 = load ptr, ptr %17, align 8, !tbaa !5
  %908 = load i32, ptr %907, align 4, !tbaa !9
  %909 = sitofp i32 %908 to double
  %910 = load ptr, ptr %16, align 8, !tbaa !5
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = add nsw i32 %911, 1
  %913 = sitofp i32 %912 to double
  %914 = fdiv double %909, %913
  %915 = call double @log(double noundef %914) #5
  %916 = call double @log(double noundef 2.000000e+00) #5
  %917 = fdiv double %915, %916
  %918 = fptosi double %917 to i32
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %46, align 4, !tbaa !9
  %920 = load ptr, ptr %16, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr %81, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %923 = load ptr, ptr %16, align 8, !tbaa !5
  %924 = load i32, ptr %923, align 4, !tbaa !9
  %925 = load ptr, ptr %17, align 8, !tbaa !5
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = mul nsw i32 %924, %926
  %928 = add nsw i32 %927, 1
  store i32 %928, ptr %73, align 4, !tbaa !9
  %929 = load i32, ptr %73, align 4, !tbaa !9
  %930 = load i32, ptr %81, align 4, !tbaa !9
  %931 = load ptr, ptr %17, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = mul nsw i32 %930, %932
  %934 = add nsw i32 %929, %933
  store i32 %934, ptr %39, align 4, !tbaa !9
  %935 = load i32, ptr %39, align 4, !tbaa !9
  %936 = load i32, ptr %46, align 4, !tbaa !9
  %937 = load ptr, ptr %17, align 8, !tbaa !5
  %938 = load i32, ptr %937, align 4, !tbaa !9
  %939 = mul nsw i32 %936, %938
  %940 = add nsw i32 %935, %939
  store i32 %940, ptr %40, align 4, !tbaa !9
  %941 = load i32, ptr %40, align 4, !tbaa !9
  %942 = load i32, ptr %46, align 4, !tbaa !9
  %943 = load ptr, ptr %17, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  %945 = mul nsw i32 %942, %944
  %946 = shl i32 %945, 1
  %947 = add nsw i32 %941, %946
  store i32 %947, ptr %59, align 4, !tbaa !9
  %948 = load i32, ptr %59, align 4, !tbaa !9
  %949 = load i32, ptr %46, align 4, !tbaa !9
  %950 = load ptr, ptr %17, align 8, !tbaa !5
  %951 = load i32, ptr %950, align 4, !tbaa !9
  %952 = mul nsw i32 %949, %951
  %953 = add nsw i32 %948, %952
  store i32 %953, ptr %51, align 4, !tbaa !9
  %954 = load i32, ptr %51, align 4, !tbaa !9
  %955 = load ptr, ptr %17, align 8, !tbaa !5
  %956 = load i32, ptr %955, align 4, !tbaa !9
  %957 = add nsw i32 %954, %956
  store i32 %957, ptr %56, align 4, !tbaa !9
  %958 = load i32, ptr %56, align 4, !tbaa !9
  %959 = load ptr, ptr %17, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = add nsw i32 %958, %960
  store i32 %961, ptr %62, align 4, !tbaa !9
  %962 = load i32, ptr %62, align 4, !tbaa !9
  %963 = load i32, ptr %46, align 4, !tbaa !9
  %964 = shl i32 %963, 1
  %965 = load ptr, ptr %17, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  %967 = mul nsw i32 %964, %966
  %968 = add nsw i32 %962, %967
  store i32 %968, ptr %76, align 4, !tbaa !9
  %969 = load i32, ptr %76, align 4, !tbaa !9
  %970 = load i32, ptr %46, align 4, !tbaa !9
  %971 = shl i32 %970, 1
  %972 = load ptr, ptr %17, align 8, !tbaa !5
  %973 = load i32, ptr %972, align 4, !tbaa !9
  %974 = mul nsw i32 %971, %973
  %975 = add nsw i32 %969, %974
  store i32 %975, ptr %79, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  %976 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %976, ptr %64, align 4, !tbaa !9
  %977 = load i32, ptr %64, align 4, !tbaa !9
  %978 = load ptr, ptr %16, align 8, !tbaa !5
  %979 = load i32, ptr %978, align 4, !tbaa !9
  %980 = load ptr, ptr %18, align 8, !tbaa !5
  %981 = load i32, ptr %980, align 4, !tbaa !9
  %982 = mul nsw i32 %979, %981
  %983 = add nsw i32 %977, %982
  store i32 %983, ptr %61, align 4, !tbaa !9
  %984 = load i32, ptr %61, align 4, !tbaa !9
  %985 = load ptr, ptr %16, align 8, !tbaa !5
  %986 = load i32, ptr %985, align 4, !tbaa !9
  %987 = load ptr, ptr %18, align 8, !tbaa !5
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = mul nsw i32 %986, %988
  %990 = add nsw i32 %984, %989
  store i32 %990, ptr %43, align 4, !tbaa !9
  %991 = load ptr, ptr %17, align 8, !tbaa !5
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = add nsw i32 %992, 1
  store i32 %993, ptr %63, align 4, !tbaa !9
  %994 = load i32, ptr %63, align 4, !tbaa !9
  %995 = load ptr, ptr %17, align 8, !tbaa !5
  %996 = load i32, ptr %995, align 4, !tbaa !9
  %997 = add nsw i32 %994, %996
  store i32 %997, ptr %54, align 4, !tbaa !9
  %998 = load i32, ptr %54, align 4, !tbaa !9
  %999 = load ptr, ptr %17, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = add nsw i32 %998, %1000
  store i32 %1001, ptr %77, align 4, !tbaa !9
  %1002 = load i32, ptr %77, align 4, !tbaa !9
  %1003 = load ptr, ptr %17, align 8, !tbaa !5
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = add nsw i32 %1002, %1004
  store i32 %1005, ptr %44, align 4, !tbaa !9
  %1006 = load i32, ptr %44, align 4, !tbaa !9
  %1007 = load i32, ptr %46, align 4, !tbaa !9
  %1008 = load ptr, ptr %17, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = mul nsw i32 %1007, %1009
  %1011 = add nsw i32 %1006, %1010
  store i32 %1011, ptr %74, align 4, !tbaa !9
  %1012 = load i32, ptr %74, align 4, !tbaa !9
  %1013 = load i32, ptr %46, align 4, !tbaa !9
  %1014 = load ptr, ptr %17, align 8, !tbaa !5
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = mul nsw i32 %1013, %1015
  %1017 = shl i32 %1016, 1
  %1018 = add nsw i32 %1012, %1017
  store i32 %1018, ptr %84, align 4, !tbaa !9
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  %1019 = load ptr, ptr %17, align 8, !tbaa !5
  %1020 = load i32, ptr %1019, align 4, !tbaa !9
  store i32 %1020, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1021

1021:                                             ; preds = %1077, %906
  %1022 = load i32, ptr %52, align 4, !tbaa !9
  %1023 = load i32, ptr %31, align 4, !tbaa !9
  %1024 = icmp sle i32 %1022, %1023
  br i1 %1024, label %1025, label %1080

1025:                                             ; preds = %1021
  %1026 = load ptr, ptr %19, align 8, !tbaa !5
  %1027 = load i32, ptr %52, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1026, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  store double %1030, ptr %37, align 8, !tbaa !11
  %1031 = load double, ptr %37, align 8, !tbaa !11
  %1032 = fcmp oge double %1031, 0.000000e+00
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %1025
  %1034 = load double, ptr %37, align 8, !tbaa !11
  br label %1038

1035:                                             ; preds = %1025
  %1036 = load double, ptr %37, align 8, !tbaa !11
  %1037 = fneg double %1036
  br label %1038

1038:                                             ; preds = %1035, %1033
  %1039 = phi double [ %1034, %1033 ], [ %1037, %1035 ]
  %1040 = load double, ptr %83, align 8, !tbaa !11
  %1041 = fcmp olt double %1039, %1040
  br i1 %1041, label %1042, label %1076

1042:                                             ; preds = %1038
  %1043 = load ptr, ptr %19, align 8, !tbaa !5
  %1044 = load i32, ptr %52, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1043, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  %1048 = fcmp oge double %1047, 0.000000e+00
  br i1 %1048, label %1049, label %1059

1049:                                             ; preds = %1042
  %1050 = load double, ptr %83, align 8, !tbaa !11
  %1051 = fcmp oge double %1050, 0.000000e+00
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1049
  %1053 = load double, ptr %83, align 8, !tbaa !11
  br label %1057

1054:                                             ; preds = %1049
  %1055 = load double, ptr %83, align 8, !tbaa !11
  %1056 = fneg double %1055
  br label %1057

1057:                                             ; preds = %1054, %1052
  %1058 = phi double [ %1053, %1052 ], [ %1056, %1054 ]
  br label %1070

1059:                                             ; preds = %1042
  %1060 = load double, ptr %83, align 8, !tbaa !11
  %1061 = fcmp oge double %1060, 0.000000e+00
  br i1 %1061, label %1062, label %1064

1062:                                             ; preds = %1059
  %1063 = load double, ptr %83, align 8, !tbaa !11
  br label %1067

1064:                                             ; preds = %1059
  %1065 = load double, ptr %83, align 8, !tbaa !11
  %1066 = fneg double %1065
  br label %1067

1067:                                             ; preds = %1064, %1062
  %1068 = phi double [ %1063, %1062 ], [ %1066, %1064 ]
  %1069 = fneg double %1068
  br label %1070

1070:                                             ; preds = %1067, %1057
  %1071 = phi double [ %1058, %1057 ], [ %1069, %1067 ]
  %1072 = load ptr, ptr %19, align 8, !tbaa !5
  %1073 = load i32, ptr %52, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1072, i64 %1074
  store double %1071, ptr %1075, align 8, !tbaa !11
  br label %1076

1076:                                             ; preds = %1070, %1038
  br label %1077

1077:                                             ; preds = %1076
  %1078 = load i32, ptr %52, align 4, !tbaa !9
  %1079 = add nsw i32 %1078, 1
  store i32 %1079, ptr %52, align 4, !tbaa !9
  br label %1021, !llvm.loop !34

1080:                                             ; preds = %1021
  %1081 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1081, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1082

1082:                                             ; preds = %1705, %1080
  %1083 = load i32, ptr %52, align 4, !tbaa !9
  %1084 = load i32, ptr %31, align 4, !tbaa !9
  %1085 = icmp sle i32 %1083, %1084
  br i1 %1085, label %1086, label %1708

1086:                                             ; preds = %1082
  %1087 = load ptr, ptr %20, align 8, !tbaa !5
  %1088 = load i32, ptr %52, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1087, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  store double %1091, ptr %37, align 8, !tbaa !11
  %1092 = load double, ptr %37, align 8, !tbaa !11
  %1093 = fcmp oge double %1092, 0.000000e+00
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1086
  %1095 = load double, ptr %37, align 8, !tbaa !11
  br label %1099

1096:                                             ; preds = %1086
  %1097 = load double, ptr %37, align 8, !tbaa !11
  %1098 = fneg double %1097
  br label %1099

1099:                                             ; preds = %1096, %1094
  %1100 = phi double [ %1095, %1094 ], [ %1098, %1096 ]
  %1101 = load double, ptr %83, align 8, !tbaa !11
  %1102 = fcmp olt double %1100, %1101
  br i1 %1102, label %1107, label %1103

1103:                                             ; preds = %1099
  %1104 = load i32, ptr %52, align 4, !tbaa !9
  %1105 = load i32, ptr %78, align 4, !tbaa !9
  %1106 = icmp eq i32 %1104, %1105
  br i1 %1106, label %1107, label %1704

1107:                                             ; preds = %1103, %1099
  %1108 = load i32, ptr %45, align 4, !tbaa !9
  %1109 = add nsw i32 %1108, 1
  store i32 %1109, ptr %45, align 4, !tbaa !9
  %1110 = load i32, ptr %72, align 4, !tbaa !9
  %1111 = load ptr, ptr %27, align 8, !tbaa !5
  %1112 = load i32, ptr %45, align 4, !tbaa !9
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds i32, ptr %1111, i64 %1113
  store i32 %1110, ptr %1114, align 4, !tbaa !9
  %1115 = load i32, ptr %52, align 4, !tbaa !9
  %1116 = load i32, ptr %78, align 4, !tbaa !9
  %1117 = icmp slt i32 %1115, %1116
  br i1 %1117, label %1118, label %1131

1118:                                             ; preds = %1107
  %1119 = load i32, ptr %52, align 4, !tbaa !9
  %1120 = load i32, ptr %72, align 4, !tbaa !9
  %1121 = sub nsw i32 %1119, %1120
  %1122 = add nsw i32 %1121, 1
  store i32 %1122, ptr %65, align 4, !tbaa !9
  %1123 = load i32, ptr %65, align 4, !tbaa !9
  %1124 = load ptr, ptr %27, align 8, !tbaa !5
  %1125 = load i32, ptr %63, align 4, !tbaa !9
  %1126 = load i32, ptr %45, align 4, !tbaa !9
  %1127 = add nsw i32 %1125, %1126
  %1128 = sub nsw i32 %1127, 1
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds i32, ptr %1124, i64 %1129
  store i32 %1123, ptr %1130, align 4, !tbaa !9
  br label %1207

1131:                                             ; preds = %1107
  %1132 = load ptr, ptr %20, align 8, !tbaa !5
  %1133 = load i32, ptr %52, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1132, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  store double %1136, ptr %37, align 8, !tbaa !11
  %1137 = load double, ptr %37, align 8, !tbaa !11
  %1138 = fcmp oge double %1137, 0.000000e+00
  br i1 %1138, label %1139, label %1141

1139:                                             ; preds = %1131
  %1140 = load double, ptr %37, align 8, !tbaa !11
  br label %1144

1141:                                             ; preds = %1131
  %1142 = load double, ptr %37, align 8, !tbaa !11
  %1143 = fneg double %1142
  br label %1144

1144:                                             ; preds = %1141, %1139
  %1145 = phi double [ %1140, %1139 ], [ %1143, %1141 ]
  %1146 = load double, ptr %83, align 8, !tbaa !11
  %1147 = fcmp oge double %1145, %1146
  br i1 %1147, label %1148, label %1162

1148:                                             ; preds = %1144
  %1149 = load ptr, ptr %17, align 8, !tbaa !5
  %1150 = load i32, ptr %1149, align 4, !tbaa !9
  %1151 = load i32, ptr %72, align 4, !tbaa !9
  %1152 = sub nsw i32 %1150, %1151
  %1153 = add nsw i32 %1152, 1
  store i32 %1153, ptr %65, align 4, !tbaa !9
  %1154 = load i32, ptr %65, align 4, !tbaa !9
  %1155 = load ptr, ptr %27, align 8, !tbaa !5
  %1156 = load i32, ptr %63, align 4, !tbaa !9
  %1157 = load i32, ptr %45, align 4, !tbaa !9
  %1158 = add nsw i32 %1156, %1157
  %1159 = sub nsw i32 %1158, 1
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i32, ptr %1155, i64 %1160
  store i32 %1154, ptr %1161, align 4, !tbaa !9
  br label %1206

1162:                                             ; preds = %1144
  %1163 = load i32, ptr %52, align 4, !tbaa !9
  %1164 = load i32, ptr %72, align 4, !tbaa !9
  %1165 = sub nsw i32 %1163, %1164
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %65, align 4, !tbaa !9
  %1167 = load i32, ptr %65, align 4, !tbaa !9
  %1168 = load ptr, ptr %27, align 8, !tbaa !5
  %1169 = load i32, ptr %63, align 4, !tbaa !9
  %1170 = load i32, ptr %45, align 4, !tbaa !9
  %1171 = add nsw i32 %1169, %1170
  %1172 = sub nsw i32 %1171, 1
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i32, ptr %1168, i64 %1173
  store i32 %1167, ptr %1174, align 4, !tbaa !9
  %1175 = load i32, ptr %45, align 4, !tbaa !9
  %1176 = add nsw i32 %1175, 1
  store i32 %1176, ptr %45, align 4, !tbaa !9
  %1177 = load ptr, ptr %17, align 8, !tbaa !5
  %1178 = load i32, ptr %1177, align 4, !tbaa !9
  %1179 = load ptr, ptr %27, align 8, !tbaa !5
  %1180 = load i32, ptr %45, align 4, !tbaa !9
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds i32, ptr %1179, i64 %1181
  store i32 %1178, ptr %1182, align 4, !tbaa !9
  %1183 = load ptr, ptr %27, align 8, !tbaa !5
  %1184 = load i32, ptr %63, align 4, !tbaa !9
  %1185 = load i32, ptr %45, align 4, !tbaa !9
  %1186 = add nsw i32 %1184, %1185
  %1187 = sub nsw i32 %1186, 1
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds i32, ptr %1183, i64 %1188
  store i32 1, ptr %1189, align 4, !tbaa !9
  %1190 = load ptr, ptr %18, align 8, !tbaa !5
  %1191 = load ptr, ptr %21, align 8, !tbaa !5
  %1192 = load ptr, ptr %17, align 8, !tbaa !5
  %1193 = load i32, ptr %1192, align 4, !tbaa !9
  %1194 = load i32, ptr %29, align 4, !tbaa !9
  %1195 = add nsw i32 %1193, %1194
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i64 %1196
  %1198 = load ptr, ptr %22, align 8, !tbaa !5
  %1199 = load ptr, ptr %25, align 8, !tbaa !5
  %1200 = load i32, ptr %70, align 4, !tbaa !9
  %1201 = load i32, ptr %78, align 4, !tbaa !9
  %1202 = add nsw i32 %1200, %1201
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i64 %1203
  %1205 = load ptr, ptr %17, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %1190, ptr noundef %1197, ptr noundef %1198, ptr noundef %1204, ptr noundef %1205)
  br label %1206

1206:                                             ; preds = %1162, %1148
  br label %1207

1207:                                             ; preds = %1206, %1118
  %1208 = load i32, ptr %72, align 4, !tbaa !9
  %1209 = sub nsw i32 %1208, 1
  store i32 %1209, ptr %82, align 4, !tbaa !9
  %1210 = load i32, ptr %65, align 4, !tbaa !9
  %1211 = icmp eq i32 %1210, 1
  br i1 %1211, label %1212, label %1228

1212:                                             ; preds = %1207
  %1213 = load ptr, ptr %18, align 8, !tbaa !5
  %1214 = load ptr, ptr %21, align 8, !tbaa !5
  %1215 = load i32, ptr %72, align 4, !tbaa !9
  %1216 = load i32, ptr %29, align 4, !tbaa !9
  %1217 = add nsw i32 %1215, %1216
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i64 %1218
  %1220 = load ptr, ptr %22, align 8, !tbaa !5
  %1221 = load ptr, ptr %25, align 8, !tbaa !5
  %1222 = load i32, ptr %70, align 4, !tbaa !9
  %1223 = load i32, ptr %82, align 4, !tbaa !9
  %1224 = add nsw i32 %1222, %1223
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1221, i64 %1225
  %1227 = load ptr, ptr %17, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %1213, ptr noundef %1219, ptr noundef %1220, ptr noundef %1226, ptr noundef %1227)
  br label %1701

1228:                                             ; preds = %1207
  %1229 = load i32, ptr %65, align 4, !tbaa !9
  %1230 = load ptr, ptr %16, align 8, !tbaa !5
  %1231 = load i32, ptr %1230, align 4, !tbaa !9
  %1232 = icmp sle i32 %1229, %1231
  br i1 %1232, label %1233, label %1485

1233:                                             ; preds = %1228
  %1234 = load ptr, ptr %26, align 8, !tbaa !5
  %1235 = load i32, ptr %73, align 4, !tbaa !9
  %1236 = load i32, ptr %82, align 4, !tbaa !9
  %1237 = add nsw i32 %1235, %1236
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds double, ptr %1234, i64 %1238
  %1240 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %65, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1239, ptr noundef %1240)
  %1241 = load ptr, ptr %26, align 8, !tbaa !5
  %1242 = load i32, ptr %57, align 4, !tbaa !9
  %1243 = load i32, ptr %82, align 4, !tbaa !9
  %1244 = add nsw i32 %1242, %1243
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1241, i64 %1245
  %1247 = load ptr, ptr %17, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %65, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1246, ptr noundef %1247)
  %1248 = load ptr, ptr %19, align 8, !tbaa !5
  %1249 = load i32, ptr %72, align 4, !tbaa !9
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds double, ptr %1248, i64 %1250
  %1252 = load ptr, ptr %20, align 8, !tbaa !5
  %1253 = load i32, ptr %72, align 4, !tbaa !9
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1252, i64 %1254
  %1256 = load ptr, ptr %26, align 8, !tbaa !5
  %1257 = load i32, ptr %73, align 4, !tbaa !9
  %1258 = load i32, ptr %82, align 4, !tbaa !9
  %1259 = add nsw i32 %1257, %1258
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds double, ptr %1256, i64 %1260
  %1262 = load ptr, ptr %17, align 8, !tbaa !5
  %1263 = load ptr, ptr %26, align 8, !tbaa !5
  %1264 = load i32, ptr %57, align 4, !tbaa !9
  %1265 = load i32, ptr %82, align 4, !tbaa !9
  %1266 = add nsw i32 %1264, %1265
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds double, ptr %1263, i64 %1267
  %1269 = load ptr, ptr %17, align 8, !tbaa !5
  %1270 = load ptr, ptr %26, align 8, !tbaa !5
  %1271 = load i32, ptr %79, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1270, i64 %1272
  %1274 = load ptr, ptr %26, align 8, !tbaa !5
  %1275 = load i32, ptr %79, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds double, ptr %1274, i64 %1276
  %1278 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %65, ptr noundef %65, ptr noundef %65, ptr noundef @c__0, ptr noundef %1251, ptr noundef %1255, ptr noundef %1261, ptr noundef %1262, ptr noundef %1268, ptr noundef %1269, ptr noundef %1273, ptr noundef @c__1, ptr noundef %1277, ptr noundef %1278)
  %1279 = load ptr, ptr %28, align 8, !tbaa !5
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  %1281 = icmp ne i32 %1280, 0
  br i1 %1281, label %1282, label %1283

1282:                                             ; preds = %1233
  store i32 1, ptr %86, align 4
  br label %2172

1283:                                             ; preds = %1233
  %1284 = load i32, ptr %43, align 4, !tbaa !9
  %1285 = sub nsw i32 %1284, 1
  store i32 %1285, ptr %53, align 4, !tbaa !9
  %1286 = load ptr, ptr %18, align 8, !tbaa !5
  %1287 = load i32, ptr %1286, align 4, !tbaa !9
  store i32 %1287, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1288

1288:                                             ; preds = %1324, %1283
  %1289 = load i32, ptr %42, align 4, !tbaa !9
  %1290 = load i32, ptr %32, align 4, !tbaa !9
  %1291 = icmp sle i32 %1289, %1290
  br i1 %1291, label %1292, label %1327

1292:                                             ; preds = %1288
  %1293 = load i32, ptr %72, align 4, !tbaa !9
  %1294 = load i32, ptr %65, align 4, !tbaa !9
  %1295 = add nsw i32 %1293, %1294
  %1296 = sub nsw i32 %1295, 1
  store i32 %1296, ptr %33, align 4, !tbaa !9
  %1297 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1297, ptr %49, align 4, !tbaa !9
  br label %1298

1298:                                             ; preds = %1320, %1292
  %1299 = load i32, ptr %49, align 4, !tbaa !9
  %1300 = load i32, ptr %33, align 4, !tbaa !9
  %1301 = icmp sle i32 %1299, %1300
  br i1 %1301, label %1302, label %1323

1302:                                             ; preds = %1298
  %1303 = load i32, ptr %53, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, 1
  store i32 %1304, ptr %53, align 4, !tbaa !9
  %1305 = load i32, ptr %49, align 4, !tbaa !9
  %1306 = load i32, ptr %42, align 4, !tbaa !9
  %1307 = load i32, ptr %29, align 4, !tbaa !9
  %1308 = mul nsw i32 %1306, %1307
  %1309 = add nsw i32 %1305, %1308
  store i32 %1309, ptr %34, align 4, !tbaa !9
  %1310 = load ptr, ptr %21, align 8, !tbaa !5
  %1311 = load i32, ptr %34, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %1310, i64 %1312
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %1313, i32 0, i32 0
  %1315 = load double, ptr %1314, align 8, !tbaa !18
  %1316 = load ptr, ptr %26, align 8, !tbaa !5
  %1317 = load i32, ptr %53, align 4, !tbaa !9
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds double, ptr %1316, i64 %1318
  store double %1315, ptr %1319, align 8, !tbaa !11
  br label %1320

1320:                                             ; preds = %1302
  %1321 = load i32, ptr %49, align 4, !tbaa !9
  %1322 = add nsw i32 %1321, 1
  store i32 %1322, ptr %49, align 4, !tbaa !9
  br label %1298, !llvm.loop !35

1323:                                             ; preds = %1298
  br label %1324

1324:                                             ; preds = %1323
  %1325 = load i32, ptr %42, align 4, !tbaa !9
  %1326 = add nsw i32 %1325, 1
  store i32 %1326, ptr %42, align 4, !tbaa !9
  br label %1288, !llvm.loop !36

1327:                                             ; preds = %1288
  %1328 = load ptr, ptr %18, align 8, !tbaa !5
  %1329 = load ptr, ptr %26, align 8, !tbaa !5
  %1330 = load i32, ptr %57, align 4, !tbaa !9
  %1331 = load i32, ptr %82, align 4, !tbaa !9
  %1332 = add nsw i32 %1330, %1331
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds double, ptr %1329, i64 %1333
  %1335 = load ptr, ptr %17, align 8, !tbaa !5
  %1336 = load ptr, ptr %26, align 8, !tbaa !5
  %1337 = load i32, ptr %43, align 4, !tbaa !9
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds double, ptr %1336, i64 %1338
  %1340 = load ptr, ptr %26, align 8, !tbaa !5
  %1341 = load i32, ptr %64, align 4, !tbaa !9
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1340, i64 %1342
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %65, ptr noundef %1328, ptr noundef %65, ptr noundef @c_b10, ptr noundef %1334, ptr noundef %1335, ptr noundef %1339, ptr noundef %65, ptr noundef @c_b35, ptr noundef %1343, ptr noundef %65)
  %1344 = load i32, ptr %43, align 4, !tbaa !9
  %1345 = sub nsw i32 %1344, 1
  store i32 %1345, ptr %53, align 4, !tbaa !9
  %1346 = load ptr, ptr %18, align 8, !tbaa !5
  %1347 = load i32, ptr %1346, align 4, !tbaa !9
  store i32 %1347, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1348

1348:                                             ; preds = %1384, %1327
  %1349 = load i32, ptr %42, align 4, !tbaa !9
  %1350 = load i32, ptr %32, align 4, !tbaa !9
  %1351 = icmp sle i32 %1349, %1350
  br i1 %1351, label %1352, label %1387

1352:                                             ; preds = %1348
  %1353 = load i32, ptr %72, align 4, !tbaa !9
  %1354 = load i32, ptr %65, align 4, !tbaa !9
  %1355 = add nsw i32 %1353, %1354
  %1356 = sub nsw i32 %1355, 1
  store i32 %1356, ptr %33, align 4, !tbaa !9
  %1357 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1357, ptr %49, align 4, !tbaa !9
  br label %1358

1358:                                             ; preds = %1380, %1352
  %1359 = load i32, ptr %49, align 4, !tbaa !9
  %1360 = load i32, ptr %33, align 4, !tbaa !9
  %1361 = icmp sle i32 %1359, %1360
  br i1 %1361, label %1362, label %1383

1362:                                             ; preds = %1358
  %1363 = load i32, ptr %53, align 4, !tbaa !9
  %1364 = add nsw i32 %1363, 1
  store i32 %1364, ptr %53, align 4, !tbaa !9
  %1365 = load ptr, ptr %21, align 8, !tbaa !5
  %1366 = load i32, ptr %49, align 4, !tbaa !9
  %1367 = load i32, ptr %42, align 4, !tbaa !9
  %1368 = load i32, ptr %29, align 4, !tbaa !9
  %1369 = mul nsw i32 %1367, %1368
  %1370 = add nsw i32 %1366, %1369
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %1365, i64 %1371
  %1373 = call { double, double } @Cd(ptr noundef %1372)
  %1374 = extractvalue { double, double } %1373, 0
  %1375 = extractvalue { double, double } %1373, 1
  %1376 = load ptr, ptr %26, align 8, !tbaa !5
  %1377 = load i32, ptr %53, align 4, !tbaa !9
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds double, ptr %1376, i64 %1378
  store double %1375, ptr %1379, align 8, !tbaa !11
  br label %1380

1380:                                             ; preds = %1362
  %1381 = load i32, ptr %49, align 4, !tbaa !9
  %1382 = add nsw i32 %1381, 1
  store i32 %1382, ptr %49, align 4, !tbaa !9
  br label %1358, !llvm.loop !37

1383:                                             ; preds = %1358
  br label %1384

1384:                                             ; preds = %1383
  %1385 = load i32, ptr %42, align 4, !tbaa !9
  %1386 = add nsw i32 %1385, 1
  store i32 %1386, ptr %42, align 4, !tbaa !9
  br label %1348, !llvm.loop !38

1387:                                             ; preds = %1348
  %1388 = load ptr, ptr %18, align 8, !tbaa !5
  %1389 = load ptr, ptr %26, align 8, !tbaa !5
  %1390 = load i32, ptr %57, align 4, !tbaa !9
  %1391 = load i32, ptr %82, align 4, !tbaa !9
  %1392 = add nsw i32 %1390, %1391
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds double, ptr %1389, i64 %1393
  %1395 = load ptr, ptr %17, align 8, !tbaa !5
  %1396 = load ptr, ptr %26, align 8, !tbaa !5
  %1397 = load i32, ptr %43, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1396, i64 %1398
  %1400 = load ptr, ptr %26, align 8, !tbaa !5
  %1401 = load i32, ptr %61, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1400, i64 %1402
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %65, ptr noundef %1388, ptr noundef %65, ptr noundef @c_b10, ptr noundef %1394, ptr noundef %1395, ptr noundef %1399, ptr noundef %65, ptr noundef @c_b35, ptr noundef %1403, ptr noundef %65)
  %1404 = load i32, ptr %64, align 4, !tbaa !9
  %1405 = sub nsw i32 %1404, 1
  store i32 %1405, ptr %60, align 4, !tbaa !9
  %1406 = load i32, ptr %61, align 4, !tbaa !9
  %1407 = sub nsw i32 %1406, 1
  store i32 %1407, ptr %58, align 4, !tbaa !9
  %1408 = load ptr, ptr %18, align 8, !tbaa !5
  %1409 = load i32, ptr %1408, align 4, !tbaa !9
  store i32 %1409, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1410

1410:                                             ; preds = %1466, %1387
  %1411 = load i32, ptr %42, align 4, !tbaa !9
  %1412 = load i32, ptr %32, align 4, !tbaa !9
  %1413 = icmp sle i32 %1411, %1412
  br i1 %1413, label %1414, label %1469

1414:                                             ; preds = %1410
  %1415 = load i32, ptr %72, align 4, !tbaa !9
  %1416 = load i32, ptr %65, align 4, !tbaa !9
  %1417 = add nsw i32 %1415, %1416
  %1418 = sub nsw i32 %1417, 1
  store i32 %1418, ptr %33, align 4, !tbaa !9
  %1419 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1419, ptr %49, align 4, !tbaa !9
  br label %1420

1420:                                             ; preds = %1462, %1414
  %1421 = load i32, ptr %49, align 4, !tbaa !9
  %1422 = load i32, ptr %33, align 4, !tbaa !9
  %1423 = icmp sle i32 %1421, %1422
  br i1 %1423, label %1424, label %1465

1424:                                             ; preds = %1420
  %1425 = load i32, ptr %60, align 4, !tbaa !9
  %1426 = add nsw i32 %1425, 1
  store i32 %1426, ptr %60, align 4, !tbaa !9
  %1427 = load i32, ptr %58, align 4, !tbaa !9
  %1428 = add nsw i32 %1427, 1
  store i32 %1428, ptr %58, align 4, !tbaa !9
  %1429 = load i32, ptr %49, align 4, !tbaa !9
  %1430 = load i32, ptr %42, align 4, !tbaa !9
  %1431 = load i32, ptr %29, align 4, !tbaa !9
  %1432 = mul nsw i32 %1430, %1431
  %1433 = add nsw i32 %1429, %1432
  store i32 %1433, ptr %34, align 4, !tbaa !9
  %1434 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1434, ptr %35, align 4, !tbaa !9
  %1435 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1435, ptr %36, align 4, !tbaa !9
  %1436 = load ptr, ptr %26, align 8, !tbaa !5
  %1437 = load i32, ptr %35, align 4, !tbaa !9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds double, ptr %1436, i64 %1438
  %1440 = load double, ptr %1439, align 8, !tbaa !11
  %1441 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %1440, ptr %1441, align 8, !tbaa !18
  %1442 = load ptr, ptr %26, align 8, !tbaa !5
  %1443 = load i32, ptr %36, align 4, !tbaa !9
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds double, ptr %1442, i64 %1444
  %1446 = load double, ptr %1445, align 8, !tbaa !11
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %1446, ptr %1447, align 8, !tbaa !24
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %1449 = load double, ptr %1448, align 8, !tbaa !18
  %1450 = load ptr, ptr %21, align 8, !tbaa !5
  %1451 = load i32, ptr %34, align 4, !tbaa !9
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i64 %1452
  %1454 = getelementptr inbounds %struct.doublecomplex, ptr %1453, i32 0, i32 0
  store double %1449, ptr %1454, align 8, !tbaa !18
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %1456 = load double, ptr %1455, align 8, !tbaa !24
  %1457 = load ptr, ptr %21, align 8, !tbaa !5
  %1458 = load i32, ptr %34, align 4, !tbaa !9
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds %struct.doublecomplex, ptr %1457, i64 %1459
  %1461 = getelementptr inbounds %struct.doublecomplex, ptr %1460, i32 0, i32 1
  store double %1456, ptr %1461, align 8, !tbaa !24
  br label %1462

1462:                                             ; preds = %1424
  %1463 = load i32, ptr %49, align 4, !tbaa !9
  %1464 = add nsw i32 %1463, 1
  store i32 %1464, ptr %49, align 4, !tbaa !9
  br label %1420, !llvm.loop !39

1465:                                             ; preds = %1420
  br label %1466

1466:                                             ; preds = %1465
  %1467 = load i32, ptr %42, align 4, !tbaa !9
  %1468 = add nsw i32 %1467, 1
  store i32 %1468, ptr %42, align 4, !tbaa !9
  br label %1410, !llvm.loop !40

1469:                                             ; preds = %1410
  %1470 = load ptr, ptr %18, align 8, !tbaa !5
  %1471 = load ptr, ptr %21, align 8, !tbaa !5
  %1472 = load i32, ptr %72, align 4, !tbaa !9
  %1473 = load i32, ptr %29, align 4, !tbaa !9
  %1474 = add nsw i32 %1472, %1473
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds %struct.doublecomplex, ptr %1471, i64 %1475
  %1477 = load ptr, ptr %22, align 8, !tbaa !5
  %1478 = load ptr, ptr %25, align 8, !tbaa !5
  %1479 = load i32, ptr %70, align 4, !tbaa !9
  %1480 = load i32, ptr %82, align 4, !tbaa !9
  %1481 = add nsw i32 %1479, %1480
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds %struct.doublecomplex, ptr %1478, i64 %1482
  %1484 = load ptr, ptr %17, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %1470, ptr noundef %1476, ptr noundef %1477, ptr noundef %1483, ptr noundef %1484)
  br label %1700

1485:                                             ; preds = %1228
  %1486 = load ptr, ptr %16, align 8, !tbaa !5
  %1487 = load ptr, ptr %19, align 8, !tbaa !5
  %1488 = load i32, ptr %72, align 4, !tbaa !9
  %1489 = sext i32 %1488 to i64
  %1490 = getelementptr inbounds double, ptr %1487, i64 %1489
  %1491 = load ptr, ptr %20, align 8, !tbaa !5
  %1492 = load i32, ptr %72, align 4, !tbaa !9
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds double, ptr %1491, i64 %1493
  %1495 = load ptr, ptr %26, align 8, !tbaa !5
  %1496 = load i32, ptr %57, align 4, !tbaa !9
  %1497 = load i32, ptr %82, align 4, !tbaa !9
  %1498 = add nsw i32 %1496, %1497
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds double, ptr %1495, i64 %1499
  %1501 = load ptr, ptr %17, align 8, !tbaa !5
  %1502 = load ptr, ptr %26, align 8, !tbaa !5
  %1503 = load i32, ptr %73, align 4, !tbaa !9
  %1504 = load i32, ptr %82, align 4, !tbaa !9
  %1505 = add nsw i32 %1503, %1504
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds double, ptr %1502, i64 %1506
  %1508 = load ptr, ptr %27, align 8, !tbaa !5
  %1509 = load i32, ptr %54, align 4, !tbaa !9
  %1510 = load i32, ptr %82, align 4, !tbaa !9
  %1511 = add nsw i32 %1509, %1510
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds i32, ptr %1508, i64 %1512
  %1514 = load ptr, ptr %26, align 8, !tbaa !5
  %1515 = load i32, ptr %39, align 4, !tbaa !9
  %1516 = load i32, ptr %82, align 4, !tbaa !9
  %1517 = add nsw i32 %1515, %1516
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds double, ptr %1514, i64 %1518
  %1520 = load ptr, ptr %26, align 8, !tbaa !5
  %1521 = load i32, ptr %40, align 4, !tbaa !9
  %1522 = load i32, ptr %82, align 4, !tbaa !9
  %1523 = add nsw i32 %1521, %1522
  %1524 = sext i32 %1523 to i64
  %1525 = getelementptr inbounds double, ptr %1520, i64 %1524
  %1526 = load ptr, ptr %26, align 8, !tbaa !5
  %1527 = load i32, ptr %59, align 4, !tbaa !9
  %1528 = load i32, ptr %82, align 4, !tbaa !9
  %1529 = add nsw i32 %1527, %1528
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds double, ptr %1526, i64 %1530
  %1532 = load ptr, ptr %26, align 8, !tbaa !5
  %1533 = load i32, ptr %62, align 4, !tbaa !9
  %1534 = load i32, ptr %82, align 4, !tbaa !9
  %1535 = add nsw i32 %1533, %1534
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds double, ptr %1532, i64 %1536
  %1538 = load ptr, ptr %27, align 8, !tbaa !5
  %1539 = load i32, ptr %77, align 4, !tbaa !9
  %1540 = load i32, ptr %82, align 4, !tbaa !9
  %1541 = add nsw i32 %1539, %1540
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds i32, ptr %1538, i64 %1542
  %1544 = load ptr, ptr %27, align 8, !tbaa !5
  %1545 = load i32, ptr %74, align 4, !tbaa !9
  %1546 = load i32, ptr %82, align 4, !tbaa !9
  %1547 = add nsw i32 %1545, %1546
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds i32, ptr %1544, i64 %1548
  %1550 = load ptr, ptr %17, align 8, !tbaa !5
  %1551 = load ptr, ptr %27, align 8, !tbaa !5
  %1552 = load i32, ptr %44, align 4, !tbaa !9
  %1553 = load i32, ptr %82, align 4, !tbaa !9
  %1554 = add nsw i32 %1552, %1553
  %1555 = sext i32 %1554 to i64
  %1556 = getelementptr inbounds i32, ptr %1551, i64 %1555
  %1557 = load ptr, ptr %26, align 8, !tbaa !5
  %1558 = load i32, ptr %76, align 4, !tbaa !9
  %1559 = load i32, ptr %82, align 4, !tbaa !9
  %1560 = add nsw i32 %1558, %1559
  %1561 = sext i32 %1560 to i64
  %1562 = getelementptr inbounds double, ptr %1557, i64 %1561
  %1563 = load ptr, ptr %26, align 8, !tbaa !5
  %1564 = load i32, ptr %51, align 4, !tbaa !9
  %1565 = load i32, ptr %82, align 4, !tbaa !9
  %1566 = add nsw i32 %1564, %1565
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds double, ptr %1563, i64 %1567
  %1569 = load ptr, ptr %26, align 8, !tbaa !5
  %1570 = load i32, ptr %56, align 4, !tbaa !9
  %1571 = load i32, ptr %82, align 4, !tbaa !9
  %1572 = add nsw i32 %1570, %1571
  %1573 = sext i32 %1572 to i64
  %1574 = getelementptr inbounds double, ptr %1569, i64 %1573
  %1575 = load ptr, ptr %26, align 8, !tbaa !5
  %1576 = load i32, ptr %79, align 4, !tbaa !9
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds double, ptr %1575, i64 %1577
  %1579 = load ptr, ptr %27, align 8, !tbaa !5
  %1580 = load i32, ptr %84, align 4, !tbaa !9
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds i32, ptr %1579, i64 %1581
  %1583 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasda_(ptr noundef %67, ptr noundef %1486, ptr noundef %65, ptr noundef %47, ptr noundef %1490, ptr noundef %1494, ptr noundef %1500, ptr noundef %1501, ptr noundef %1507, ptr noundef %1513, ptr noundef %1519, ptr noundef %1525, ptr noundef %1531, ptr noundef %1537, ptr noundef %1543, ptr noundef %1549, ptr noundef %1550, ptr noundef %1556, ptr noundef %1562, ptr noundef %1568, ptr noundef %1574, ptr noundef %1578, ptr noundef %1582, ptr noundef %1583)
  %1584 = load ptr, ptr %28, align 8, !tbaa !5
  %1585 = load i32, ptr %1584, align 4, !tbaa !9
  %1586 = icmp ne i32 %1585, 0
  br i1 %1586, label %1587, label %1588

1587:                                             ; preds = %1485
  store i32 1, ptr %86, align 4
  br label %2172

1588:                                             ; preds = %1485
  %1589 = load i32, ptr %70, align 4, !tbaa !9
  %1590 = load i32, ptr %82, align 4, !tbaa !9
  %1591 = add nsw i32 %1589, %1590
  store i32 %1591, ptr %48, align 4, !tbaa !9
  %1592 = load ptr, ptr %16, align 8, !tbaa !5
  %1593 = load ptr, ptr %18, align 8, !tbaa !5
  %1594 = load ptr, ptr %21, align 8, !tbaa !5
  %1595 = load i32, ptr %72, align 4, !tbaa !9
  %1596 = load i32, ptr %29, align 4, !tbaa !9
  %1597 = add nsw i32 %1595, %1596
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds %struct.doublecomplex, ptr %1594, i64 %1598
  %1600 = load ptr, ptr %22, align 8, !tbaa !5
  %1601 = load ptr, ptr %25, align 8, !tbaa !5
  %1602 = load i32, ptr %48, align 4, !tbaa !9
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1601, i64 %1603
  %1605 = load ptr, ptr %17, align 8, !tbaa !5
  %1606 = load ptr, ptr %26, align 8, !tbaa !5
  %1607 = load i32, ptr %57, align 4, !tbaa !9
  %1608 = load i32, ptr %82, align 4, !tbaa !9
  %1609 = add nsw i32 %1607, %1608
  %1610 = sext i32 %1609 to i64
  %1611 = getelementptr inbounds double, ptr %1606, i64 %1610
  %1612 = load ptr, ptr %17, align 8, !tbaa !5
  %1613 = load ptr, ptr %26, align 8, !tbaa !5
  %1614 = load i32, ptr %73, align 4, !tbaa !9
  %1615 = load i32, ptr %82, align 4, !tbaa !9
  %1616 = add nsw i32 %1614, %1615
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds double, ptr %1613, i64 %1617
  %1619 = load ptr, ptr %27, align 8, !tbaa !5
  %1620 = load i32, ptr %54, align 4, !tbaa !9
  %1621 = load i32, ptr %82, align 4, !tbaa !9
  %1622 = add nsw i32 %1620, %1621
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds i32, ptr %1619, i64 %1623
  %1625 = load ptr, ptr %26, align 8, !tbaa !5
  %1626 = load i32, ptr %39, align 4, !tbaa !9
  %1627 = load i32, ptr %82, align 4, !tbaa !9
  %1628 = add nsw i32 %1626, %1627
  %1629 = sext i32 %1628 to i64
  %1630 = getelementptr inbounds double, ptr %1625, i64 %1629
  %1631 = load ptr, ptr %26, align 8, !tbaa !5
  %1632 = load i32, ptr %40, align 4, !tbaa !9
  %1633 = load i32, ptr %82, align 4, !tbaa !9
  %1634 = add nsw i32 %1632, %1633
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds double, ptr %1631, i64 %1635
  %1637 = load ptr, ptr %26, align 8, !tbaa !5
  %1638 = load i32, ptr %59, align 4, !tbaa !9
  %1639 = load i32, ptr %82, align 4, !tbaa !9
  %1640 = add nsw i32 %1638, %1639
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds double, ptr %1637, i64 %1641
  %1643 = load ptr, ptr %26, align 8, !tbaa !5
  %1644 = load i32, ptr %62, align 4, !tbaa !9
  %1645 = load i32, ptr %82, align 4, !tbaa !9
  %1646 = add nsw i32 %1644, %1645
  %1647 = sext i32 %1646 to i64
  %1648 = getelementptr inbounds double, ptr %1643, i64 %1647
  %1649 = load ptr, ptr %27, align 8, !tbaa !5
  %1650 = load i32, ptr %77, align 4, !tbaa !9
  %1651 = load i32, ptr %82, align 4, !tbaa !9
  %1652 = add nsw i32 %1650, %1651
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds i32, ptr %1649, i64 %1653
  %1655 = load ptr, ptr %27, align 8, !tbaa !5
  %1656 = load i32, ptr %74, align 4, !tbaa !9
  %1657 = load i32, ptr %82, align 4, !tbaa !9
  %1658 = add nsw i32 %1656, %1657
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds i32, ptr %1655, i64 %1659
  %1661 = load ptr, ptr %17, align 8, !tbaa !5
  %1662 = load ptr, ptr %27, align 8, !tbaa !5
  %1663 = load i32, ptr %44, align 4, !tbaa !9
  %1664 = load i32, ptr %82, align 4, !tbaa !9
  %1665 = add nsw i32 %1663, %1664
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds i32, ptr %1662, i64 %1666
  %1668 = load ptr, ptr %26, align 8, !tbaa !5
  %1669 = load i32, ptr %76, align 4, !tbaa !9
  %1670 = load i32, ptr %82, align 4, !tbaa !9
  %1671 = add nsw i32 %1669, %1670
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds double, ptr %1668, i64 %1672
  %1674 = load ptr, ptr %26, align 8, !tbaa !5
  %1675 = load i32, ptr %51, align 4, !tbaa !9
  %1676 = load i32, ptr %82, align 4, !tbaa !9
  %1677 = add nsw i32 %1675, %1676
  %1678 = sext i32 %1677 to i64
  %1679 = getelementptr inbounds double, ptr %1674, i64 %1678
  %1680 = load ptr, ptr %26, align 8, !tbaa !5
  %1681 = load i32, ptr %56, align 4, !tbaa !9
  %1682 = load i32, ptr %82, align 4, !tbaa !9
  %1683 = add nsw i32 %1681, %1682
  %1684 = sext i32 %1683 to i64
  %1685 = getelementptr inbounds double, ptr %1680, i64 %1684
  %1686 = load ptr, ptr %26, align 8, !tbaa !5
  %1687 = load i32, ptr %79, align 4, !tbaa !9
  %1688 = sext i32 %1687 to i64
  %1689 = getelementptr inbounds double, ptr %1686, i64 %1688
  %1690 = load ptr, ptr %27, align 8, !tbaa !5
  %1691 = load i32, ptr %84, align 4, !tbaa !9
  %1692 = sext i32 %1691 to i64
  %1693 = getelementptr inbounds i32, ptr %1690, i64 %1692
  %1694 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlalsa_(ptr noundef %68, ptr noundef %1592, ptr noundef %65, ptr noundef %1593, ptr noundef %1599, ptr noundef %1600, ptr noundef %1604, ptr noundef %1605, ptr noundef %1611, ptr noundef %1612, ptr noundef %1618, ptr noundef %1624, ptr noundef %1630, ptr noundef %1636, ptr noundef %1642, ptr noundef %1648, ptr noundef %1654, ptr noundef %1660, ptr noundef %1661, ptr noundef %1667, ptr noundef %1673, ptr noundef %1679, ptr noundef %1685, ptr noundef %1689, ptr noundef %1693, ptr noundef %1694)
  %1695 = load ptr, ptr %28, align 8, !tbaa !5
  %1696 = load i32, ptr %1695, align 4, !tbaa !9
  %1697 = icmp ne i32 %1696, 0
  br i1 %1697, label %1698, label %1699

1698:                                             ; preds = %1588
  store i32 1, ptr %86, align 4
  br label %2172

1699:                                             ; preds = %1588
  br label %1700

1700:                                             ; preds = %1699, %1469
  br label %1701

1701:                                             ; preds = %1700, %1212
  %1702 = load i32, ptr %52, align 4, !tbaa !9
  %1703 = add nsw i32 %1702, 1
  store i32 %1703, ptr %72, align 4, !tbaa !9
  br label %1704

1704:                                             ; preds = %1701, %1103
  br label %1705

1705:                                             ; preds = %1704
  %1706 = load i32, ptr %52, align 4, !tbaa !9
  %1707 = add nsw i32 %1706, 1
  store i32 %1707, ptr %52, align 4, !tbaa !9
  br label %1082, !llvm.loop !41

1708:                                             ; preds = %1082
  %1709 = load double, ptr %41, align 8, !tbaa !11
  %1710 = load ptr, ptr %19, align 8, !tbaa !5
  %1711 = load ptr, ptr %17, align 8, !tbaa !5
  %1712 = load ptr, ptr %19, align 8, !tbaa !5
  %1713 = getelementptr inbounds double, ptr %1712, i64 1
  %1714 = call i32 @idamax_(ptr noundef %1711, ptr noundef %1713, ptr noundef @c__1)
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds double, ptr %1710, i64 %1715
  %1717 = load double, ptr %1716, align 8, !tbaa !11
  store double %1717, ptr %37, align 8, !tbaa !11
  %1718 = load double, ptr %37, align 8, !tbaa !11
  %1719 = fcmp oge double %1718, 0.000000e+00
  br i1 %1719, label %1720, label %1722

1720:                                             ; preds = %1708
  %1721 = load double, ptr %37, align 8, !tbaa !11
  br label %1725

1722:                                             ; preds = %1708
  %1723 = load double, ptr %37, align 8, !tbaa !11
  %1724 = fneg double %1723
  br label %1725

1725:                                             ; preds = %1722, %1720
  %1726 = phi double [ %1721, %1720 ], [ %1724, %1722 ]
  %1727 = fmul double %1709, %1726
  store double %1727, ptr %85, align 8, !tbaa !11
  %1728 = load ptr, ptr %17, align 8, !tbaa !5
  %1729 = load i32, ptr %1728, align 4, !tbaa !9
  store i32 %1729, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1730

1730:                                             ; preds = %1798, %1725
  %1731 = load i32, ptr %52, align 4, !tbaa !9
  %1732 = load i32, ptr %31, align 4, !tbaa !9
  %1733 = icmp sle i32 %1731, %1732
  br i1 %1733, label %1734, label %1801

1734:                                             ; preds = %1730
  %1735 = load ptr, ptr %19, align 8, !tbaa !5
  %1736 = load i32, ptr %52, align 4, !tbaa !9
  %1737 = sext i32 %1736 to i64
  %1738 = getelementptr inbounds double, ptr %1735, i64 %1737
  %1739 = load double, ptr %1738, align 8, !tbaa !11
  store double %1739, ptr %37, align 8, !tbaa !11
  %1740 = load double, ptr %37, align 8, !tbaa !11
  %1741 = fcmp oge double %1740, 0.000000e+00
  br i1 %1741, label %1742, label %1744

1742:                                             ; preds = %1734
  %1743 = load double, ptr %37, align 8, !tbaa !11
  br label %1747

1744:                                             ; preds = %1734
  %1745 = load double, ptr %37, align 8, !tbaa !11
  %1746 = fneg double %1745
  br label %1747

1747:                                             ; preds = %1744, %1742
  %1748 = phi double [ %1743, %1742 ], [ %1746, %1744 ]
  %1749 = load double, ptr %85, align 8, !tbaa !11
  %1750 = fcmp ole double %1748, %1749
  br i1 %1750, label %1751, label %1761

1751:                                             ; preds = %1747
  %1752 = load ptr, ptr %18, align 8, !tbaa !5
  %1753 = load ptr, ptr %25, align 8, !tbaa !5
  %1754 = load i32, ptr %70, align 4, !tbaa !9
  %1755 = load i32, ptr %52, align 4, !tbaa !9
  %1756 = add nsw i32 %1754, %1755
  %1757 = sub nsw i32 %1756, 1
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds %struct.doublecomplex, ptr %1753, i64 %1758
  %1760 = load ptr, ptr %17, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %1752, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1759, ptr noundef %1760)
  br label %1779

1761:                                             ; preds = %1747
  %1762 = load ptr, ptr %24, align 8, !tbaa !5
  %1763 = load i32, ptr %1762, align 4, !tbaa !9
  %1764 = add nsw i32 %1763, 1
  store i32 %1764, ptr %1762, align 4, !tbaa !9
  %1765 = load ptr, ptr %19, align 8, !tbaa !5
  %1766 = load i32, ptr %52, align 4, !tbaa !9
  %1767 = sext i32 %1766 to i64
  %1768 = getelementptr inbounds double, ptr %1765, i64 %1767
  %1769 = load ptr, ptr %18, align 8, !tbaa !5
  %1770 = load ptr, ptr %25, align 8, !tbaa !5
  %1771 = load i32, ptr %70, align 4, !tbaa !9
  %1772 = load i32, ptr %52, align 4, !tbaa !9
  %1773 = add nsw i32 %1771, %1772
  %1774 = sub nsw i32 %1773, 1
  %1775 = sext i32 %1774 to i64
  %1776 = getelementptr inbounds %struct.doublecomplex, ptr %1770, i64 %1775
  %1777 = load ptr, ptr %17, align 8, !tbaa !5
  %1778 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %1768, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %1769, ptr noundef %1776, ptr noundef %1777, ptr noundef %1778)
  br label %1779

1779:                                             ; preds = %1761, %1751
  %1780 = load ptr, ptr %19, align 8, !tbaa !5
  %1781 = load i32, ptr %52, align 4, !tbaa !9
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds double, ptr %1780, i64 %1782
  %1784 = load double, ptr %1783, align 8, !tbaa !11
  store double %1784, ptr %37, align 8, !tbaa !11
  %1785 = load double, ptr %37, align 8, !tbaa !11
  %1786 = fcmp oge double %1785, 0.000000e+00
  br i1 %1786, label %1787, label %1789

1787:                                             ; preds = %1779
  %1788 = load double, ptr %37, align 8, !tbaa !11
  br label %1792

1789:                                             ; preds = %1779
  %1790 = load double, ptr %37, align 8, !tbaa !11
  %1791 = fneg double %1790
  br label %1792

1792:                                             ; preds = %1789, %1787
  %1793 = phi double [ %1788, %1787 ], [ %1791, %1789 ]
  %1794 = load ptr, ptr %19, align 8, !tbaa !5
  %1795 = load i32, ptr %52, align 4, !tbaa !9
  %1796 = sext i32 %1795 to i64
  %1797 = getelementptr inbounds double, ptr %1794, i64 %1796
  store double %1793, ptr %1797, align 8, !tbaa !11
  br label %1798

1798:                                             ; preds = %1792
  %1799 = load i32, ptr %52, align 4, !tbaa !9
  %1800 = add nsw i32 %1799, 1
  store i32 %1800, ptr %52, align 4, !tbaa !9
  br label %1730, !llvm.loop !42

1801:                                             ; preds = %1730
  store i32 1, ptr %68, align 4, !tbaa !9
  %1802 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1802, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1803

1803:                                             ; preds = %2151, %1801
  %1804 = load i32, ptr %52, align 4, !tbaa !9
  %1805 = load i32, ptr %31, align 4, !tbaa !9
  %1806 = icmp sle i32 %1804, %1805
  br i1 %1806, label %1807, label %2154

1807:                                             ; preds = %1803
  %1808 = load ptr, ptr %27, align 8, !tbaa !5
  %1809 = load i32, ptr %52, align 4, !tbaa !9
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds i32, ptr %1808, i64 %1810
  %1812 = load i32, ptr %1811, align 4, !tbaa !9
  store i32 %1812, ptr %72, align 4, !tbaa !9
  %1813 = load i32, ptr %72, align 4, !tbaa !9
  %1814 = sub nsw i32 %1813, 1
  store i32 %1814, ptr %82, align 4, !tbaa !9
  %1815 = load ptr, ptr %27, align 8, !tbaa !5
  %1816 = load i32, ptr %63, align 4, !tbaa !9
  %1817 = load i32, ptr %52, align 4, !tbaa !9
  %1818 = add nsw i32 %1816, %1817
  %1819 = sub nsw i32 %1818, 1
  %1820 = sext i32 %1819 to i64
  %1821 = getelementptr inbounds i32, ptr %1815, i64 %1820
  %1822 = load i32, ptr %1821, align 4, !tbaa !9
  store i32 %1822, ptr %65, align 4, !tbaa !9
  %1823 = load i32, ptr %70, align 4, !tbaa !9
  %1824 = load i32, ptr %82, align 4, !tbaa !9
  %1825 = add nsw i32 %1823, %1824
  store i32 %1825, ptr %48, align 4, !tbaa !9
  %1826 = load i32, ptr %65, align 4, !tbaa !9
  %1827 = icmp eq i32 %1826, 1
  br i1 %1827, label %1828, label %1842

1828:                                             ; preds = %1807
  %1829 = load ptr, ptr %18, align 8, !tbaa !5
  %1830 = load ptr, ptr %25, align 8, !tbaa !5
  %1831 = load i32, ptr %48, align 4, !tbaa !9
  %1832 = sext i32 %1831 to i64
  %1833 = getelementptr inbounds %struct.doublecomplex, ptr %1830, i64 %1832
  %1834 = load ptr, ptr %17, align 8, !tbaa !5
  %1835 = load ptr, ptr %21, align 8, !tbaa !5
  %1836 = load i32, ptr %72, align 4, !tbaa !9
  %1837 = load i32, ptr %29, align 4, !tbaa !9
  %1838 = add nsw i32 %1836, %1837
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds %struct.doublecomplex, ptr %1835, i64 %1839
  %1841 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %1829, ptr noundef %1833, ptr noundef %1834, ptr noundef %1840, ptr noundef %1841)
  br label %2150

1842:                                             ; preds = %1807
  %1843 = load i32, ptr %65, align 4, !tbaa !9
  %1844 = load ptr, ptr %16, align 8, !tbaa !5
  %1845 = load i32, ptr %1844, align 4, !tbaa !9
  %1846 = icmp sle i32 %1843, %1845
  br i1 %1846, label %1847, label %2040

1847:                                             ; preds = %1842
  %1848 = load i32, ptr %48, align 4, !tbaa !9
  %1849 = load ptr, ptr %17, align 8, !tbaa !5
  %1850 = load i32, ptr %1849, align 4, !tbaa !9
  %1851 = sub nsw i32 %1848, %1850
  %1852 = sub nsw i32 %1851, 1
  store i32 %1852, ptr %53, align 4, !tbaa !9
  %1853 = load i32, ptr %43, align 4, !tbaa !9
  %1854 = sub nsw i32 %1853, 1
  store i32 %1854, ptr %60, align 4, !tbaa !9
  %1855 = load ptr, ptr %18, align 8, !tbaa !5
  %1856 = load i32, ptr %1855, align 4, !tbaa !9
  store i32 %1856, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1857

1857:                                             ; preds = %1891, %1847
  %1858 = load i32, ptr %42, align 4, !tbaa !9
  %1859 = load i32, ptr %32, align 4, !tbaa !9
  %1860 = icmp sle i32 %1858, %1859
  br i1 %1860, label %1861, label %1894

1861:                                             ; preds = %1857
  %1862 = load ptr, ptr %17, align 8, !tbaa !5
  %1863 = load i32, ptr %1862, align 4, !tbaa !9
  %1864 = load i32, ptr %53, align 4, !tbaa !9
  %1865 = add nsw i32 %1864, %1863
  store i32 %1865, ptr %53, align 4, !tbaa !9
  %1866 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1866, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1867

1867:                                             ; preds = %1887, %1861
  %1868 = load i32, ptr %49, align 4, !tbaa !9
  %1869 = load i32, ptr %33, align 4, !tbaa !9
  %1870 = icmp sle i32 %1868, %1869
  br i1 %1870, label %1871, label %1890

1871:                                             ; preds = %1867
  %1872 = load i32, ptr %60, align 4, !tbaa !9
  %1873 = add nsw i32 %1872, 1
  store i32 %1873, ptr %60, align 4, !tbaa !9
  %1874 = load i32, ptr %53, align 4, !tbaa !9
  %1875 = load i32, ptr %49, align 4, !tbaa !9
  %1876 = add nsw i32 %1874, %1875
  store i32 %1876, ptr %34, align 4, !tbaa !9
  %1877 = load ptr, ptr %25, align 8, !tbaa !5
  %1878 = load i32, ptr %34, align 4, !tbaa !9
  %1879 = sext i32 %1878 to i64
  %1880 = getelementptr inbounds %struct.doublecomplex, ptr %1877, i64 %1879
  %1881 = getelementptr inbounds %struct.doublecomplex, ptr %1880, i32 0, i32 0
  %1882 = load double, ptr %1881, align 8, !tbaa !18
  %1883 = load ptr, ptr %26, align 8, !tbaa !5
  %1884 = load i32, ptr %60, align 4, !tbaa !9
  %1885 = sext i32 %1884 to i64
  %1886 = getelementptr inbounds double, ptr %1883, i64 %1885
  store double %1882, ptr %1886, align 8, !tbaa !11
  br label %1887

1887:                                             ; preds = %1871
  %1888 = load i32, ptr %49, align 4, !tbaa !9
  %1889 = add nsw i32 %1888, 1
  store i32 %1889, ptr %49, align 4, !tbaa !9
  br label %1867, !llvm.loop !43

1890:                                             ; preds = %1867
  br label %1891

1891:                                             ; preds = %1890
  %1892 = load i32, ptr %42, align 4, !tbaa !9
  %1893 = add nsw i32 %1892, 1
  store i32 %1893, ptr %42, align 4, !tbaa !9
  br label %1857, !llvm.loop !44

1894:                                             ; preds = %1857
  %1895 = load ptr, ptr %18, align 8, !tbaa !5
  %1896 = load ptr, ptr %26, align 8, !tbaa !5
  %1897 = load i32, ptr %73, align 4, !tbaa !9
  %1898 = load i32, ptr %82, align 4, !tbaa !9
  %1899 = add nsw i32 %1897, %1898
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds double, ptr %1896, i64 %1900
  %1902 = load ptr, ptr %17, align 8, !tbaa !5
  %1903 = load ptr, ptr %26, align 8, !tbaa !5
  %1904 = load i32, ptr %43, align 4, !tbaa !9
  %1905 = sext i32 %1904 to i64
  %1906 = getelementptr inbounds double, ptr %1903, i64 %1905
  %1907 = load ptr, ptr %26, align 8, !tbaa !5
  %1908 = load i32, ptr %64, align 4, !tbaa !9
  %1909 = sext i32 %1908 to i64
  %1910 = getelementptr inbounds double, ptr %1907, i64 %1909
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %65, ptr noundef %1895, ptr noundef %65, ptr noundef @c_b10, ptr noundef %1901, ptr noundef %1902, ptr noundef %1906, ptr noundef %65, ptr noundef @c_b35, ptr noundef %1910, ptr noundef %65)
  %1911 = load i32, ptr %48, align 4, !tbaa !9
  %1912 = load ptr, ptr %17, align 8, !tbaa !5
  %1913 = load i32, ptr %1912, align 4, !tbaa !9
  %1914 = sub nsw i32 %1911, %1913
  %1915 = sub nsw i32 %1914, 1
  store i32 %1915, ptr %53, align 4, !tbaa !9
  %1916 = load i32, ptr %43, align 4, !tbaa !9
  %1917 = sub nsw i32 %1916, 1
  store i32 %1917, ptr %58, align 4, !tbaa !9
  %1918 = load ptr, ptr %18, align 8, !tbaa !5
  %1919 = load i32, ptr %1918, align 4, !tbaa !9
  store i32 %1919, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1920

1920:                                             ; preds = %1954, %1894
  %1921 = load i32, ptr %42, align 4, !tbaa !9
  %1922 = load i32, ptr %32, align 4, !tbaa !9
  %1923 = icmp sle i32 %1921, %1922
  br i1 %1923, label %1924, label %1957

1924:                                             ; preds = %1920
  %1925 = load ptr, ptr %17, align 8, !tbaa !5
  %1926 = load i32, ptr %1925, align 4, !tbaa !9
  %1927 = load i32, ptr %53, align 4, !tbaa !9
  %1928 = add nsw i32 %1927, %1926
  store i32 %1928, ptr %53, align 4, !tbaa !9
  %1929 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %1929, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1930

1930:                                             ; preds = %1950, %1924
  %1931 = load i32, ptr %49, align 4, !tbaa !9
  %1932 = load i32, ptr %33, align 4, !tbaa !9
  %1933 = icmp sle i32 %1931, %1932
  br i1 %1933, label %1934, label %1953

1934:                                             ; preds = %1930
  %1935 = load i32, ptr %58, align 4, !tbaa !9
  %1936 = add nsw i32 %1935, 1
  store i32 %1936, ptr %58, align 4, !tbaa !9
  %1937 = load ptr, ptr %25, align 8, !tbaa !5
  %1938 = load i32, ptr %53, align 4, !tbaa !9
  %1939 = load i32, ptr %49, align 4, !tbaa !9
  %1940 = add nsw i32 %1938, %1939
  %1941 = sext i32 %1940 to i64
  %1942 = getelementptr inbounds %struct.doublecomplex, ptr %1937, i64 %1941
  %1943 = call { double, double } @Cd(ptr noundef %1942)
  %1944 = extractvalue { double, double } %1943, 0
  %1945 = extractvalue { double, double } %1943, 1
  %1946 = load ptr, ptr %26, align 8, !tbaa !5
  %1947 = load i32, ptr %58, align 4, !tbaa !9
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %1946, i64 %1948
  store double %1945, ptr %1949, align 8, !tbaa !11
  br label %1950

1950:                                             ; preds = %1934
  %1951 = load i32, ptr %49, align 4, !tbaa !9
  %1952 = add nsw i32 %1951, 1
  store i32 %1952, ptr %49, align 4, !tbaa !9
  br label %1930, !llvm.loop !45

1953:                                             ; preds = %1930
  br label %1954

1954:                                             ; preds = %1953
  %1955 = load i32, ptr %42, align 4, !tbaa !9
  %1956 = add nsw i32 %1955, 1
  store i32 %1956, ptr %42, align 4, !tbaa !9
  br label %1920, !llvm.loop !46

1957:                                             ; preds = %1920
  %1958 = load ptr, ptr %18, align 8, !tbaa !5
  %1959 = load ptr, ptr %26, align 8, !tbaa !5
  %1960 = load i32, ptr %73, align 4, !tbaa !9
  %1961 = load i32, ptr %82, align 4, !tbaa !9
  %1962 = add nsw i32 %1960, %1961
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds double, ptr %1959, i64 %1963
  %1965 = load ptr, ptr %17, align 8, !tbaa !5
  %1966 = load ptr, ptr %26, align 8, !tbaa !5
  %1967 = load i32, ptr %43, align 4, !tbaa !9
  %1968 = sext i32 %1967 to i64
  %1969 = getelementptr inbounds double, ptr %1966, i64 %1968
  %1970 = load ptr, ptr %26, align 8, !tbaa !5
  %1971 = load i32, ptr %61, align 4, !tbaa !9
  %1972 = sext i32 %1971 to i64
  %1973 = getelementptr inbounds double, ptr %1970, i64 %1972
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %65, ptr noundef %1958, ptr noundef %65, ptr noundef @c_b10, ptr noundef %1964, ptr noundef %1965, ptr noundef %1969, ptr noundef %65, ptr noundef @c_b35, ptr noundef %1973, ptr noundef %65)
  %1974 = load i32, ptr %64, align 4, !tbaa !9
  %1975 = sub nsw i32 %1974, 1
  store i32 %1975, ptr %60, align 4, !tbaa !9
  %1976 = load i32, ptr %61, align 4, !tbaa !9
  %1977 = sub nsw i32 %1976, 1
  store i32 %1977, ptr %58, align 4, !tbaa !9
  %1978 = load ptr, ptr %18, align 8, !tbaa !5
  %1979 = load i32, ptr %1978, align 4, !tbaa !9
  store i32 %1979, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1980

1980:                                             ; preds = %2036, %1957
  %1981 = load i32, ptr %42, align 4, !tbaa !9
  %1982 = load i32, ptr %32, align 4, !tbaa !9
  %1983 = icmp sle i32 %1981, %1982
  br i1 %1983, label %1984, label %2039

1984:                                             ; preds = %1980
  %1985 = load i32, ptr %72, align 4, !tbaa !9
  %1986 = load i32, ptr %65, align 4, !tbaa !9
  %1987 = add nsw i32 %1985, %1986
  %1988 = sub nsw i32 %1987, 1
  store i32 %1988, ptr %33, align 4, !tbaa !9
  %1989 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1989, ptr %49, align 4, !tbaa !9
  br label %1990

1990:                                             ; preds = %2032, %1984
  %1991 = load i32, ptr %49, align 4, !tbaa !9
  %1992 = load i32, ptr %33, align 4, !tbaa !9
  %1993 = icmp sle i32 %1991, %1992
  br i1 %1993, label %1994, label %2035

1994:                                             ; preds = %1990
  %1995 = load i32, ptr %60, align 4, !tbaa !9
  %1996 = add nsw i32 %1995, 1
  store i32 %1996, ptr %60, align 4, !tbaa !9
  %1997 = load i32, ptr %58, align 4, !tbaa !9
  %1998 = add nsw i32 %1997, 1
  store i32 %1998, ptr %58, align 4, !tbaa !9
  %1999 = load i32, ptr %49, align 4, !tbaa !9
  %2000 = load i32, ptr %42, align 4, !tbaa !9
  %2001 = load i32, ptr %29, align 4, !tbaa !9
  %2002 = mul nsw i32 %2000, %2001
  %2003 = add nsw i32 %1999, %2002
  store i32 %2003, ptr %34, align 4, !tbaa !9
  %2004 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %2004, ptr %35, align 4, !tbaa !9
  %2005 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %2005, ptr %36, align 4, !tbaa !9
  %2006 = load ptr, ptr %26, align 8, !tbaa !5
  %2007 = load i32, ptr %35, align 4, !tbaa !9
  %2008 = sext i32 %2007 to i64
  %2009 = getelementptr inbounds double, ptr %2006, i64 %2008
  %2010 = load double, ptr %2009, align 8, !tbaa !11
  %2011 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  store double %2010, ptr %2011, align 8, !tbaa !18
  %2012 = load ptr, ptr %26, align 8, !tbaa !5
  %2013 = load i32, ptr %36, align 4, !tbaa !9
  %2014 = sext i32 %2013 to i64
  %2015 = getelementptr inbounds double, ptr %2012, i64 %2014
  %2016 = load double, ptr %2015, align 8, !tbaa !11
  %2017 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  store double %2016, ptr %2017, align 8, !tbaa !24
  %2018 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 0
  %2019 = load double, ptr %2018, align 8, !tbaa !18
  %2020 = load ptr, ptr %21, align 8, !tbaa !5
  %2021 = load i32, ptr %34, align 4, !tbaa !9
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds %struct.doublecomplex, ptr %2020, i64 %2022
  %2024 = getelementptr inbounds %struct.doublecomplex, ptr %2023, i32 0, i32 0
  store double %2019, ptr %2024, align 8, !tbaa !18
  %2025 = getelementptr inbounds %struct.doublecomplex, ptr %38, i32 0, i32 1
  %2026 = load double, ptr %2025, align 8, !tbaa !24
  %2027 = load ptr, ptr %21, align 8, !tbaa !5
  %2028 = load i32, ptr %34, align 4, !tbaa !9
  %2029 = sext i32 %2028 to i64
  %2030 = getelementptr inbounds %struct.doublecomplex, ptr %2027, i64 %2029
  %2031 = getelementptr inbounds %struct.doublecomplex, ptr %2030, i32 0, i32 1
  store double %2026, ptr %2031, align 8, !tbaa !24
  br label %2032

2032:                                             ; preds = %1994
  %2033 = load i32, ptr %49, align 4, !tbaa !9
  %2034 = add nsw i32 %2033, 1
  store i32 %2034, ptr %49, align 4, !tbaa !9
  br label %1990, !llvm.loop !47

2035:                                             ; preds = %1990
  br label %2036

2036:                                             ; preds = %2035
  %2037 = load i32, ptr %42, align 4, !tbaa !9
  %2038 = add nsw i32 %2037, 1
  store i32 %2038, ptr %42, align 4, !tbaa !9
  br label %1980, !llvm.loop !48

2039:                                             ; preds = %1980
  br label %2149

2040:                                             ; preds = %1842
  %2041 = load ptr, ptr %16, align 8, !tbaa !5
  %2042 = load ptr, ptr %18, align 8, !tbaa !5
  %2043 = load ptr, ptr %25, align 8, !tbaa !5
  %2044 = load i32, ptr %48, align 4, !tbaa !9
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds %struct.doublecomplex, ptr %2043, i64 %2045
  %2047 = load ptr, ptr %17, align 8, !tbaa !5
  %2048 = load ptr, ptr %21, align 8, !tbaa !5
  %2049 = load i32, ptr %72, align 4, !tbaa !9
  %2050 = load i32, ptr %29, align 4, !tbaa !9
  %2051 = add nsw i32 %2049, %2050
  %2052 = sext i32 %2051 to i64
  %2053 = getelementptr inbounds %struct.doublecomplex, ptr %2048, i64 %2052
  %2054 = load ptr, ptr %22, align 8, !tbaa !5
  %2055 = load ptr, ptr %26, align 8, !tbaa !5
  %2056 = load i32, ptr %57, align 4, !tbaa !9
  %2057 = load i32, ptr %82, align 4, !tbaa !9
  %2058 = add nsw i32 %2056, %2057
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds double, ptr %2055, i64 %2059
  %2061 = load ptr, ptr %17, align 8, !tbaa !5
  %2062 = load ptr, ptr %26, align 8, !tbaa !5
  %2063 = load i32, ptr %73, align 4, !tbaa !9
  %2064 = load i32, ptr %82, align 4, !tbaa !9
  %2065 = add nsw i32 %2063, %2064
  %2066 = sext i32 %2065 to i64
  %2067 = getelementptr inbounds double, ptr %2062, i64 %2066
  %2068 = load ptr, ptr %27, align 8, !tbaa !5
  %2069 = load i32, ptr %54, align 4, !tbaa !9
  %2070 = load i32, ptr %82, align 4, !tbaa !9
  %2071 = add nsw i32 %2069, %2070
  %2072 = sext i32 %2071 to i64
  %2073 = getelementptr inbounds i32, ptr %2068, i64 %2072
  %2074 = load ptr, ptr %26, align 8, !tbaa !5
  %2075 = load i32, ptr %39, align 4, !tbaa !9
  %2076 = load i32, ptr %82, align 4, !tbaa !9
  %2077 = add nsw i32 %2075, %2076
  %2078 = sext i32 %2077 to i64
  %2079 = getelementptr inbounds double, ptr %2074, i64 %2078
  %2080 = load ptr, ptr %26, align 8, !tbaa !5
  %2081 = load i32, ptr %40, align 4, !tbaa !9
  %2082 = load i32, ptr %82, align 4, !tbaa !9
  %2083 = add nsw i32 %2081, %2082
  %2084 = sext i32 %2083 to i64
  %2085 = getelementptr inbounds double, ptr %2080, i64 %2084
  %2086 = load ptr, ptr %26, align 8, !tbaa !5
  %2087 = load i32, ptr %59, align 4, !tbaa !9
  %2088 = load i32, ptr %82, align 4, !tbaa !9
  %2089 = add nsw i32 %2087, %2088
  %2090 = sext i32 %2089 to i64
  %2091 = getelementptr inbounds double, ptr %2086, i64 %2090
  %2092 = load ptr, ptr %26, align 8, !tbaa !5
  %2093 = load i32, ptr %62, align 4, !tbaa !9
  %2094 = load i32, ptr %82, align 4, !tbaa !9
  %2095 = add nsw i32 %2093, %2094
  %2096 = sext i32 %2095 to i64
  %2097 = getelementptr inbounds double, ptr %2092, i64 %2096
  %2098 = load ptr, ptr %27, align 8, !tbaa !5
  %2099 = load i32, ptr %77, align 4, !tbaa !9
  %2100 = load i32, ptr %82, align 4, !tbaa !9
  %2101 = add nsw i32 %2099, %2100
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds i32, ptr %2098, i64 %2102
  %2104 = load ptr, ptr %27, align 8, !tbaa !5
  %2105 = load i32, ptr %74, align 4, !tbaa !9
  %2106 = load i32, ptr %82, align 4, !tbaa !9
  %2107 = add nsw i32 %2105, %2106
  %2108 = sext i32 %2107 to i64
  %2109 = getelementptr inbounds i32, ptr %2104, i64 %2108
  %2110 = load ptr, ptr %17, align 8, !tbaa !5
  %2111 = load ptr, ptr %27, align 8, !tbaa !5
  %2112 = load i32, ptr %44, align 4, !tbaa !9
  %2113 = load i32, ptr %82, align 4, !tbaa !9
  %2114 = add nsw i32 %2112, %2113
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds i32, ptr %2111, i64 %2115
  %2117 = load ptr, ptr %26, align 8, !tbaa !5
  %2118 = load i32, ptr %76, align 4, !tbaa !9
  %2119 = load i32, ptr %82, align 4, !tbaa !9
  %2120 = add nsw i32 %2118, %2119
  %2121 = sext i32 %2120 to i64
  %2122 = getelementptr inbounds double, ptr %2117, i64 %2121
  %2123 = load ptr, ptr %26, align 8, !tbaa !5
  %2124 = load i32, ptr %51, align 4, !tbaa !9
  %2125 = load i32, ptr %82, align 4, !tbaa !9
  %2126 = add nsw i32 %2124, %2125
  %2127 = sext i32 %2126 to i64
  %2128 = getelementptr inbounds double, ptr %2123, i64 %2127
  %2129 = load ptr, ptr %26, align 8, !tbaa !5
  %2130 = load i32, ptr %56, align 4, !tbaa !9
  %2131 = load i32, ptr %82, align 4, !tbaa !9
  %2132 = add nsw i32 %2130, %2131
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds double, ptr %2129, i64 %2133
  %2135 = load ptr, ptr %26, align 8, !tbaa !5
  %2136 = load i32, ptr %79, align 4, !tbaa !9
  %2137 = sext i32 %2136 to i64
  %2138 = getelementptr inbounds double, ptr %2135, i64 %2137
  %2139 = load ptr, ptr %27, align 8, !tbaa !5
  %2140 = load i32, ptr %84, align 4, !tbaa !9
  %2141 = sext i32 %2140 to i64
  %2142 = getelementptr inbounds i32, ptr %2139, i64 %2141
  %2143 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlalsa_(ptr noundef %68, ptr noundef %2041, ptr noundef %65, ptr noundef %2042, ptr noundef %2046, ptr noundef %2047, ptr noundef %2053, ptr noundef %2054, ptr noundef %2060, ptr noundef %2061, ptr noundef %2067, ptr noundef %2073, ptr noundef %2079, ptr noundef %2085, ptr noundef %2091, ptr noundef %2097, ptr noundef %2103, ptr noundef %2109, ptr noundef %2110, ptr noundef %2116, ptr noundef %2122, ptr noundef %2128, ptr noundef %2134, ptr noundef %2138, ptr noundef %2142, ptr noundef %2143)
  %2144 = load ptr, ptr %28, align 8, !tbaa !5
  %2145 = load i32, ptr %2144, align 4, !tbaa !9
  %2146 = icmp ne i32 %2145, 0
  br i1 %2146, label %2147, label %2148

2147:                                             ; preds = %2040
  store i32 1, ptr %86, align 4
  br label %2172

2148:                                             ; preds = %2040
  br label %2149

2149:                                             ; preds = %2148, %2039
  br label %2150

2150:                                             ; preds = %2149, %1828
  br label %2151

2151:                                             ; preds = %2150
  %2152 = load i32, ptr %52, align 4, !tbaa !9
  %2153 = add nsw i32 %2152, 1
  store i32 %2153, ptr %52, align 4, !tbaa !9
  br label %1803, !llvm.loop !49

2154:                                             ; preds = %1803
  %2155 = load ptr, ptr %17, align 8, !tbaa !5
  %2156 = load ptr, ptr %19, align 8, !tbaa !5
  %2157 = getelementptr inbounds double, ptr %2156, i64 1
  %2158 = load ptr, ptr %17, align 8, !tbaa !5
  %2159 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %75, ptr noundef %2155, ptr noundef @c__1, ptr noundef %2157, ptr noundef %2158, ptr noundef %2159)
  %2160 = load ptr, ptr %17, align 8, !tbaa !5
  %2161 = load ptr, ptr %19, align 8, !tbaa !5
  %2162 = getelementptr inbounds double, ptr %2161, i64 1
  %2163 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasrt_(ptr noundef @.str.8, ptr noundef %2160, ptr noundef %2162, ptr noundef %2163)
  %2164 = load ptr, ptr %17, align 8, !tbaa !5
  %2165 = load ptr, ptr %18, align 8, !tbaa !5
  %2166 = load ptr, ptr %21, align 8, !tbaa !5
  %2167 = load i32, ptr %30, align 4, !tbaa !9
  %2168 = sext i32 %2167 to i64
  %2169 = getelementptr inbounds %struct.doublecomplex, ptr %2166, i64 %2168
  %2170 = load ptr, ptr %22, align 8, !tbaa !5
  %2171 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef @c_b10, ptr noundef %2164, ptr noundef %2165, ptr noundef %2169, ptr noundef %2170, ptr noundef %2171)
  store i32 1, ptr %86, align 4
  br label %2172

2172:                                             ; preds = %2154, %2147, %1698, %1587, %1282, %888, %461, %366, %206, %161, %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare void @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 void @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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #3

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

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

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

declare void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @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 void @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 = { inlinehint 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 #4 = { 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 #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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!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 i32, align 4
@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 i32, align 4
@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 void @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 i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  %25 = getelementptr inbounds i8, ptr %4, i64 -8
  %26 = getelementptr inbounds i8, ptr %5, i64 -8
  %27 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %27, -1
  %28 = sext i32 %narrow to i64
  %29 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %28
  %30 = getelementptr inbounds i8, ptr %10, i64 -16
  %31 = getelementptr inbounds i8, ptr %11, i64 -8
  %32 = getelementptr inbounds i8, ptr %12, i64 -4
  store i32 0, ptr %13, align 4, !tbaa !5
  %33 = load i32, ptr %2, align 4, !tbaa !5
  %34 = icmp slt i32 %33, 0
  br i1 %34, label %.thread, label %35

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

38:                                               ; preds = %35
  %39 = load i32, ptr %7, align 4, !tbaa !5
  %40 = icmp slt i32 %39, 1
  %41 = icmp slt i32 %39, %33
  %or.cond = or i1 %40, %41
  br i1 %or.cond, label %.thread, label %43

.thread:                                          ; preds = %38, %35, %14
  %.sink = phi i32 [ -3, %14 ], [ -4, %35 ], [ -8, %38 ]
  %.neg1464 = phi i32 [ 3, %14 ], [ 4, %35 ], [ 8, %38 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  store i32 %.neg1464, ptr %15, align 4, !tbaa !5
  %42 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %15, i32 noundef 6) #6
  br label %.loopexit1027

43:                                               ; preds = %38
  %44 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %45 = load double, ptr %8, align 8, !tbaa !9
  %46 = fcmp ugt double %45, 0.000000e+00
  %47 = fcmp ult double %45, 1.000000e+00
  %or.cond1022 = and i1 %46, %47
  %.0923 = select i1 %or.cond1022, double %45, double %44
  store i32 0, ptr %9, align 4, !tbaa !5
  %48 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %48, label %58 [
    i32 0, label %.loopexit1027
    i32 1, label %49
  ]

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

52:                                               ; preds = %49
  tail call void @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) #6
  br label %.loopexit1027

53:                                               ; preds = %49
  store i32 1, ptr %9, align 4, !tbaa !5
  tail call void @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) #6
  %54 = load double, ptr %4, align 8, !tbaa !9
  %55 = fcmp ult double %54, 0.000000e+00
  %56 = fneg double %54
  %57 = select i1 %55, double %56, double %54
  store double %57, ptr %4, align 8, !tbaa !9
  br label %.loopexit1027

58:                                               ; preds = %43
  %59 = load i8, ptr %0, align 1, !tbaa !11
  %60 = icmp eq i8 %59, 76
  br i1 %60, label %61, label %.loopexit1029

61:                                               ; preds = %58
  %invariant.gep = getelementptr i8, ptr %11, i64 -16
  %.not9821031 = icmp slt i32 %48, 2
  br i1 %.not9821031, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %61
  %62 = add nsw i32 %48, -1
  %63 = sext i32 %27 to i64
  %invariant.gep1467 = getelementptr %struct.doublecomplex, ptr %29, i64 %63
  %invariant.gep1469 = getelementptr %struct.doublecomplex, ptr %29, i64 %63
  %64 = sext i32 %62 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %81
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %81 ]
  %65 = getelementptr inbounds double, ptr %25, i64 %indvars.iv
  %66 = getelementptr inbounds double, ptr %26, i64 %indvars.iv
  call void @dlartg_(ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %17) #6
  %67 = load double, ptr %17, align 8, !tbaa !9
  store double %67, ptr %65, align 8, !tbaa !9
  %68 = load double, ptr %22, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %69 = getelementptr double, ptr %4, i64 %indvars.iv
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = fmul double %68, %70
  store double %71, ptr %66, align 8, !tbaa !9
  %72 = load double, ptr %21, align 8, !tbaa !9
  %73 = load double, ptr %69, align 8, !tbaa !9
  %74 = fmul double %72, %73
  store double %74, ptr %69, align 8, !tbaa !9
  %75 = load i32, ptr %3, align 4, !tbaa !5
  %76 = icmp eq i32 %75, 1
  br i1 %76, label %77, label %78

77:                                               ; preds = %.lr.ph
  %gep1468 = getelementptr %struct.doublecomplex, ptr %invariant.gep1467, i64 %indvars.iv
  %gep1470 = getelementptr %struct.doublecomplex, ptr %invariant.gep1469, i64 %indvars.iv.next
  call void @zdrot_(ptr noundef nonnull @c__1, ptr noundef %gep1468, ptr noundef nonnull @c__1, ptr noundef %gep1470, ptr noundef nonnull @c__1, ptr noundef nonnull %21, ptr noundef nonnull %22) #6
  br label %81

78:                                               ; preds = %.lr.ph
  %sext = shl i64 %indvars.iv, 33
  %79 = ashr exact i64 %sext, 29
  %gep = getelementptr i8, ptr %invariant.gep, i64 %79
  store double %72, ptr %gep, align 8, !tbaa !9
  %.idx = shl i64 %indvars.iv, 4
  %80 = getelementptr inbounds i8, ptr %31, i64 %.idx
  store double %68, ptr %80, align 8, !tbaa !9
  br label %81

81:                                               ; preds = %77, %78
  %.not982.not = icmp slt i64 %indvars.iv, %64
  br i1 %.not982.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %81, %61
  %82 = load i32, ptr %3, align 4, !tbaa !5
  %83 = icmp sgt i32 %82, 1
  br i1 %83, label %.lr.ph1043, label %.loopexit1029

.lr.ph1043:                                       ; preds = %._crit_edge
  store i32 %82, ptr %15, align 4, !tbaa !5
  %84 = load i32, ptr %2, align 4, !tbaa !5
  %85 = icmp sgt i32 %84, 1
  br i1 %85, label %.lr.ph1043.split.preheader, label %.loopexit1029

.lr.ph1043.split.preheader:                       ; preds = %.lr.ph1043
  %86 = sext i32 %27 to i64
  %87 = zext nneg i32 %82 to i64
  br label %.lr.ph1043.split

.lr.ph1043.splitthread-pre-split:                 ; preds = %._crit_edge1039
  %indvars.iv.next1275 = add nuw nsw i64 %indvars.iv1274, 1
  %.pr = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph1043.split

.lr.ph1043.split:                                 ; preds = %.lr.ph1043.splitthread-pre-split, %.lr.ph1043.split.preheader
  %88 = phi i32 [ %.pr, %.lr.ph1043.splitthread-pre-split ], [ %84, %.lr.ph1043.split.preheader ]
  %indvars.iv1274 = phi i64 [ %indvars.iv.next1275, %.lr.ph1043.splitthread-pre-split ], [ 1, %.lr.ph1043.split.preheader ]
  %.not1021.not1035 = icmp sgt i32 %88, 1
  br i1 %.not1021.not1035, label %.lr.ph1038, label %._crit_edge1039

.lr.ph1038:                                       ; preds = %.lr.ph1043.split
  %89 = mul nsw i64 %indvars.iv1274, %86
  %wide.trip.count = zext nneg i32 %88 to i64
  %invariant.gep1471 = getelementptr %struct.doublecomplex, ptr %29, i64 %89
  %invariant.gep1473 = getelementptr %struct.doublecomplex, ptr %29, i64 %89
  br label %90

90:                                               ; preds = %.lr.ph1038, %90
  %indvars.iv1271 = phi i64 [ 1, %.lr.ph1038 ], [ %indvars.iv.next1272, %90 ]
  %sext1462 = shl i64 %indvars.iv1271, 33
  %91 = ashr exact i64 %sext1462, 29
  %gep1034 = getelementptr i8, ptr %invariant.gep, i64 %91
  %92 = load double, ptr %gep1034, align 8, !tbaa !9
  store double %92, ptr %21, align 8, !tbaa !9
  %.idx1463 = shl i64 %indvars.iv1271, 4
  %93 = getelementptr inbounds i8, ptr %31, i64 %.idx1463
  %94 = load double, ptr %93, align 8, !tbaa !9
  store double %94, ptr %22, align 8, !tbaa !9
  %gep1472 = getelementptr %struct.doublecomplex, ptr %invariant.gep1471, i64 %indvars.iv1271
  %indvars.iv.next1272 = add nuw nsw i64 %indvars.iv1271, 1
  %gep1474 = getelementptr %struct.doublecomplex, ptr %invariant.gep1473, i64 %indvars.iv.next1272
  call void @zdrot_(ptr noundef nonnull @c__1, ptr noundef %gep1472, ptr noundef nonnull @c__1, ptr noundef %gep1474, ptr noundef nonnull @c__1, ptr noundef nonnull %21, ptr noundef nonnull %22) #6
  %exitcond.not = icmp eq i64 %indvars.iv.next1272, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge1039, label %90, !llvm.loop !14

._crit_edge1039:                                  ; preds = %90, %.lr.ph1043.split
  %.not983.not = icmp ult i64 %indvars.iv1274, %87
  br i1 %.not983.not, label %.lr.ph1043.splitthread-pre-split, label %.loopexit1029, !llvm.loop !15

.loopexit1029:                                    ; preds = %._crit_edge1039, %.lr.ph1043, %._crit_edge, %58
  %95 = load i32, ptr %2, align 4, !tbaa !5
  %96 = add nsw i32 %95, -1
  store i32 %96, ptr %24, align 4, !tbaa !5
  %97 = call double @dlanst_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef %4, ptr noundef %5) #6
  store double %97, ptr %23, align 8, !tbaa !9
  %98 = fcmp oeq double %97, 0.000000e+00
  br i1 %98, label %99, label %100

99:                                               ; preds = %.loopexit1029
  call void @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) #6
  br label %.loopexit1027

100:                                              ; preds = %.loopexit1029
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, 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) #6
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull @c_b10, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %24, ptr noundef nonnull %13) #6
  %101 = load i32, ptr %2, align 4, !tbaa !5
  %102 = load i32, ptr %1, align 4, !tbaa !5
  %.not984 = icmp sgt i32 %101, %102
  br i1 %.not984, label %363, label %103

103:                                              ; preds = %100
  %104 = mul nsw i32 %101, %101
  %105 = add nuw nsw i32 %104, 1
  %106 = add nuw nsw i32 %105, %104
  %107 = load i32, ptr %3, align 4, !tbaa !5
  %108 = mul nsw i32 %107, %101
  %109 = add nsw i32 %108, %106
  %110 = add nsw i32 %109, %108
  call void @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) #6
  %111 = zext nneg i32 %105 to i64
  %112 = getelementptr inbounds double, ptr %31, i64 %111
  call void @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 nonnull %112, ptr noundef nonnull %2) #6
  %113 = zext nneg i32 %106 to i64
  %114 = getelementptr inbounds double, ptr %31, i64 %113
  call void @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 nonnull %112, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %114, ptr noundef nonnull @c__1, ptr noundef nonnull %114, ptr noundef nonnull %13) #6
  %115 = load i32, ptr %13, align 4, !tbaa !5
  %.not1007 = icmp eq i32 %115, 0
  br i1 %.not1007, label %116, label %.loopexit1027

116:                                              ; preds = %103
  %117 = add nsw i32 %110, -1
  %118 = load i32, ptr %3, align 4, !tbaa !5
  %.not10081050 = icmp slt i32 %118, 1
  br i1 %.not10081050, label %._crit_edge1055, label %.lr.ph1054

.lr.ph1054:                                       ; preds = %116
  %119 = load i32, ptr %2, align 4, !tbaa !5
  %.not10201044 = icmp slt i32 %119, 1
  br i1 %.not10201044, label %._crit_edge1055, label %.lr.ph1048.preheader

.lr.ph1048.preheader:                             ; preds = %.lr.ph1054
  %120 = add nuw i32 %119, 1
  %121 = sext i32 %27 to i64
  %122 = add nuw i32 %118, 1
  %wide.trip.count1289 = zext i32 %122 to i64
  %wide.trip.count1284 = zext i32 %120 to i64
  %123 = shl nuw nsw i64 %wide.trip.count1284, 3
  %124 = getelementptr i8, ptr %11, i64 %123
  %scevgep1507 = getelementptr i8, ptr %124, i64 -8
  %125 = shl nsw i64 %121, 4
  %126 = shl nsw i64 %28, 4
  %127 = getelementptr i8, ptr %6, i64 %125
  %128 = getelementptr i8, ptr %127, i64 %126
  %scevgep1509 = getelementptr i8, ptr %128, i64 16
  %129 = shl nuw nsw i64 %wide.trip.count1289, 4
  %130 = add nsw i64 %129, -16
  %131 = mul i64 %130, %121
  %132 = shl nuw nsw i64 %wide.trip.count1284, 4
  %133 = getelementptr i8, ptr %6, i64 %131
  %134 = getelementptr i8, ptr %133, i64 %126
  %135 = getelementptr i8, ptr %134, i64 %132
  %scevgep1510 = getelementptr i8, ptr %135, i64 -8
  %136 = zext nneg i32 %119 to i64
  %137 = zext nneg i32 %119 to i64
  %min.iters.check = icmp ult i32 %119, 7
  %stride.check = icmp slt i32 %27, 0
  %n.mod.vf = and i64 %136, 3
  %138 = icmp eq i64 %n.mod.vf, 0
  %139 = select i1 %138, i64 4, i64 %n.mod.vf
  %n.vec = sub nsw i64 %136, %139
  %ind.end = add nsw i64 %n.vec, 1
  %invariant.gep1808 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1812 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1816 = getelementptr i8, ptr %11, i64 24
  br label %.lr.ph1048

.lr.ph1048:                                       ; preds = %.lr.ph1048.preheader, %._crit_edge1049
  %indvars.iv1286 = phi i64 [ 1, %.lr.ph1048.preheader ], [ %indvars.iv.next1287, %._crit_edge1049 ]
  %.19351051 = phi i32 [ %117, %.lr.ph1048.preheader ], [ %169, %._crit_edge1049 ]
  %140 = mul nsw i64 %indvars.iv1286, %121
  %141 = sext i32 %.19351051 to i64
  %invariant.gep1475 = getelementptr %struct.doublecomplex, ptr %29, i64 %140
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1048
  %142 = shl nsw i64 %141, 3
  %scevgep = getelementptr i8, ptr %11, i64 %142
  %scevgep1508 = getelementptr i8, ptr %scevgep1507, i64 %142
  %bound0 = icmp ult ptr %scevgep, %scevgep1510
  %bound1 = icmp ult ptr %scevgep1509, %scevgep1508
  %found.conflict = and i1 %bound0, %bound1
  %143 = or i1 %found.conflict, %stride.check
  br i1 %143, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %ind.end1511 = add nsw i64 %n.vec, %141
  %invariant.gep1802 = getelementptr i8, ptr %invariant.gep1475, i64 64
  %invariant.gep1804 = getelementptr double, ptr %11, i64 %141
  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
  %144 = or disjoint i64 %index, 2
  %145 = or disjoint i64 %index, 3
  %146 = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %offset.idx
  %147 = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %144
  %148 = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %145
  %gep1803 = getelementptr %struct.doublecomplex, ptr %invariant.gep1802, i64 %index
  %149 = load double, ptr %146, align 8, !tbaa !17, !alias.scope !19
  %150 = load double, ptr %147, 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 = load double, ptr %148, align 8, !tbaa !17, !alias.scope !19
  %154 = load double, ptr %gep1803, align 8, !tbaa !17, !alias.scope !19
  %155 = insertelement <2 x double> poison, double %153, i64 0
  %156 = insertelement <2 x double> %155, double %154, i64 1
  %gep1805 = getelementptr double, ptr %invariant.gep1804, i64 %index
  %157 = getelementptr i8, ptr %gep1805, i64 16
  store <2 x double> %152, ptr %gep1805, align 8, !tbaa !9, !alias.scope !22, !noalias !19
  store <2 x double> %156, ptr %157, align 8, !tbaa !9, !alias.scope !22, !noalias !19
  %index.next = add nuw i64 %index, 4
  %158 = icmp eq i64 %index.next, %n.vec
  br i1 %158, label %scalar.ph.preheader, label %vector.body, !llvm.loop !24

scalar.ph.preheader:                              ; preds = %vector.body, %vector.memcheck, %.lr.ph1048
  %indvars.iv1279.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph1048 ], [ %ind.end, %vector.body ]
  %indvars.iv1277.ph = phi i64 [ %141, %vector.memcheck ], [ %141, %.lr.ph1048 ], [ %ind.end1511, %vector.body ]
  %159 = sub nsw i64 %wide.trip.count1284, %indvars.iv1279.ph
  %160 = sub nsw i64 %137, %indvars.iv1279.ph
  %xtraiter = and i64 %159, 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
  %indvars.iv1279.prol = phi i64 [ %indvars.iv.next1280.prol, %scalar.ph.prol ], [ %indvars.iv1279.ph, %scalar.ph.preheader ]
  %indvars.iv1277.prol = phi i64 [ %indvars.iv.next1278.prol, %scalar.ph.prol ], [ %indvars.iv1277.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %indvars.iv.next1278.prol = add nsw i64 %indvars.iv1277.prol, 1
  %gep1476.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %indvars.iv1279.prol
  %161 = load double, ptr %gep1476.prol, align 8, !tbaa !17
  %162 = getelementptr double, ptr %11, i64 %indvars.iv1277.prol
  store double %161, ptr %162, align 8, !tbaa !9
  %indvars.iv.next1280.prol = add nuw nsw i64 %indvars.iv1279.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
  %indvars.iv.next1278.lcssa.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %indvars.iv.next1278.prol, %scalar.ph.prol ]
  %indvars.iv1279.unr = phi i64 [ %indvars.iv1279.ph, %scalar.ph.preheader ], [ %indvars.iv.next1280.prol, %scalar.ph.prol ]
  %indvars.iv1277.unr = phi i64 [ %indvars.iv1277.ph, %scalar.ph.preheader ], [ %indvars.iv.next1278.prol, %scalar.ph.prol ]
  %163 = icmp ult i64 %160, 3
  br i1 %163, label %._crit_edge1049, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep1806 = getelementptr i8, ptr %invariant.gep1475, i64 16
  %invariant.gep1810 = getelementptr i8, ptr %invariant.gep1475, i64 32
  %invariant.gep1814 = getelementptr i8, ptr %invariant.gep1475, i64 48
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv1279 = phi i64 [ %indvars.iv1279.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next1280.3, %scalar.ph ]
  %indvars.iv1277 = phi i64 [ %indvars.iv1277.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next1278.3, %scalar.ph ]
  %gep1476 = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %indvars.iv1279
  %164 = load double, ptr %gep1476, align 8, !tbaa !17
  %165 = getelementptr double, ptr %11, i64 %indvars.iv1277
  store double %164, ptr %165, align 8, !tbaa !9
  %gep1807 = getelementptr %struct.doublecomplex, ptr %invariant.gep1806, i64 %indvars.iv1279
  %166 = load double, ptr %gep1807, align 8, !tbaa !17
  %gep1809 = getelementptr double, ptr %invariant.gep1808, i64 %indvars.iv1277
  store double %166, ptr %gep1809, align 8, !tbaa !9
  %gep1811 = getelementptr %struct.doublecomplex, ptr %invariant.gep1810, i64 %indvars.iv1279
  %167 = load double, ptr %gep1811, align 8, !tbaa !17
  %gep1813 = getelementptr double, ptr %invariant.gep1812, i64 %indvars.iv1277
  store double %167, ptr %gep1813, align 8, !tbaa !9
  %indvars.iv.next1278.3 = add nsw i64 %indvars.iv1277, 4
  %gep1815 = getelementptr %struct.doublecomplex, ptr %invariant.gep1814, i64 %indvars.iv1279
  %168 = load double, ptr %gep1815, align 8, !tbaa !17
  %gep1817 = getelementptr double, ptr %invariant.gep1816, i64 %indvars.iv1277
  store double %168, ptr %gep1817, align 8, !tbaa !9
  %indvars.iv.next1280.3 = add nuw nsw i64 %indvars.iv1279, 4
  %exitcond1285.not.3 = icmp eq i64 %indvars.iv.next1280.3, %wide.trip.count1284
  br i1 %exitcond1285.not.3, label %._crit_edge1049, label %scalar.ph, !llvm.loop !29

._crit_edge1049:                                  ; preds = %scalar.ph, %scalar.ph.prol.loopexit
  %indvars.iv.next1278.lcssa = phi i64 [ %indvars.iv.next1278.lcssa.unr, %scalar.ph.prol.loopexit ], [ %indvars.iv.next1278.3, %scalar.ph ]
  %169 = trunc nsw i64 %indvars.iv.next1278.lcssa to i32
  %indvars.iv.next1287 = add nuw nsw i64 %indvars.iv1286, 1
  %exitcond1290.not = icmp eq i64 %indvars.iv.next1287, %wide.trip.count1289
  br i1 %exitcond1290.not, label %._crit_edge1055, label %.lr.ph1048, !llvm.loop !30

._crit_edge1055:                                  ; preds = %._crit_edge1049, %.lr.ph1054, %116
  %170 = sext i32 %110 to i64
  %171 = getelementptr inbounds double, ptr %31, i64 %170
  call void @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 %171, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %114, ptr noundef nonnull %2) #6
  %172 = load i32, ptr %3, align 4, !tbaa !5
  %.not10091063 = icmp slt i32 %172, 1
  br i1 %.not10091063, label %._crit_edge1068, label %.lr.ph1067

.lr.ph1067:                                       ; preds = %._crit_edge1055
  %173 = load i32, ptr %2, align 4, !tbaa !5
  %174 = icmp slt i32 %173, 1
  br i1 %174, label %._crit_edge1068, label %.lr.ph1067.split.preheader

.lr.ph1067.split.preheader:                       ; preds = %.lr.ph1067
  %175 = sext i32 %27 to i64
  %176 = zext nneg i32 %172 to i64
  br label %.lr.ph1067.split

.lr.ph1067.splitthread-pre-split:                 ; preds = %._crit_edge1061
  %indvars.iv.next1301 = add nuw nsw i64 %indvars.iv1300, 1
  %.pr1465 = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph1067.split

.lr.ph1067.split:                                 ; preds = %.lr.ph1067.splitthread-pre-split, %.lr.ph1067.split.preheader
  %177 = phi i32 [ %.pr1465, %.lr.ph1067.splitthread-pre-split ], [ %173, %.lr.ph1067.split.preheader ]
  %indvars.iv1300 = phi i64 [ %indvars.iv.next1301, %.lr.ph1067.splitthread-pre-split ], [ 1, %.lr.ph1067.split.preheader ]
  %.39371064 = phi i32 [ %.4938.lcssa, %.lr.ph1067.splitthread-pre-split ], [ %117, %.lr.ph1067.split.preheader ]
  %.not10191056 = icmp slt i32 %177, 1
  br i1 %.not10191056, label %._crit_edge1061, label %.lr.ph1060

.lr.ph1060:                                       ; preds = %.lr.ph1067.split
  %178 = mul nsw i64 %indvars.iv1300, %175
  %179 = sext i32 %.39371064 to i64
  %180 = add nuw i32 %177, 1
  %wide.trip.count1298 = zext i32 %180 to i64
  %invariant.gep1477 = getelementptr %struct.doublecomplex, ptr %29, i64 %178
  br label %181

181:                                              ; preds = %.lr.ph1060, %181
  %indvars.iv1293 = phi i64 [ 1, %.lr.ph1060 ], [ %indvars.iv.next1294, %181 ]
  %indvars.iv1291 = phi i64 [ %179, %.lr.ph1060 ], [ %indvars.iv.next1292, %181 ]
  %indvars.iv.next1292 = add nsw i64 %indvars.iv1291, 1
  %gep1478 = getelementptr %struct.doublecomplex, ptr %invariant.gep1477, i64 %indvars.iv1293
  %182 = call { double, double } @Cd(ptr noundef %gep1478)
  %183 = extractvalue { double, double } %182, 1
  %184 = getelementptr double, ptr %11, i64 %indvars.iv1291
  store double %183, ptr %184, align 8, !tbaa !9
  %indvars.iv.next1294 = add nuw nsw i64 %indvars.iv1293, 1
  %exitcond1299.not = icmp eq i64 %indvars.iv.next1294, %wide.trip.count1298
  br i1 %exitcond1299.not, label %._crit_edge1061.loopexit, label %181, !llvm.loop !31

._crit_edge1061.loopexit:                         ; preds = %181
  %185 = trunc nsw i64 %indvars.iv.next1292 to i32
  br label %._crit_edge1061

._crit_edge1061:                                  ; preds = %._crit_edge1061.loopexit, %.lr.ph1067.split
  %.4938.lcssa = phi i32 [ %.39371064, %.lr.ph1067.split ], [ %185, %._crit_edge1061.loopexit ]
  %.not1009.not = icmp ult i64 %indvars.iv1300, %176
  br i1 %.not1009.not, label %.lr.ph1067.splitthread-pre-split, label %._crit_edge1068, !llvm.loop !32

._crit_edge1068:                                  ; preds = %._crit_edge1061, %.lr.ph1067, %._crit_edge1055
  %186 = sext i32 %109 to i64
  %187 = getelementptr inbounds double, ptr %31, i64 %186
  call void @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 %171, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %187, ptr noundef nonnull %2) #6
  %188 = shl nuw i32 %104, 1
  %189 = add nsw i32 %109, -1
  %190 = load i32, ptr %3, align 4, !tbaa !5
  %.not10101078 = icmp slt i32 %190, 1
  br i1 %.not10101078, label %._crit_edge1084, label %.lr.ph1083

.lr.ph1083:                                       ; preds = %._crit_edge1068
  %191 = load i32, ptr %2, align 4, !tbaa !5
  %.not10181069 = icmp slt i32 %191, 1
  br i1 %.not10181069, label %._crit_edge1084, label %.lr.ph1074.preheader

.lr.ph1074.preheader:                             ; preds = %.lr.ph1083
  %192 = add nuw i32 %191, 1
  %193 = sext i32 %27 to i64
  %194 = add nuw i32 %190, 1
  %wide.trip.count1319 = zext i32 %194 to i64
  %wide.trip.count1314 = zext i32 %192 to i64
  %195 = shl nsw i64 %193, 4
  %196 = shl nsw i64 %28, 4
  %197 = getelementptr i8, ptr %6, i64 %195
  %198 = getelementptr i8, ptr %197, i64 %196
  %scevgep1515 = getelementptr i8, ptr %198, i64 16
  %199 = shl nuw nsw i64 %wide.trip.count1319, 4
  %200 = add nsw i64 %199, -16
  %201 = mul i64 %200, %193
  %202 = shl nuw nsw i64 %wide.trip.count1314, 4
  %203 = getelementptr i8, ptr %6, i64 %201
  %204 = getelementptr i8, ptr %203, i64 %196
  %scevgep1516 = getelementptr i8, ptr %204, i64 %202
  %205 = shl nuw nsw i64 %wide.trip.count1314, 3
  %206 = add nsw i64 %205, -8
  %scevgep1518 = getelementptr i8, ptr %11, i64 %206
  %scevgep1521 = getelementptr i8, ptr %11, i64 %206
  %207 = zext nneg i32 %191 to i64
  %208 = zext nneg i32 %191 to i64
  %min.iters.check1533 = icmp ult i32 %191, 8
  %stride.check1530 = icmp slt i32 %27, 0
  %n.vec1536 = and i64 %207, 2147483646
  %ind.end1537 = or i64 %207, 1
  %cmp.n = icmp eq i64 %n.vec1536, %207
  %209 = and i32 %191, 1
  %lcmp.mod1787.not = icmp eq i32 %209, 0
  %invariant.gep1822 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1824 = getelementptr i8, ptr %11, i64 8
  br label %.lr.ph1074

.lr.ph1074:                                       ; preds = %.lr.ph1074.preheader, %._crit_edge1075
  %indvars.iv1316 = phi i64 [ 1, %.lr.ph1074.preheader ], [ %indvars.iv.next1317, %._crit_edge1075 ]
  %.09111081 = phi i32 [ %188, %.lr.ph1074.preheader ], [ %234, %._crit_edge1075 ]
  %.09131080 = phi i32 [ %189, %.lr.ph1074.preheader ], [ %233, %._crit_edge1075 ]
  %210 = mul nsw i64 %indvars.iv1316, %193
  %211 = sext i32 %.09111081 to i64
  %212 = sext i32 %.09131080 to i64
  %invariant.gep1479 = getelementptr %struct.doublecomplex, ptr %29, i64 %210
  br i1 %min.iters.check1533, label %scalar.ph1532.preheader, label %vector.memcheck1514

vector.memcheck1514:                              ; preds = %.lr.ph1074
  %213 = shl nsw i64 %212, 3
  %scevgep1517 = getelementptr i8, ptr %11, i64 %213
  %scevgep1519 = getelementptr i8, ptr %scevgep1518, i64 %213
  %214 = shl nsw i64 %211, 3
  %scevgep1520 = getelementptr i8, ptr %11, i64 %214
  %scevgep1522 = getelementptr i8, ptr %scevgep1521, i64 %214
  %bound01523 = icmp ult ptr %scevgep1515, %scevgep1519
  %bound11524 = icmp ult ptr %scevgep1517, %scevgep1516
  %found.conflict1525 = and i1 %bound01523, %bound11524
  %bound01527 = icmp ult ptr %scevgep1515, %scevgep1522
  %bound11528 = icmp ult ptr %scevgep1520, %scevgep1516
  %found.conflict1529 = and i1 %bound01527, %bound11528
  %215 = or i1 %found.conflict1529, %stride.check1530
  %conflict.rdx = or i1 %found.conflict1525, %215
  br i1 %conflict.rdx, label %scalar.ph1532.preheader, label %vector.ph1534

vector.ph1534:                                    ; preds = %vector.memcheck1514
  %ind.end1539 = add nsw i64 %n.vec1536, %212
  %ind.end1541 = add nsw i64 %n.vec1536, %211
  %invariant.gep1818 = getelementptr double, ptr %11, i64 %211
  %invariant.gep1820 = getelementptr double, ptr %11, i64 %212
  br label %vector.body1543

vector.body1543:                                  ; preds = %vector.body1543, %vector.ph1534
  %index1544 = phi i64 [ 0, %vector.ph1534 ], [ %index.next1549, %vector.body1543 ]
  %offset.idx1545 = or disjoint i64 %index1544, 1
  %gep1819 = getelementptr double, ptr %invariant.gep1818, i64 %index1544
  %wide.load = load <2 x double>, ptr %gep1819, align 8, !tbaa !9, !alias.scope !33
  %gep1821 = getelementptr double, ptr %invariant.gep1820, i64 %index1544
  %wide.load1548 = load <2 x double>, ptr %gep1821, align 8, !tbaa !9, !alias.scope !36
  %216 = getelementptr %struct.doublecomplex, ptr %invariant.gep1479, i64 %offset.idx1545
  %interleaved.vec = shufflevector <2 x double> %wide.load, <2 x double> %wide.load1548, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %216, align 8, !tbaa !9
  %index.next1549 = add nuw i64 %index1544, 2
  %217 = icmp eq i64 %index.next1549, %n.vec1536
  br i1 %217, label %middle.block1531, label %vector.body1543, !llvm.loop !38

middle.block1531:                                 ; preds = %vector.body1543
  br i1 %cmp.n, label %._crit_edge1075, label %scalar.ph1532.preheader

scalar.ph1532.preheader:                          ; preds = %middle.block1531, %vector.memcheck1514, %.lr.ph1074
  %indvars.iv1307.ph = phi i64 [ 1, %vector.memcheck1514 ], [ 1, %.lr.ph1074 ], [ %ind.end1537, %middle.block1531 ]
  %indvars.iv1305.ph = phi i64 [ %212, %vector.memcheck1514 ], [ %212, %.lr.ph1074 ], [ %ind.end1539, %middle.block1531 ]
  %indvars.iv1303.ph = phi i64 [ %211, %vector.memcheck1514 ], [ %211, %.lr.ph1074 ], [ %ind.end1541, %middle.block1531 ]
  br i1 %lcmp.mod1787.not, label %scalar.ph1532.prol.loopexit, label %scalar.ph1532.prol

scalar.ph1532.prol:                               ; preds = %scalar.ph1532.preheader
  %indvars.iv.next1304.prol = add nsw i64 %indvars.iv1303.ph, 1
  %indvars.iv.next1306.prol = add nsw i64 %indvars.iv1305.ph, 1
  %218 = getelementptr double, ptr %11, i64 %indvars.iv1303.ph
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = getelementptr double, ptr %11, i64 %indvars.iv1305.ph
  %221 = load double, ptr %220, align 8, !tbaa !9
  %gep1480.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1479, i64 %indvars.iv1307.ph
  store double %219, ptr %gep1480.prol, align 8, !tbaa !17
  %222 = getelementptr inbounds i8, ptr %gep1480.prol, i64 8
  store double %221, ptr %222, align 8, !tbaa !39
  %indvars.iv.next1308.prol = add nuw nsw i64 %indvars.iv1307.ph, 1
  br label %scalar.ph1532.prol.loopexit

scalar.ph1532.prol.loopexit:                      ; preds = %scalar.ph1532.prol, %scalar.ph1532.preheader
  %indvars.iv.next1304.lcssa1785.unr = phi i64 [ poison, %scalar.ph1532.preheader ], [ %indvars.iv.next1304.prol, %scalar.ph1532.prol ]
  %indvars.iv.next1306.lcssa1784.unr = phi i64 [ poison, %scalar.ph1532.preheader ], [ %indvars.iv.next1306.prol, %scalar.ph1532.prol ]
  %indvars.iv1307.unr = phi i64 [ %indvars.iv1307.ph, %scalar.ph1532.preheader ], [ %indvars.iv.next1308.prol, %scalar.ph1532.prol ]
  %indvars.iv1305.unr = phi i64 [ %indvars.iv1305.ph, %scalar.ph1532.preheader ], [ %indvars.iv.next1306.prol, %scalar.ph1532.prol ]
  %indvars.iv1303.unr = phi i64 [ %indvars.iv1303.ph, %scalar.ph1532.preheader ], [ %indvars.iv.next1304.prol, %scalar.ph1532.prol ]
  %223 = icmp eq i64 %indvars.iv1307.ph, %208
  br i1 %223, label %._crit_edge1075, label %scalar.ph1532

scalar.ph1532:                                    ; preds = %scalar.ph1532.prol.loopexit, %scalar.ph1532
  %indvars.iv1307 = phi i64 [ %indvars.iv.next1308.1, %scalar.ph1532 ], [ %indvars.iv1307.unr, %scalar.ph1532.prol.loopexit ]
  %indvars.iv1305 = phi i64 [ %indvars.iv.next1306.1, %scalar.ph1532 ], [ %indvars.iv1305.unr, %scalar.ph1532.prol.loopexit ]
  %indvars.iv1303 = phi i64 [ %indvars.iv.next1304.1, %scalar.ph1532 ], [ %indvars.iv1303.unr, %scalar.ph1532.prol.loopexit ]
  %224 = getelementptr double, ptr %11, i64 %indvars.iv1303
  %225 = load double, ptr %224, align 8, !tbaa !9
  %226 = getelementptr double, ptr %11, i64 %indvars.iv1305
  %227 = load double, ptr %226, align 8, !tbaa !9
  %gep1480 = getelementptr %struct.doublecomplex, ptr %invariant.gep1479, i64 %indvars.iv1307
  store double %225, ptr %gep1480, align 8, !tbaa !17
  %228 = getelementptr inbounds i8, ptr %gep1480, i64 8
  store double %227, ptr %228, align 8, !tbaa !39
  %indvars.iv.next1304.1 = add nsw i64 %indvars.iv1303, 2
  %indvars.iv.next1306.1 = add nsw i64 %indvars.iv1305, 2
  %gep1823 = getelementptr double, ptr %invariant.gep1822, i64 %indvars.iv1303
  %229 = load double, ptr %gep1823, align 8, !tbaa !9
  %gep1825 = getelementptr double, ptr %invariant.gep1824, i64 %indvars.iv1305
  %230 = load double, ptr %gep1825, align 8, !tbaa !9
  %231 = getelementptr %struct.doublecomplex, ptr %invariant.gep1479, i64 %indvars.iv1307
  %gep1480.1 = getelementptr i8, ptr %231, i64 16
  store double %229, ptr %gep1480.1, align 8, !tbaa !17
  %232 = getelementptr i8, ptr %231, i64 24
  store double %230, ptr %232, align 8, !tbaa !39
  %indvars.iv.next1308.1 = add nuw nsw i64 %indvars.iv1307, 2
  %exitcond1315.not.1 = icmp eq i64 %indvars.iv.next1308.1, %wide.trip.count1314
  br i1 %exitcond1315.not.1, label %._crit_edge1075, label %scalar.ph1532, !llvm.loop !40

._crit_edge1075:                                  ; preds = %scalar.ph1532.prol.loopexit, %scalar.ph1532, %middle.block1531
  %indvars.iv.next1304.lcssa = phi i64 [ %ind.end1541, %middle.block1531 ], [ %indvars.iv.next1304.lcssa1785.unr, %scalar.ph1532.prol.loopexit ], [ %indvars.iv.next1304.1, %scalar.ph1532 ]
  %indvars.iv.next1306.lcssa = phi i64 [ %ind.end1539, %middle.block1531 ], [ %indvars.iv.next1306.lcssa1784.unr, %scalar.ph1532.prol.loopexit ], [ %indvars.iv.next1306.1, %scalar.ph1532 ]
  %233 = trunc nsw i64 %indvars.iv.next1306.lcssa to i32
  %234 = trunc nsw i64 %indvars.iv.next1304.lcssa to i32
  %indvars.iv.next1317 = add nuw nsw i64 %indvars.iv1316, 1
  %exitcond1320.not = icmp eq i64 %indvars.iv.next1317, %wide.trip.count1319
  br i1 %exitcond1320.not, label %._crit_edge1084, label %.lr.ph1074, !llvm.loop !41

._crit_edge1084:                                  ; preds = %._crit_edge1075, %.lr.ph1083, %._crit_edge1068
  %235 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds double, ptr %25, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !9
  %239 = fcmp oge double %238, 0.000000e+00
  %240 = fneg double %238
  %241 = select i1 %239, double %238, double %240
  %242 = fmul double %.0923, %241
  %243 = load i32, ptr %2, align 4, !tbaa !5
  %.not10111085 = icmp slt i32 %243, 1
  br i1 %.not10111085, label %._crit_edge1089, label %.lr.ph1088.preheader

.lr.ph1088.preheader:                             ; preds = %._crit_edge1084
  %244 = sext i32 %27 to i64
  %invariant.gep1481 = getelementptr %struct.doublecomplex, ptr %29, i64 %244
  %invariant.gep1483 = getelementptr %struct.doublecomplex, ptr %29, i64 %244
  %245 = zext nneg i32 %243 to i64
  br label %.lr.ph1088

.lr.ph1088:                                       ; preds = %.lr.ph1088.preheader, %253
  %indvars.iv1321 = phi i64 [ 1, %.lr.ph1088.preheader ], [ %indvars.iv.next1322, %253 ]
  %246 = getelementptr inbounds double, ptr %25, i64 %indvars.iv1321
  %247 = load double, ptr %246, align 8, !tbaa !9
  %248 = fcmp ugt double %247, %242
  br i1 %248, label %250, label %249

249:                                              ; preds = %.lr.ph1088
  %gep1482 = getelementptr %struct.doublecomplex, ptr %invariant.gep1481, i64 %indvars.iv1321
  call void @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 %gep1482, ptr noundef nonnull %7) #6
  br label %253

250:                                              ; preds = %.lr.ph1088
  %gep1484 = getelementptr %struct.doublecomplex, ptr %invariant.gep1483, i64 %indvars.iv1321
  call void @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %246, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep1484, ptr noundef nonnull %7, ptr noundef nonnull %13) #6
  %251 = load i32, ptr %9, align 4, !tbaa !5
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %9, align 4, !tbaa !5
  br label %253

253:                                              ; preds = %249, %250
  %indvars.iv.next1322 = add nuw nsw i64 %indvars.iv1321, 1
  %.not1011.not = icmp ult i64 %indvars.iv1321, %245
  br i1 %.not1011.not, label %.lr.ph1088, label %._crit_edge1089, !llvm.loop !42

._crit_edge1089:                                  ; preds = %253, %._crit_edge1084
  %254 = load i32, ptr %3, align 4, !tbaa !5
  %.not10121097 = icmp slt i32 %254, 1
  br i1 %.not10121097, label %._crit_edge1102, label %.lr.ph1101

.lr.ph1101:                                       ; preds = %._crit_edge1089
  %255 = load i32, ptr %2, align 4, !tbaa !5
  %.not10171090 = icmp slt i32 %255, 1
  br i1 %.not10171090, label %._crit_edge1102, label %.lr.ph1094.preheader

.lr.ph1094.preheader:                             ; preds = %.lr.ph1101
  %256 = add nuw i32 %255, 1
  %257 = sext i32 %27 to i64
  %258 = add nuw i32 %254, 1
  %wide.trip.count1336 = zext i32 %258 to i64
  %wide.trip.count1331 = zext i32 %256 to i64
  %259 = shl nuw nsw i64 %wide.trip.count1331, 3
  %260 = getelementptr i8, ptr %11, i64 %259
  %scevgep1552 = getelementptr i8, ptr %260, i64 -8
  %261 = shl nsw i64 %257, 4
  %262 = shl nsw i64 %28, 4
  %263 = getelementptr i8, ptr %6, i64 %261
  %264 = getelementptr i8, ptr %263, i64 %262
  %scevgep1554 = getelementptr i8, ptr %264, i64 16
  %265 = shl nuw nsw i64 %wide.trip.count1336, 4
  %266 = add nsw i64 %265, -16
  %267 = mul i64 %266, %257
  %268 = shl nuw nsw i64 %wide.trip.count1331, 4
  %269 = getelementptr i8, ptr %6, i64 %267
  %270 = getelementptr i8, ptr %269, i64 %262
  %271 = getelementptr i8, ptr %270, i64 %268
  %scevgep1555 = getelementptr i8, ptr %271, i64 -8
  %272 = zext nneg i32 %255 to i64
  %273 = zext nneg i32 %255 to i64
  %min.iters.check1562 = icmp ult i32 %255, 7
  %stride.check1559 = icmp slt i32 %27, 0
  %n.mod.vf1564 = and i64 %272, 3
  %274 = icmp eq i64 %n.mod.vf1564, 0
  %275 = select i1 %274, i64 4, i64 %n.mod.vf1564
  %n.vec1565 = sub nsw i64 %272, %275
  %ind.end1566 = add nsw i64 %n.vec1565, 1
  %invariant.gep1832 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1836 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1840 = getelementptr i8, ptr %11, i64 24
  br label %.lr.ph1094

.lr.ph1094:                                       ; preds = %.lr.ph1094.preheader, %._crit_edge1095
  %indvars.iv1333 = phi i64 [ 1, %.lr.ph1094.preheader ], [ %indvars.iv.next1334, %._crit_edge1095 ]
  %.59391098 = phi i32 [ %117, %.lr.ph1094.preheader ], [ %305, %._crit_edge1095 ]
  %276 = mul nsw i64 %indvars.iv1333, %257
  %277 = sext i32 %.59391098 to i64
  %invariant.gep1485 = getelementptr %struct.doublecomplex, ptr %29, i64 %276
  br i1 %min.iters.check1562, label %scalar.ph1561.preheader, label %vector.memcheck1550

vector.memcheck1550:                              ; preds = %.lr.ph1094
  %278 = shl nsw i64 %277, 3
  %scevgep1551 = getelementptr i8, ptr %11, i64 %278
  %scevgep1553 = getelementptr i8, ptr %scevgep1552, i64 %278
  %bound01556 = icmp ult ptr %scevgep1551, %scevgep1555
  %bound11557 = icmp ult ptr %scevgep1554, %scevgep1553
  %found.conflict1558 = and i1 %bound01556, %bound11557
  %279 = or i1 %found.conflict1558, %stride.check1559
  br i1 %279, label %scalar.ph1561.preheader, label %vector.ph1563

vector.ph1563:                                    ; preds = %vector.memcheck1550
  %ind.end1568 = add nsw i64 %n.vec1565, %277
  %invariant.gep1826 = getelementptr i8, ptr %invariant.gep1485, i64 64
  %invariant.gep1828 = getelementptr double, ptr %11, i64 %277
  br label %vector.body1570

vector.body1570:                                  ; preds = %vector.body1570, %vector.ph1563
  %index1571 = phi i64 [ 0, %vector.ph1563 ], [ %index.next1574, %vector.body1570 ]
  %offset.idx1572 = or disjoint i64 %index1571, 1
  %280 = or disjoint i64 %index1571, 2
  %281 = or disjoint i64 %index1571, 3
  %282 = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %offset.idx1572
  %283 = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %280
  %284 = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %281
  %gep1827 = getelementptr %struct.doublecomplex, ptr %invariant.gep1826, i64 %index1571
  %285 = load double, ptr %282, align 8, !tbaa !17, !alias.scope !43
  %286 = load double, ptr %283, align 8, !tbaa !17, !alias.scope !43
  %287 = insertelement <2 x double> poison, double %285, i64 0
  %288 = insertelement <2 x double> %287, double %286, i64 1
  %289 = load double, ptr %284, align 8, !tbaa !17, !alias.scope !43
  %290 = load double, ptr %gep1827, align 8, !tbaa !17, !alias.scope !43
  %291 = insertelement <2 x double> poison, double %289, i64 0
  %292 = insertelement <2 x double> %291, double %290, i64 1
  %gep1829 = getelementptr double, ptr %invariant.gep1828, i64 %index1571
  %293 = getelementptr i8, ptr %gep1829, i64 16
  store <2 x double> %288, ptr %gep1829, align 8, !tbaa !9, !alias.scope !46, !noalias !43
  store <2 x double> %292, ptr %293, align 8, !tbaa !9, !alias.scope !46, !noalias !43
  %index.next1574 = add nuw i64 %index1571, 4
  %294 = icmp eq i64 %index.next1574, %n.vec1565
  br i1 %294, label %scalar.ph1561.preheader, label %vector.body1570, !llvm.loop !48

scalar.ph1561.preheader:                          ; preds = %vector.body1570, %vector.memcheck1550, %.lr.ph1094
  %indvars.iv1326.ph = phi i64 [ 1, %vector.memcheck1550 ], [ 1, %.lr.ph1094 ], [ %ind.end1566, %vector.body1570 ]
  %indvars.iv1324.ph = phi i64 [ %277, %vector.memcheck1550 ], [ %277, %.lr.ph1094 ], [ %ind.end1568, %vector.body1570 ]
  %295 = sub nsw i64 %wide.trip.count1331, %indvars.iv1326.ph
  %296 = sub nsw i64 %273, %indvars.iv1326.ph
  %xtraiter1789 = and i64 %295, 3
  %lcmp.mod1790.not = icmp eq i64 %xtraiter1789, 0
  br i1 %lcmp.mod1790.not, label %scalar.ph1561.prol.loopexit, label %scalar.ph1561.prol

scalar.ph1561.prol:                               ; preds = %scalar.ph1561.preheader, %scalar.ph1561.prol
  %indvars.iv1326.prol = phi i64 [ %indvars.iv.next1327.prol, %scalar.ph1561.prol ], [ %indvars.iv1326.ph, %scalar.ph1561.preheader ]
  %indvars.iv1324.prol = phi i64 [ %indvars.iv.next1325.prol, %scalar.ph1561.prol ], [ %indvars.iv1324.ph, %scalar.ph1561.preheader ]
  %prol.iter1791 = phi i64 [ %prol.iter1791.next, %scalar.ph1561.prol ], [ 0, %scalar.ph1561.preheader ]
  %indvars.iv.next1325.prol = add nsw i64 %indvars.iv1324.prol, 1
  %gep1486.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %indvars.iv1326.prol
  %297 = load double, ptr %gep1486.prol, align 8, !tbaa !17
  %298 = getelementptr double, ptr %11, i64 %indvars.iv1324.prol
  store double %297, ptr %298, align 8, !tbaa !9
  %indvars.iv.next1327.prol = add nuw nsw i64 %indvars.iv1326.prol, 1
  %prol.iter1791.next = add i64 %prol.iter1791, 1
  %prol.iter1791.cmp.not = icmp eq i64 %prol.iter1791.next, %xtraiter1789
  br i1 %prol.iter1791.cmp.not, label %scalar.ph1561.prol.loopexit, label %scalar.ph1561.prol, !llvm.loop !49

scalar.ph1561.prol.loopexit:                      ; preds = %scalar.ph1561.prol, %scalar.ph1561.preheader
  %indvars.iv.next1325.lcssa.unr = phi i64 [ poison, %scalar.ph1561.preheader ], [ %indvars.iv.next1325.prol, %scalar.ph1561.prol ]
  %indvars.iv1326.unr = phi i64 [ %indvars.iv1326.ph, %scalar.ph1561.preheader ], [ %indvars.iv.next1327.prol, %scalar.ph1561.prol ]
  %indvars.iv1324.unr = phi i64 [ %indvars.iv1324.ph, %scalar.ph1561.preheader ], [ %indvars.iv.next1325.prol, %scalar.ph1561.prol ]
  %299 = icmp ult i64 %296, 3
  br i1 %299, label %._crit_edge1095, label %scalar.ph1561.preheader.new

scalar.ph1561.preheader.new:                      ; preds = %scalar.ph1561.prol.loopexit
  %invariant.gep1830 = getelementptr i8, ptr %invariant.gep1485, i64 16
  %invariant.gep1834 = getelementptr i8, ptr %invariant.gep1485, i64 32
  %invariant.gep1838 = getelementptr i8, ptr %invariant.gep1485, i64 48
  br label %scalar.ph1561

scalar.ph1561:                                    ; preds = %scalar.ph1561, %scalar.ph1561.preheader.new
  %indvars.iv1326 = phi i64 [ %indvars.iv1326.unr, %scalar.ph1561.preheader.new ], [ %indvars.iv.next1327.3, %scalar.ph1561 ]
  %indvars.iv1324 = phi i64 [ %indvars.iv1324.unr, %scalar.ph1561.preheader.new ], [ %indvars.iv.next1325.3, %scalar.ph1561 ]
  %gep1486 = getelementptr %struct.doublecomplex, ptr %invariant.gep1485, i64 %indvars.iv1326
  %300 = load double, ptr %gep1486, align 8, !tbaa !17
  %301 = getelementptr double, ptr %11, i64 %indvars.iv1324
  store double %300, ptr %301, align 8, !tbaa !9
  %gep1831 = getelementptr %struct.doublecomplex, ptr %invariant.gep1830, i64 %indvars.iv1326
  %302 = load double, ptr %gep1831, align 8, !tbaa !17
  %gep1833 = getelementptr double, ptr %invariant.gep1832, i64 %indvars.iv1324
  store double %302, ptr %gep1833, align 8, !tbaa !9
  %gep1835 = getelementptr %struct.doublecomplex, ptr %invariant.gep1834, i64 %indvars.iv1326
  %303 = load double, ptr %gep1835, align 8, !tbaa !17
  %gep1837 = getelementptr double, ptr %invariant.gep1836, i64 %indvars.iv1324
  store double %303, ptr %gep1837, align 8, !tbaa !9
  %indvars.iv.next1325.3 = add nsw i64 %indvars.iv1324, 4
  %gep1839 = getelementptr %struct.doublecomplex, ptr %invariant.gep1838, i64 %indvars.iv1326
  %304 = load double, ptr %gep1839, align 8, !tbaa !17
  %gep1841 = getelementptr double, ptr %invariant.gep1840, i64 %indvars.iv1324
  store double %304, ptr %gep1841, align 8, !tbaa !9
  %indvars.iv.next1327.3 = add nuw nsw i64 %indvars.iv1326, 4
  %exitcond1332.not.3 = icmp eq i64 %indvars.iv.next1327.3, %wide.trip.count1331
  br i1 %exitcond1332.not.3, label %._crit_edge1095, label %scalar.ph1561, !llvm.loop !50

._crit_edge1095:                                  ; preds = %scalar.ph1561, %scalar.ph1561.prol.loopexit
  %indvars.iv.next1325.lcssa = phi i64 [ %indvars.iv.next1325.lcssa.unr, %scalar.ph1561.prol.loopexit ], [ %indvars.iv.next1325.3, %scalar.ph1561 ]
  %305 = trunc nsw i64 %indvars.iv.next1325.lcssa to i32
  %indvars.iv.next1334 = add nuw nsw i64 %indvars.iv1333, 1
  %exitcond1337.not = icmp eq i64 %indvars.iv.next1334, %wide.trip.count1336
  br i1 %exitcond1337.not, label %._crit_edge1102, label %.lr.ph1094, !llvm.loop !51

._crit_edge1102:                                  ; preds = %._crit_edge1095, %.lr.ph1101, %._crit_edge1089
  call void @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 nonnull %112, ptr noundef nonnull %2, ptr noundef nonnull %171, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %114, ptr noundef nonnull %2) #6
  %306 = load i32, ptr %3, align 4, !tbaa !5
  %.not10131110 = icmp slt i32 %306, 1
  br i1 %.not10131110, label %._crit_edge1115, label %.lr.ph1114.preheader

.lr.ph1114.preheader:                             ; preds = %._crit_edge1102
  %307 = sext i32 %27 to i64
  %308 = zext nneg i32 %306 to i64
  br label %.lr.ph1114

.lr.ph1114:                                       ; preds = %.lr.ph1114.preheader, %._crit_edge1108
  %indvars.iv1347 = phi i64 [ 1, %.lr.ph1114.preheader ], [ %indvars.iv.next1348, %._crit_edge1108 ]
  %.79411111 = phi i32 [ %117, %.lr.ph1114.preheader ], [ %.8942.lcssa, %._crit_edge1108 ]
  %309 = load i32, ptr %2, align 4, !tbaa !5
  %.not10161103 = icmp slt i32 %309, 1
  br i1 %.not10161103, label %._crit_edge1108, label %.lr.ph1107

.lr.ph1107:                                       ; preds = %.lr.ph1114
  %310 = mul nsw i64 %indvars.iv1347, %307
  %311 = sext i32 %.79411111 to i64
  %312 = add nuw i32 %309, 1
  %wide.trip.count1345 = zext i32 %312 to i64
  %invariant.gep1487 = getelementptr %struct.doublecomplex, ptr %29, i64 %310
  br label %313

313:                                              ; preds = %.lr.ph1107, %313
  %indvars.iv1340 = phi i64 [ 1, %.lr.ph1107 ], [ %indvars.iv.next1341, %313 ]
  %indvars.iv1338 = phi i64 [ %311, %.lr.ph1107 ], [ %indvars.iv.next1339, %313 ]
  %indvars.iv.next1339 = add nsw i64 %indvars.iv1338, 1
  %gep1488 = getelementptr %struct.doublecomplex, ptr %invariant.gep1487, i64 %indvars.iv1340
  %314 = call { double, double } @Cd(ptr noundef %gep1488)
  %315 = extractvalue { double, double } %314, 1
  %316 = getelementptr double, ptr %11, i64 %indvars.iv1338
  store double %315, ptr %316, align 8, !tbaa !9
  %indvars.iv.next1341 = add nuw nsw i64 %indvars.iv1340, 1
  %exitcond1346.not = icmp eq i64 %indvars.iv.next1341, %wide.trip.count1345
  br i1 %exitcond1346.not, label %._crit_edge1108.loopexit, label %313, !llvm.loop !52

._crit_edge1108.loopexit:                         ; preds = %313
  %317 = trunc nsw i64 %indvars.iv.next1339 to i32
  br label %._crit_edge1108

._crit_edge1108:                                  ; preds = %._crit_edge1108.loopexit, %.lr.ph1114
  %.8942.lcssa = phi i32 [ %.79411111, %.lr.ph1114 ], [ %317, %._crit_edge1108.loopexit ]
  %indvars.iv.next1348 = add nuw nsw i64 %indvars.iv1347, 1
  %.not1013.not = icmp ult i64 %indvars.iv1347, %308
  br i1 %.not1013.not, label %.lr.ph1114, label %._crit_edge1115, !llvm.loop !53

._crit_edge1115:                                  ; preds = %._crit_edge1108, %._crit_edge1102
  call void @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 nonnull %112, ptr noundef nonnull %2, ptr noundef nonnull %171, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %187, ptr noundef nonnull %2) #6
  %318 = load i32, ptr %3, align 4, !tbaa !5
  %.not10141125 = icmp slt i32 %318, 1
  br i1 %.not10141125, label %._crit_edge1131, label %.lr.ph1130

.lr.ph1130:                                       ; preds = %._crit_edge1115
  %319 = load i32, ptr %2, align 4, !tbaa !5
  %.not10151116 = icmp slt i32 %319, 1
  br i1 %.not10151116, label %._crit_edge1131, label %.lr.ph1121.preheader

.lr.ph1121.preheader:                             ; preds = %.lr.ph1130
  %320 = add nuw i32 %319, 1
  %321 = sext i32 %27 to i64
  %322 = add nuw i32 %318, 1
  %wide.trip.count1366 = zext i32 %322 to i64
  %wide.trip.count1361 = zext i32 %320 to i64
  %323 = shl nsw i64 %321, 4
  %324 = shl nsw i64 %28, 4
  %325 = getelementptr i8, ptr %6, i64 %323
  %326 = getelementptr i8, ptr %325, i64 %324
  %scevgep1576 = getelementptr i8, ptr %326, i64 16
  %327 = shl nuw nsw i64 %wide.trip.count1366, 4
  %328 = add nsw i64 %327, -16
  %329 = mul i64 %328, %321
  %330 = shl nuw nsw i64 %wide.trip.count1361, 4
  %331 = getelementptr i8, ptr %6, i64 %329
  %332 = getelementptr i8, ptr %331, i64 %324
  %scevgep1577 = getelementptr i8, ptr %332, i64 %330
  %333 = shl nuw nsw i64 %wide.trip.count1361, 3
  %334 = add nsw i64 %333, -8
  %scevgep1579 = getelementptr i8, ptr %11, i64 %334
  %scevgep1582 = getelementptr i8, ptr %11, i64 %334
  %335 = zext nneg i32 %319 to i64
  %336 = zext nneg i32 %319 to i64
  %min.iters.check1595 = icmp ult i32 %319, 8
  %stride.check1591 = icmp slt i32 %27, 0
  %n.vec1598 = and i64 %335, 2147483646
  %ind.end1599 = or i64 %335, 1
  %cmp.n1614 = icmp eq i64 %n.vec1598, %335
  %337 = and i32 %319, 1
  %lcmp.mod1793.not = icmp eq i32 %337, 0
  %invariant.gep1846 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1848 = getelementptr i8, ptr %11, i64 8
  br label %.lr.ph1121

.lr.ph1121:                                       ; preds = %.lr.ph1121.preheader, %._crit_edge1122
  %indvars.iv1363 = phi i64 [ 1, %.lr.ph1121.preheader ], [ %indvars.iv.next1364, %._crit_edge1122 ]
  %.21128 = phi i32 [ %188, %.lr.ph1121.preheader ], [ %362, %._crit_edge1122 ]
  %.29151127 = phi i32 [ %189, %.lr.ph1121.preheader ], [ %361, %._crit_edge1122 ]
  %338 = mul nsw i64 %indvars.iv1363, %321
  %339 = sext i32 %.21128 to i64
  %340 = sext i32 %.29151127 to i64
  %invariant.gep1489 = getelementptr %struct.doublecomplex, ptr %29, i64 %338
  br i1 %min.iters.check1595, label %scalar.ph1594.preheader, label %vector.memcheck1575

vector.memcheck1575:                              ; preds = %.lr.ph1121
  %341 = shl nsw i64 %340, 3
  %scevgep1578 = getelementptr i8, ptr %11, i64 %341
  %scevgep1580 = getelementptr i8, ptr %scevgep1579, i64 %341
  %342 = shl nsw i64 %339, 3
  %scevgep1581 = getelementptr i8, ptr %11, i64 %342
  %scevgep1583 = getelementptr i8, ptr %scevgep1582, i64 %342
  %bound01584 = icmp ult ptr %scevgep1576, %scevgep1580
  %bound11585 = icmp ult ptr %scevgep1578, %scevgep1577
  %found.conflict1586 = and i1 %bound01584, %bound11585
  %bound01588 = icmp ult ptr %scevgep1576, %scevgep1583
  %bound11589 = icmp ult ptr %scevgep1581, %scevgep1577
  %found.conflict1590 = and i1 %bound01588, %bound11589
  %343 = or i1 %found.conflict1590, %stride.check1591
  %conflict.rdx1592 = or i1 %found.conflict1586, %343
  br i1 %conflict.rdx1592, label %scalar.ph1594.preheader, label %vector.ph1596

vector.ph1596:                                    ; preds = %vector.memcheck1575
  %ind.end1601 = add nsw i64 %n.vec1598, %340
  %ind.end1603 = add nsw i64 %n.vec1598, %339
  %invariant.gep1842 = getelementptr double, ptr %11, i64 %339
  %invariant.gep1844 = getelementptr double, ptr %11, i64 %340
  br label %vector.body1605

vector.body1605:                                  ; preds = %vector.body1605, %vector.ph1596
  %index1606 = phi i64 [ 0, %vector.ph1596 ], [ %index.next1613, %vector.body1605 ]
  %offset.idx1607 = or disjoint i64 %index1606, 1
  %gep1843 = getelementptr double, ptr %invariant.gep1842, i64 %index1606
  %wide.load1610 = load <2 x double>, ptr %gep1843, align 8, !tbaa !9, !alias.scope !54
  %gep1845 = getelementptr double, ptr %invariant.gep1844, i64 %index1606
  %wide.load1611 = load <2 x double>, ptr %gep1845, align 8, !tbaa !9, !alias.scope !57
  %344 = getelementptr %struct.doublecomplex, ptr %invariant.gep1489, i64 %offset.idx1607
  %interleaved.vec1612 = shufflevector <2 x double> %wide.load1610, <2 x double> %wide.load1611, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1612, ptr %344, align 8, !tbaa !9
  %index.next1613 = add nuw i64 %index1606, 2
  %345 = icmp eq i64 %index.next1613, %n.vec1598
  br i1 %345, label %middle.block1593, label %vector.body1605, !llvm.loop !59

middle.block1593:                                 ; preds = %vector.body1605
  br i1 %cmp.n1614, label %._crit_edge1122, label %scalar.ph1594.preheader

scalar.ph1594.preheader:                          ; preds = %middle.block1593, %vector.memcheck1575, %.lr.ph1121
  %indvars.iv1354.ph = phi i64 [ 1, %vector.memcheck1575 ], [ 1, %.lr.ph1121 ], [ %ind.end1599, %middle.block1593 ]
  %indvars.iv1352.ph = phi i64 [ %340, %vector.memcheck1575 ], [ %340, %.lr.ph1121 ], [ %ind.end1601, %middle.block1593 ]
  %indvars.iv1350.ph = phi i64 [ %339, %vector.memcheck1575 ], [ %339, %.lr.ph1121 ], [ %ind.end1603, %middle.block1593 ]
  br i1 %lcmp.mod1793.not, label %scalar.ph1594.prol.loopexit, label %scalar.ph1594.prol

scalar.ph1594.prol:                               ; preds = %scalar.ph1594.preheader
  %indvars.iv.next1351.prol = add nsw i64 %indvars.iv1350.ph, 1
  %indvars.iv.next1353.prol = add nsw i64 %indvars.iv1352.ph, 1
  %346 = getelementptr double, ptr %11, i64 %indvars.iv1350.ph
  %347 = load double, ptr %346, align 8, !tbaa !9
  %348 = getelementptr double, ptr %11, i64 %indvars.iv1352.ph
  %349 = load double, ptr %348, align 8, !tbaa !9
  %gep1490.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1489, i64 %indvars.iv1354.ph
  store double %347, ptr %gep1490.prol, align 8, !tbaa !17
  %350 = getelementptr inbounds i8, ptr %gep1490.prol, i64 8
  store double %349, ptr %350, align 8, !tbaa !39
  %indvars.iv.next1355.prol = add nuw nsw i64 %indvars.iv1354.ph, 1
  br label %scalar.ph1594.prol.loopexit

scalar.ph1594.prol.loopexit:                      ; preds = %scalar.ph1594.prol, %scalar.ph1594.preheader
  %indvars.iv.next1351.lcssa1783.unr = phi i64 [ poison, %scalar.ph1594.preheader ], [ %indvars.iv.next1351.prol, %scalar.ph1594.prol ]
  %indvars.iv.next1353.lcssa1782.unr = phi i64 [ poison, %scalar.ph1594.preheader ], [ %indvars.iv.next1353.prol, %scalar.ph1594.prol ]
  %indvars.iv1354.unr = phi i64 [ %indvars.iv1354.ph, %scalar.ph1594.preheader ], [ %indvars.iv.next1355.prol, %scalar.ph1594.prol ]
  %indvars.iv1352.unr = phi i64 [ %indvars.iv1352.ph, %scalar.ph1594.preheader ], [ %indvars.iv.next1353.prol, %scalar.ph1594.prol ]
  %indvars.iv1350.unr = phi i64 [ %indvars.iv1350.ph, %scalar.ph1594.preheader ], [ %indvars.iv.next1351.prol, %scalar.ph1594.prol ]
  %351 = icmp eq i64 %indvars.iv1354.ph, %336
  br i1 %351, label %._crit_edge1122, label %scalar.ph1594

scalar.ph1594:                                    ; preds = %scalar.ph1594.prol.loopexit, %scalar.ph1594
  %indvars.iv1354 = phi i64 [ %indvars.iv.next1355.1, %scalar.ph1594 ], [ %indvars.iv1354.unr, %scalar.ph1594.prol.loopexit ]
  %indvars.iv1352 = phi i64 [ %indvars.iv.next1353.1, %scalar.ph1594 ], [ %indvars.iv1352.unr, %scalar.ph1594.prol.loopexit ]
  %indvars.iv1350 = phi i64 [ %indvars.iv.next1351.1, %scalar.ph1594 ], [ %indvars.iv1350.unr, %scalar.ph1594.prol.loopexit ]
  %352 = getelementptr double, ptr %11, i64 %indvars.iv1350
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = getelementptr double, ptr %11, i64 %indvars.iv1352
  %355 = load double, ptr %354, align 8, !tbaa !9
  %gep1490 = getelementptr %struct.doublecomplex, ptr %invariant.gep1489, i64 %indvars.iv1354
  store double %353, ptr %gep1490, align 8, !tbaa !17
  %356 = getelementptr inbounds i8, ptr %gep1490, i64 8
  store double %355, ptr %356, align 8, !tbaa !39
  %indvars.iv.next1351.1 = add nsw i64 %indvars.iv1350, 2
  %indvars.iv.next1353.1 = add nsw i64 %indvars.iv1352, 2
  %gep1847 = getelementptr double, ptr %invariant.gep1846, i64 %indvars.iv1350
  %357 = load double, ptr %gep1847, align 8, !tbaa !9
  %gep1849 = getelementptr double, ptr %invariant.gep1848, i64 %indvars.iv1352
  %358 = load double, ptr %gep1849, align 8, !tbaa !9
  %359 = getelementptr %struct.doublecomplex, ptr %invariant.gep1489, i64 %indvars.iv1354
  %gep1490.1 = getelementptr i8, ptr %359, i64 16
  store double %357, ptr %gep1490.1, align 8, !tbaa !17
  %360 = getelementptr i8, ptr %359, i64 24
  store double %358, ptr %360, align 8, !tbaa !39
  %indvars.iv.next1355.1 = add nuw nsw i64 %indvars.iv1354, 2
  %exitcond1362.not.1 = icmp eq i64 %indvars.iv.next1355.1, %wide.trip.count1361
  br i1 %exitcond1362.not.1, label %._crit_edge1122, label %scalar.ph1594, !llvm.loop !60

._crit_edge1122:                                  ; preds = %scalar.ph1594.prol.loopexit, %scalar.ph1594, %middle.block1593
  %indvars.iv.next1351.lcssa = phi i64 [ %ind.end1603, %middle.block1593 ], [ %indvars.iv.next1351.lcssa1783.unr, %scalar.ph1594.prol.loopexit ], [ %indvars.iv.next1351.1, %scalar.ph1594 ]
  %indvars.iv.next1353.lcssa = phi i64 [ %ind.end1601, %middle.block1593 ], [ %indvars.iv.next1353.lcssa1782.unr, %scalar.ph1594.prol.loopexit ], [ %indvars.iv.next1353.1, %scalar.ph1594 ]
  %361 = trunc nsw i64 %indvars.iv.next1353.lcssa to i32
  %362 = trunc nsw i64 %indvars.iv.next1351.lcssa to i32
  %indvars.iv.next1364 = add nuw nsw i64 %indvars.iv1363, 1
  %exitcond1367.not = icmp eq i64 %indvars.iv.next1364, %wide.trip.count1366
  br i1 %exitcond1367.not, label %._crit_edge1131, label %.lr.ph1121, !llvm.loop !61

._crit_edge1131:                                  ; preds = %._crit_edge1122, %.lr.ph1130, %._crit_edge1115
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #6
  call void @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #6
  call void @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #6
  br label %.loopexit1027

363:                                              ; preds = %100
  %364 = sitofp i32 %101 to double
  %365 = add nsw i32 %102, 1
  %366 = sitofp i32 %365 to double
  %367 = fdiv double %364, %366
  %368 = call double @log(double noundef %367) #6
  %369 = fdiv double %368, 0x3FE62E42FEFA39EF
  %370 = fptosi double %369 to i32
  %371 = add nsw i32 %370, 1
  %372 = load i32, ptr %1, align 4, !tbaa !5
  %373 = add nsw i32 %372, 1
  %374 = load i32, ptr %2, align 4, !tbaa !5
  %375 = mul nsw i32 %374, %372
  %376 = add nsw i32 %375, 1
  %377 = mul nsw i32 %373, %374
  %378 = add nsw i32 %376, %377
  %379 = mul nsw i32 %371, %374
  %380 = add nsw i32 %378, %379
  %381 = shl i32 %379, 1
  %382 = add nsw i32 %380, %381
  %383 = add nsw i32 %382, %379
  %384 = add nsw i32 %383, %374
  %385 = add nsw i32 %384, %374
  %386 = shl i32 %371, 1
  %387 = mul nsw i32 %386, %374
  %388 = add nsw i32 %385, %387
  %389 = add nsw i32 %388, %387
  %390 = load i32, ptr %3, align 4, !tbaa !5
  %391 = mul nsw i32 %390, %372
  %392 = add nsw i32 %389, %391
  %393 = add nsw i32 %392, %391
  %394 = add i32 %374, 1
  %395 = add nsw i32 %394, %374
  %396 = add nsw i32 %395, %374
  %397 = add nsw i32 %396, %374
  %398 = add nsw i32 %397, %379
  %399 = add nsw i32 %398, %381
  store i32 0, ptr %16, align 4, !tbaa !5
  store i32 1, ptr %19, align 4, !tbaa !5
  store i32 0, ptr %20, align 4, !tbaa !5
  %.not9851132 = icmp slt i32 %374, 1
  br i1 %.not9851132, label %._crit_edge1136, label %.lr.ph1135

.lr.ph1135:                                       ; preds = %363
  %400 = fcmp oge double %44, 0.000000e+00
  %.neg = fneg double %44
  %wide.trip.count1371 = zext i32 %394 to i64
  %401 = add nsw i64 %wide.trip.count1371, -1
  %min.iters.check1617 = icmp ult i32 %394, 5
  br i1 %min.iters.check1617, label %scalar.ph1616.preheader, label %vector.ph1618

vector.ph1618:                                    ; preds = %.lr.ph1135
  %n.vec1620 = and i64 %401, -4
  %ind.end1621 = or disjoint i64 %n.vec1620, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %44, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1850 = getelementptr i8, ptr %25, i64 32
  br label %vector.body1623

vector.body1623:                                  ; preds = %pred.store.continue1633, %vector.ph1618
  %index1624 = phi i64 [ 0, %vector.ph1618 ], [ %index.next1634, %pred.store.continue1633 ]
  %402 = or disjoint i64 %index1624, 3
  %403 = getelementptr double, ptr %4, i64 %index1624
  %404 = getelementptr inbounds i8, ptr %403, i64 16
  %wide.load1626 = load <2 x double>, ptr %403, align 8, !tbaa !9
  %wide.load1627 = load <2 x double>, ptr %404, align 8, !tbaa !9
  %405 = fcmp oge <2 x double> %wide.load1626, zeroinitializer
  %406 = fcmp oge <2 x double> %wide.load1627, zeroinitializer
  %407 = fneg <2 x double> %wide.load1626
  %408 = fneg <2 x double> %wide.load1627
  %409 = select <2 x i1> %405, <2 x double> %wide.load1626, <2 x double> %407
  %410 = select <2 x i1> %406, <2 x double> %wide.load1627, <2 x double> %408
  %411 = fcmp olt <2 x double> %409, %broadcast.splat
  %412 = fcmp olt <2 x double> %410, %broadcast.splat
  %413 = extractelement <2 x i1> %411, i64 0
  br i1 %413, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body1623
  %414 = extractelement <2 x i1> %405, i64 0
  %415 = xor i1 %400, %414
  %416 = getelementptr double, ptr %4, i64 %index1624
  %417 = select i1 %415, double %.neg, double %44
  store double %417, ptr %416, align 8, !tbaa !9
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body1623
  %418 = extractelement <2 x i1> %411, i64 1
  br i1 %418, label %pred.store.if1628, label %pred.store.continue1629

pred.store.if1628:                                ; preds = %pred.store.continue
  %419 = or disjoint i64 %index1624, 2
  %420 = extractelement <2 x i1> %405, i64 1
  %421 = xor i1 %400, %420
  %422 = getelementptr inbounds double, ptr %25, i64 %419
  %423 = select i1 %421, double %.neg, double %44
  store double %423, ptr %422, align 8, !tbaa !9
  br label %pred.store.continue1629

pred.store.continue1629:                          ; preds = %pred.store.if1628, %pred.store.continue
  %424 = extractelement <2 x i1> %412, i64 0
  br i1 %424, label %pred.store.if1630, label %pred.store.continue1631

pred.store.if1630:                                ; preds = %pred.store.continue1629
  %425 = extractelement <2 x i1> %406, i64 0
  %426 = xor i1 %400, %425
  %427 = getelementptr inbounds double, ptr %25, i64 %402
  %428 = select i1 %426, double %.neg, double %44
  store double %428, ptr %427, align 8, !tbaa !9
  br label %pred.store.continue1631

pred.store.continue1631:                          ; preds = %pred.store.if1630, %pred.store.continue1629
  %429 = extractelement <2 x i1> %412, i64 1
  br i1 %429, label %pred.store.if1632, label %pred.store.continue1633

pred.store.if1632:                                ; preds = %pred.store.continue1631
  %430 = extractelement <2 x i1> %406, i64 1
  %431 = xor i1 %400, %430
  %gep1851 = getelementptr double, ptr %invariant.gep1850, i64 %index1624
  %432 = select i1 %431, double %.neg, double %44
  store double %432, ptr %gep1851, align 8, !tbaa !9
  br label %pred.store.continue1633

pred.store.continue1633:                          ; preds = %pred.store.if1632, %pred.store.continue1631
  %index.next1634 = add nuw i64 %index1624, 4
  %433 = icmp eq i64 %index.next1634, %n.vec1620
  br i1 %433, label %middle.block1615, label %vector.body1623, !llvm.loop !62

middle.block1615:                                 ; preds = %pred.store.continue1633
  %cmp.n1635 = icmp eq i64 %401, %n.vec1620
  br i1 %cmp.n1635, label %._crit_edge1136, label %scalar.ph1616.preheader

scalar.ph1616.preheader:                          ; preds = %middle.block1615, %.lr.ph1135
  %indvars.iv1368.ph = phi i64 [ 1, %.lr.ph1135 ], [ %ind.end1621, %middle.block1615 ]
  br label %scalar.ph1616

scalar.ph1616:                                    ; preds = %scalar.ph1616.preheader, %442
  %indvars.iv1368 = phi i64 [ %indvars.iv.next1369, %442 ], [ %indvars.iv1368.ph, %scalar.ph1616.preheader ]
  %434 = getelementptr inbounds double, ptr %25, i64 %indvars.iv1368
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fcmp oge double %435, 0.000000e+00
  %437 = fneg double %435
  %438 = select i1 %436, double %435, double %437
  %439 = fcmp olt double %438, %44
  br i1 %439, label %440, label %442

440:                                              ; preds = %scalar.ph1616
  %441 = xor i1 %400, %436
  %. = select i1 %441, double %.neg, double %44
  store double %., ptr %434, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %scalar.ph1616, %440
  %indvars.iv.next1369 = add nuw nsw i64 %indvars.iv1368, 1
  %exitcond1372.not = icmp eq i64 %indvars.iv.next1369, %wide.trip.count1371
  br i1 %exitcond1372.not, label %._crit_edge1136, label %scalar.ph1616, !llvm.loop !63

._crit_edge1136:                                  ; preds = %442, %middle.block1615, %363
  %443 = load i32, ptr %24, align 4, !tbaa !5
  %.not9861181 = icmp slt i32 %443, 1
  br i1 %.not9861181, label %._crit_edge1188, label %.lr.ph1187

.lr.ph1187:                                       ; preds = %._crit_edge1136
  %444 = sext i32 %389 to i64
  %445 = getelementptr inbounds double, ptr %31, i64 %444
  %446 = add nsw i32 %393, -1
  %447 = sext i32 %393 to i64
  %448 = getelementptr inbounds double, ptr %31, i64 %447
  %449 = sext i32 %392 to i64
  %450 = getelementptr inbounds double, ptr %31, i64 %449
  %451 = add nsw i32 %389, -1
  %452 = add nsw i32 %392, -1
  %453 = sext i32 %399 to i64
  %454 = getelementptr inbounds i32, ptr %32, i64 %453
  %455 = sext i32 %27 to i64
  %456 = zext nneg i32 %443 to i64
  %457 = add nsw i64 %455, %28
  %458 = shl nsw i64 %457, 4
  %scevgep1637 = getelementptr i8, ptr %6, i64 %458
  %459 = shl nsw i64 %455, 4
  %460 = add nsw i64 %455, %28
  %461 = add nsw i64 %455, %28
  %462 = shl nsw i64 %461, 4
  %scevgep1683 = getelementptr i8, ptr %6, i64 %462
  %scevgep1685 = getelementptr i8, ptr %6, i64 -8
  %463 = shl nsw i64 %455, 4
  %464 = add nsw i64 %455, %28
  %stride.check1690 = icmp slt i32 %27, 0
  %stride.check1653 = icmp slt i32 %27, 0
  br label %465

465:                                              ; preds = %.lr.ph1187, %671
  %indvars.iv1413 = phi i64 [ 1, %.lr.ph1187 ], [ %indvars.iv.next1414.pre-phi, %671 ]
  %.01184 = phi i32 [ 1, %.lr.ph1187 ], [ %.1, %671 ]
  %.09531182 = phi i32 [ 0, %.lr.ph1187 ], [ %.2955, %671 ]
  %466 = getelementptr inbounds double, ptr %26, i64 %indvars.iv1413
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = fcmp oge double %467, 0.000000e+00
  %469 = fneg double %467
  %470 = select i1 %468, double %467, double %469
  %471 = fcmp olt double %470, %44
  %472 = load i32, ptr %24, align 4
  %473 = zext i32 %472 to i64
  %474 = icmp eq i64 %indvars.iv1413, %473
  %or.cond1024 = select i1 %471, i1 true, i1 %474
  br i1 %or.cond1024, label %475, label %._crit_edge1461

._crit_edge1461:                                  ; preds = %465
  %.pre = add nuw nsw i64 %indvars.iv1413, 1
  br label %671

475:                                              ; preds = %465
  %476 = add nsw i32 %.09531182, 1
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %32, i64 %477
  store i32 %.01184, ptr %478, align 4, !tbaa !5
  %479 = sext i32 %472 to i64
  %480 = icmp slt i64 %indvars.iv1413, %479
  br i1 %480, label %481, label %488

481:                                              ; preds = %475
  %482 = trunc nuw nsw i64 %indvars.iv1413 to i32
  %483 = sub nsw i32 %482, %.01184
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %18, align 4, !tbaa !5
  %485 = add i32 %.09531182, %394
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i32, ptr %32, i64 %486
  store i32 %484, ptr %487, align 4, !tbaa !5
  br label %512

488:                                              ; preds = %475
  %489 = fcmp ult double %470, %44
  %490 = add i32 %.09531182, %394
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %32, i64 %491
  br i1 %489, label %497, label %493

493:                                              ; preds = %488
  %494 = load i32, ptr %2, align 4, !tbaa !5
  %495 = sub nsw i32 %494, %.01184
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %18, align 4, !tbaa !5
  store i32 %496, ptr %492, align 4, !tbaa !5
  br label %512

497:                                              ; preds = %488
  %498 = trunc nuw nsw i64 %indvars.iv1413 to i32
  %499 = sub nsw i32 %498, %.01184
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %18, align 4, !tbaa !5
  store i32 %500, ptr %492, align 4, !tbaa !5
  %501 = add nsw i32 %.09531182, 2
  %502 = load i32, ptr %2, align 4, !tbaa !5
  %503 = sext i32 %501 to i64
  %504 = getelementptr inbounds i32, ptr %32, i64 %503
  store i32 %502, ptr %504, align 4, !tbaa !5
  %505 = add i32 %501, %374
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds i32, ptr %32, i64 %506
  store i32 1, ptr %507, align 4, !tbaa !5
  %508 = load i32, ptr %2, align 4, !tbaa !5
  %509 = add nsw i32 %508, %27
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %510
  %gep1180 = getelementptr %struct.doublecomplex, ptr %10, i64 %479
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %511, ptr noundef nonnull %7, ptr noundef %gep1180, ptr noundef nonnull %2) #6
  %.pr1026 = load i32, ptr %18, align 4, !tbaa !5
  br label %512

512:                                              ; preds = %493, %497, %481
  %513 = phi i32 [ %496, %493 ], [ %.pr1026, %497 ], [ %484, %481 ]
  %.1954 = phi i32 [ %476, %493 ], [ %501, %497 ], [ %476, %481 ]
  %514 = add nsw i32 %.01184, -1
  %515 = icmp eq i32 %513, 1
  br i1 %515, label %516, label %522

516:                                              ; preds = %512
  %517 = add nsw i32 %.01184, %27
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %518
  %520 = sext i32 %.01184 to i64
  %521 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %520
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %519, ptr noundef nonnull %7, ptr noundef nonnull %521, ptr noundef nonnull %2) #6
  br label %668

522:                                              ; preds = %512
  %523 = load i32, ptr %1, align 4, !tbaa !5
  %.not997 = icmp sgt i32 %513, %523
  br i1 %.not997, label %620, label %524

524:                                              ; preds = %522
  %525 = add i32 %.01184, %375
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %31, i64 %526
  call void @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef nonnull %527, ptr noundef nonnull %2) #6
  %528 = sext i32 %.01184 to i64
  %529 = getelementptr inbounds double, ptr %31, i64 %528
  call void @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef nonnull %529, ptr noundef nonnull %2) #6
  %530 = getelementptr inbounds double, ptr %25, i64 %528
  %531 = getelementptr inbounds double, ptr %26, i64 %528
  call void @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull @c__0, ptr noundef nonnull %530, ptr noundef nonnull %531, ptr noundef nonnull %527, ptr noundef nonnull %2, ptr noundef nonnull %529, ptr noundef nonnull %2, ptr noundef nonnull %445, ptr noundef nonnull @c__1, ptr noundef nonnull %445, ptr noundef nonnull %13) #6
  %532 = load i32, ptr %13, align 4, !tbaa !5
  %.not1000 = icmp eq i32 %532, 0
  br i1 %.not1000, label %533, label %.loopexit1027

533:                                              ; preds = %524
  %534 = load i32, ptr %3, align 4, !tbaa !5
  %.not10011144 = icmp slt i32 %534, 1
  br i1 %.not10011144, label %._crit_edge1149, label %.lr.ph1148

.lr.ph1148:                                       ; preds = %533
  %535 = load i32, ptr %18, align 4, !tbaa !5
  %.not1006.not1137 = icmp sgt i32 %535, 0
  br i1 %.not1006.not1137, label %.lr.ph1141.us.preheader, label %._crit_edge1149

.lr.ph1141.us.preheader:                          ; preds = %.lr.ph1148
  %536 = add nsw i32 %535, %.01184
  %537 = sext i32 %536 to i64
  %538 = add nuw i32 %534, 1
  %wide.trip.count1383 = zext i32 %538 to i64
  %539 = mul nsw i64 %528, -8
  %scevgep1680 = getelementptr i8, ptr %11, i64 %539
  %540 = add nsw i64 %528, 1
  %smax1681 = call i64 @llvm.smax.i64(i64 %540, i64 %537)
  %541 = shl nsw i64 %528, 4
  %scevgep1684 = getelementptr i8, ptr %scevgep1683, i64 %541
  %542 = add nsw i64 %wide.trip.count1383, -2
  %543 = mul i64 %463, %542
  %544 = add i64 %464, %smax1681
  %545 = shl nsw i64 %544, 4
  %546 = getelementptr i8, ptr %scevgep1685, i64 %543
  %scevgep1686 = getelementptr i8, ptr %546, i64 %545
  %547 = add nsw i64 %528, 1
  %smax1691 = call i64 @llvm.smax.i64(i64 %547, i64 %537)
  %548 = sub i64 %smax1691, %528
  %min.iters.check1694 = icmp ult i64 %548, 9
  %n.mod.vf1696 = and i64 %548, 3
  %549 = icmp eq i64 %n.mod.vf1696, 0
  %550 = select i1 %549, i64 4, i64 %n.mod.vf1696
  %n.vec1697 = sub i64 %548, %550
  %ind.end1698 = add i64 %n.vec1697, %528
  br label %.lr.ph1141.us

.lr.ph1141.us:                                    ; preds = %.lr.ph1141.us.preheader, %._crit_edge1142.us
  %indvars.iv1380 = phi i64 [ 1, %.lr.ph1141.us.preheader ], [ %indvars.iv.next1381, %._crit_edge1142.us ]
  %.99431145.us = phi i32 [ %446, %.lr.ph1141.us.preheader ], [ %570, %._crit_edge1142.us ]
  %551 = mul nsw i64 %indvars.iv1380, %455
  %552 = sext i32 %.99431145.us to i64
  %invariant.gep1491 = getelementptr %struct.doublecomplex, ptr %29, i64 %551
  br i1 %min.iters.check1694, label %scalar.ph1693.preheader, label %vector.memcheck1678

vector.memcheck1678:                              ; preds = %.lr.ph1141.us
  %553 = shl nsw i64 %552, 3
  %scevgep1679 = getelementptr i8, ptr %11, i64 %553
  %554 = add i64 %smax1681, %552
  %555 = shl nsw i64 %554, 3
  %scevgep1682 = getelementptr i8, ptr %scevgep1680, i64 %555
  %bound01687 = icmp ult ptr %scevgep1679, %scevgep1686
  %bound11688 = icmp ult ptr %scevgep1684, %scevgep1682
  %found.conflict1689 = and i1 %bound01687, %bound11688
  %556 = or i1 %found.conflict1689, %stride.check1690
  br i1 %556, label %scalar.ph1693.preheader, label %vector.ph1695

vector.ph1695:                                    ; preds = %vector.memcheck1678
  %ind.end1700 = add i64 %n.vec1697, %552
  %invariant.gep1852 = getelementptr i8, ptr %invariant.gep1491, i64 16
  %invariant.gep1854 = getelementptr i8, ptr %invariant.gep1491, i64 32
  %invariant.gep1856 = getelementptr i8, ptr %invariant.gep1491, i64 48
  %invariant.gep1858 = getelementptr double, ptr %11, i64 %552
  br label %vector.body1702

vector.body1702:                                  ; preds = %vector.body1702, %vector.ph1695
  %index1703 = phi i64 [ 0, %vector.ph1695 ], [ %index.next1706, %vector.body1702 ]
  %offset.idx1704 = add i64 %index1703, %528
  %557 = getelementptr %struct.doublecomplex, ptr %invariant.gep1491, i64 %offset.idx1704
  %gep1853 = getelementptr %struct.doublecomplex, ptr %invariant.gep1852, i64 %offset.idx1704
  %gep1855 = getelementptr %struct.doublecomplex, ptr %invariant.gep1854, i64 %offset.idx1704
  %gep1857 = getelementptr %struct.doublecomplex, ptr %invariant.gep1856, i64 %offset.idx1704
  %558 = load double, ptr %557, align 8, !tbaa !17, !alias.scope !64
  %559 = load double, ptr %gep1853, align 8, !tbaa !17, !alias.scope !64
  %560 = insertelement <2 x double> poison, double %558, i64 0
  %561 = insertelement <2 x double> %560, double %559, i64 1
  %562 = load double, ptr %gep1855, align 8, !tbaa !17, !alias.scope !64
  %563 = load double, ptr %gep1857, align 8, !tbaa !17, !alias.scope !64
  %564 = insertelement <2 x double> poison, double %562, i64 0
  %565 = insertelement <2 x double> %564, double %563, i64 1
  %gep1859 = getelementptr double, ptr %invariant.gep1858, i64 %index1703
  %566 = getelementptr i8, ptr %gep1859, i64 16
  store <2 x double> %561, ptr %gep1859, align 8, !tbaa !9, !alias.scope !67, !noalias !64
  store <2 x double> %565, ptr %566, align 8, !tbaa !9, !alias.scope !67, !noalias !64
  %index.next1706 = add nuw i64 %index1703, 4
  %567 = icmp eq i64 %index.next1706, %n.vec1697
  br i1 %567, label %scalar.ph1693.preheader, label %vector.body1702, !llvm.loop !69

scalar.ph1693.preheader:                          ; preds = %vector.body1702, %vector.memcheck1678, %.lr.ph1141.us
  %indvars.iv1375.ph = phi i64 [ %528, %vector.memcheck1678 ], [ %528, %.lr.ph1141.us ], [ %ind.end1698, %vector.body1702 ]
  %indvars.iv1373.ph = phi i64 [ %552, %vector.memcheck1678 ], [ %552, %.lr.ph1141.us ], [ %ind.end1700, %vector.body1702 ]
  br label %scalar.ph1693

scalar.ph1693:                                    ; preds = %scalar.ph1693.preheader, %scalar.ph1693
  %indvars.iv1375 = phi i64 [ %indvars.iv.next1376, %scalar.ph1693 ], [ %indvars.iv1375.ph, %scalar.ph1693.preheader ]
  %indvars.iv1373 = phi i64 [ %indvars.iv.next1374, %scalar.ph1693 ], [ %indvars.iv1373.ph, %scalar.ph1693.preheader ]
  %indvars.iv.next1374 = add nsw i64 %indvars.iv1373, 1
  %gep1492 = getelementptr %struct.doublecomplex, ptr %invariant.gep1491, i64 %indvars.iv1375
  %568 = load double, ptr %gep1492, align 8, !tbaa !17
  %569 = getelementptr double, ptr %11, i64 %indvars.iv1373
  store double %568, ptr %569, align 8, !tbaa !9
  %indvars.iv.next1376 = add nsw i64 %indvars.iv1375, 1
  %.not1006.not.us = icmp slt i64 %indvars.iv.next1376, %537
  br i1 %.not1006.not.us, label %scalar.ph1693, label %._crit_edge1142.us, !llvm.loop !70

._crit_edge1142.us:                               ; preds = %scalar.ph1693
  %570 = trunc nsw i64 %indvars.iv.next1374 to i32
  %indvars.iv.next1381 = add nuw nsw i64 %indvars.iv1380, 1
  %exitcond1384.not = icmp eq i64 %indvars.iv.next1381, %wide.trip.count1383
  br i1 %exitcond1384.not, label %._crit_edge1149, label %.lr.ph1141.us, !llvm.loop !71

._crit_edge1149:                                  ; preds = %._crit_edge1142.us, %.lr.ph1148, %533
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c_b10, ptr noundef nonnull %529, ptr noundef nonnull %2, ptr noundef nonnull %448, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull %445, ptr noundef nonnull %18) #6
  %571 = load i32, ptr %3, align 4, !tbaa !5
  %.not10021157 = icmp slt i32 %571, 1
  br i1 %.not10021157, label %._crit_edge1162, label %.lr.ph1161.preheader

.lr.ph1161.preheader:                             ; preds = %._crit_edge1149
  %572 = add nuw i32 %571, 1
  %wide.trip.count1395 = zext i32 %572 to i64
  br label %.lr.ph1161

.lr.ph1161:                                       ; preds = %.lr.ph1161.preheader, %._crit_edge1155
  %indvars.iv1392 = phi i64 [ 1, %.lr.ph1161.preheader ], [ %indvars.iv.next1393, %._crit_edge1155 ]
  %.119451158 = phi i32 [ %446, %.lr.ph1161.preheader ], [ %.12.lcssa, %._crit_edge1155 ]
  %573 = load i32, ptr %18, align 4, !tbaa !5
  %.not1005.not1150 = icmp sgt i32 %573, 0
  br i1 %.not1005.not1150, label %.lr.ph1154, label %._crit_edge1155

.lr.ph1154:                                       ; preds = %.lr.ph1161
  %574 = add nsw i32 %573, %.01184
  %575 = mul nsw i64 %indvars.iv1392, %455
  %576 = sext i32 %.119451158 to i64
  %577 = sext i32 %574 to i64
  %invariant.gep1493 = getelementptr %struct.doublecomplex, ptr %29, i64 %575
  br label %578

578:                                              ; preds = %.lr.ph1154, %578
  %indvars.iv1387 = phi i64 [ %528, %.lr.ph1154 ], [ %indvars.iv.next1388, %578 ]
  %indvars.iv1385 = phi i64 [ %576, %.lr.ph1154 ], [ %indvars.iv.next1386, %578 ]
  %indvars.iv.next1386 = add nsw i64 %indvars.iv1385, 1
  %gep1494 = getelementptr %struct.doublecomplex, ptr %invariant.gep1493, i64 %indvars.iv1387
  %579 = call { double, double } @Cd(ptr noundef %gep1494)
  %580 = extractvalue { double, double } %579, 1
  %581 = getelementptr double, ptr %11, i64 %indvars.iv1385
  store double %580, ptr %581, align 8, !tbaa !9
  %indvars.iv.next1388 = add nsw i64 %indvars.iv1387, 1
  %.not1005.not = icmp slt i64 %indvars.iv.next1388, %577
  br i1 %.not1005.not, label %578, label %._crit_edge1155.loopexit, !llvm.loop !72

._crit_edge1155.loopexit:                         ; preds = %578
  %582 = trunc nsw i64 %indvars.iv.next1386 to i32
  br label %._crit_edge1155

._crit_edge1155:                                  ; preds = %._crit_edge1155.loopexit, %.lr.ph1161
  %.12.lcssa = phi i32 [ %.119451158, %.lr.ph1161 ], [ %582, %._crit_edge1155.loopexit ]
  %indvars.iv.next1393 = add nuw nsw i64 %indvars.iv1392, 1
  %exitcond1396.not = icmp eq i64 %indvars.iv.next1393, %wide.trip.count1395
  br i1 %exitcond1396.not, label %._crit_edge1162, label %.lr.ph1161, !llvm.loop !73

._crit_edge1162:                                  ; preds = %._crit_edge1155, %._crit_edge1149
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c_b10, ptr noundef nonnull %529, ptr noundef nonnull %2, ptr noundef nonnull %448, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull %450, ptr noundef nonnull %18) #6
  %583 = load i32, ptr %3, align 4, !tbaa !5
  %.not10031172 = icmp slt i32 %583, 1
  br i1 %.not10031172, label %._crit_edge1178, label %.lr.ph1177

.lr.ph1177:                                       ; preds = %._crit_edge1162
  %584 = load i32, ptr %18, align 4, !tbaa !5
  %.not1004.not1163 = icmp sgt i32 %584, 0
  br i1 %.not1004.not1163, label %.lr.ph1168.us.preheader, label %._crit_edge1178

.lr.ph1168.us.preheader:                          ; preds = %.lr.ph1177
  %585 = add i32 %584, %.01184
  %586 = sext i32 %585 to i64
  %587 = add nuw i32 %583, 1
  %wide.trip.count1411 = zext i32 %587 to i64
  %588 = shl nsw i64 %528, 4
  %scevgep1638 = getelementptr i8, ptr %scevgep1637, i64 %588
  %589 = add nsw i64 %wide.trip.count1411, -2
  %590 = mul i64 %459, %589
  %591 = add nsw i64 %528, 1
  %smax = call i64 @llvm.smax.i64(i64 %591, i64 %586)
  %592 = add i64 %460, %smax
  %593 = shl nsw i64 %592, 4
  %594 = getelementptr i8, ptr %6, i64 %590
  %scevgep1639 = getelementptr i8, ptr %594, i64 %593
  %595 = mul nsw i64 %528, -8
  %scevgep1641 = getelementptr i8, ptr %11, i64 %595
  %scevgep1644 = getelementptr i8, ptr %11, i64 %595
  %596 = add nsw i64 %528, 1
  %smax1655 = call i64 @llvm.smax.i64(i64 %596, i64 %586)
  %597 = sub i64 %smax1655, %528
  %min.iters.check1658 = icmp ult i64 %597, 10
  %n.vec1661 = and i64 %597, -2
  %ind.end1662 = add i64 %n.vec1661, %528
  %cmp.n1677 = icmp eq i64 %597, %n.vec1661
  br label %.lr.ph1168.us

.lr.ph1168.us:                                    ; preds = %.lr.ph1168.us.preheader, %._crit_edge1169.us
  %indvars.iv1408 = phi i64 [ 1, %.lr.ph1168.us.preheader ], [ %indvars.iv.next1409, %._crit_edge1169.us ]
  %.41175.us = phi i32 [ %451, %.lr.ph1168.us.preheader ], [ %615, %._crit_edge1169.us ]
  %.49171174.us = phi i32 [ %452, %.lr.ph1168.us.preheader ], [ %614, %._crit_edge1169.us ]
  %598 = mul nsw i64 %indvars.iv1408, %455
  %599 = sext i32 %.41175.us to i64
  %600 = sext i32 %.49171174.us to i64
  %invariant.gep1495 = getelementptr %struct.doublecomplex, ptr %29, i64 %598
  br i1 %min.iters.check1658, label %scalar.ph1657.preheader, label %vector.memcheck1636

vector.memcheck1636:                              ; preds = %.lr.ph1168.us
  %601 = shl nsw i64 %600, 3
  %scevgep1640 = getelementptr i8, ptr %11, i64 %601
  %602 = add i64 %smax, %600
  %603 = shl nsw i64 %602, 3
  %scevgep1642 = getelementptr i8, ptr %scevgep1641, i64 %603
  %604 = shl nsw i64 %599, 3
  %scevgep1643 = getelementptr i8, ptr %11, i64 %604
  %605 = add i64 %smax, %599
  %606 = shl nsw i64 %605, 3
  %scevgep1645 = getelementptr i8, ptr %scevgep1644, i64 %606
  %bound01646 = icmp ult ptr %scevgep1638, %scevgep1642
  %bound11647 = icmp ult ptr %scevgep1640, %scevgep1639
  %found.conflict1648 = and i1 %bound01646, %bound11647
  %bound01650 = icmp ult ptr %scevgep1638, %scevgep1645
  %bound11651 = icmp ult ptr %scevgep1643, %scevgep1639
  %found.conflict1652 = and i1 %bound01650, %bound11651
  %607 = or i1 %found.conflict1652, %stride.check1653
  %conflict.rdx1654 = or i1 %found.conflict1648, %607
  br i1 %conflict.rdx1654, label %scalar.ph1657.preheader, label %vector.ph1659

vector.ph1659:                                    ; preds = %vector.memcheck1636
  %ind.end1664 = add i64 %n.vec1661, %600
  %ind.end1666 = add i64 %n.vec1661, %599
  %invariant.gep1860 = getelementptr double, ptr %11, i64 %599
  %invariant.gep1862 = getelementptr double, ptr %11, i64 %600
  %invariant.gep1864 = getelementptr %struct.doublecomplex, ptr %invariant.gep1495, i64 %528
  br label %vector.body1668

vector.body1668:                                  ; preds = %vector.body1668, %vector.ph1659
  %index1669 = phi i64 [ 0, %vector.ph1659 ], [ %index.next1676, %vector.body1668 ]
  %gep1861 = getelementptr double, ptr %invariant.gep1860, i64 %index1669
  %wide.load1673 = load <2 x double>, ptr %gep1861, align 8, !tbaa !9, !alias.scope !74
  %gep1863 = getelementptr double, ptr %invariant.gep1862, i64 %index1669
  %wide.load1674 = load <2 x double>, ptr %gep1863, align 8, !tbaa !9, !alias.scope !77
  %gep1865 = getelementptr %struct.doublecomplex, ptr %invariant.gep1864, i64 %index1669
  %interleaved.vec1675 = shufflevector <2 x double> %wide.load1673, <2 x double> %wide.load1674, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1675, ptr %gep1865, align 8, !tbaa !9
  %index.next1676 = add nuw i64 %index1669, 2
  %608 = icmp eq i64 %index.next1676, %n.vec1661
  br i1 %608, label %middle.block1656, label %vector.body1668, !llvm.loop !79

middle.block1656:                                 ; preds = %vector.body1668
  br i1 %cmp.n1677, label %._crit_edge1169.us, label %scalar.ph1657.preheader

scalar.ph1657.preheader:                          ; preds = %middle.block1656, %vector.memcheck1636, %.lr.ph1168.us
  %indvars.iv1401.ph = phi i64 [ %528, %vector.memcheck1636 ], [ %528, %.lr.ph1168.us ], [ %ind.end1662, %middle.block1656 ]
  %indvars.iv1399.ph = phi i64 [ %600, %vector.memcheck1636 ], [ %600, %.lr.ph1168.us ], [ %ind.end1664, %middle.block1656 ]
  %indvars.iv1397.ph = phi i64 [ %599, %vector.memcheck1636 ], [ %599, %.lr.ph1168.us ], [ %ind.end1666, %middle.block1656 ]
  br label %scalar.ph1657

scalar.ph1657:                                    ; preds = %scalar.ph1657.preheader, %scalar.ph1657
  %indvars.iv1401 = phi i64 [ %indvars.iv.next1402, %scalar.ph1657 ], [ %indvars.iv1401.ph, %scalar.ph1657.preheader ]
  %indvars.iv1399 = phi i64 [ %indvars.iv.next1400, %scalar.ph1657 ], [ %indvars.iv1399.ph, %scalar.ph1657.preheader ]
  %indvars.iv1397 = phi i64 [ %indvars.iv.next1398, %scalar.ph1657 ], [ %indvars.iv1397.ph, %scalar.ph1657.preheader ]
  %indvars.iv.next1398 = add nsw i64 %indvars.iv1397, 1
  %indvars.iv.next1400 = add nsw i64 %indvars.iv1399, 1
  %609 = getelementptr double, ptr %11, i64 %indvars.iv1397
  %610 = load double, ptr %609, align 8, !tbaa !9
  %611 = getelementptr double, ptr %11, i64 %indvars.iv1399
  %612 = load double, ptr %611, align 8, !tbaa !9
  %gep1496 = getelementptr %struct.doublecomplex, ptr %invariant.gep1495, i64 %indvars.iv1401
  store double %610, ptr %gep1496, align 8, !tbaa !17
  %613 = getelementptr inbounds i8, ptr %gep1496, i64 8
  store double %612, ptr %613, align 8, !tbaa !39
  %indvars.iv.next1402 = add nsw i64 %indvars.iv1401, 1
  %.not1004.not.us = icmp slt i64 %indvars.iv.next1402, %586
  br i1 %.not1004.not.us, label %scalar.ph1657, label %._crit_edge1169.us, !llvm.loop !80

._crit_edge1169.us:                               ; preds = %scalar.ph1657, %middle.block1656
  %indvars.iv.next1398.lcssa = phi i64 [ %ind.end1666, %middle.block1656 ], [ %indvars.iv.next1398, %scalar.ph1657 ]
  %indvars.iv.next1400.lcssa = phi i64 [ %ind.end1664, %middle.block1656 ], [ %indvars.iv.next1400, %scalar.ph1657 ]
  %614 = trunc nsw i64 %indvars.iv.next1400.lcssa to i32
  %615 = trunc nsw i64 %indvars.iv.next1398.lcssa to i32
  %indvars.iv.next1409 = add nuw nsw i64 %indvars.iv1408, 1
  %exitcond1412.not = icmp eq i64 %indvars.iv.next1409, %wide.trip.count1411
  br i1 %exitcond1412.not, label %._crit_edge1178, label %.lr.ph1168.us, !llvm.loop !81

._crit_edge1178:                                  ; preds = %._crit_edge1169.us, %.lr.ph1177, %._crit_edge1162
  %616 = add nsw i32 %.01184, %27
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %617
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %528
  call void @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef %618, ptr noundef nonnull %7, ptr noundef nonnull %619, ptr noundef nonnull %2) #6
  br label %668

620:                                              ; preds = %522
  %621 = sext i32 %.01184 to i64
  %622 = getelementptr inbounds double, ptr %25, i64 %621
  %623 = getelementptr inbounds double, ptr %26, i64 %621
  %624 = getelementptr inbounds double, ptr %31, i64 %621
  %625 = add i32 %.01184, %375
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %31, i64 %626
  %628 = add nsw i32 %514, %395
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %32, i64 %629
  %631 = add nsw i32 %514, %378
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %31, i64 %632
  %634 = add nsw i32 %514, %380
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %31, i64 %635
  %637 = add nsw i32 %514, %382
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds double, ptr %31, i64 %638
  %640 = add nsw i32 %514, %385
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %31, i64 %641
  %643 = add nsw i32 %514, %396
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds i32, ptr %32, i64 %644
  %646 = add nsw i32 %514, %398
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds i32, ptr %32, i64 %647
  %649 = add nsw i32 %514, %397
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i32, ptr %32, i64 %650
  %652 = add nsw i32 %514, %388
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %31, i64 %653
  %655 = add nsw i32 %514, %383
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %31, i64 %656
  %658 = add nsw i32 %514, %384
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %31, i64 %659
  call void @dlasda_(ptr noundef nonnull %19, ptr noundef nonnull %1, ptr noundef nonnull %18, ptr noundef nonnull %16, ptr noundef nonnull %622, ptr noundef nonnull %623, ptr noundef nonnull %624, ptr noundef nonnull %2, ptr noundef nonnull %627, ptr noundef nonnull %630, ptr noundef nonnull %633, ptr noundef nonnull %636, ptr noundef nonnull %639, ptr noundef nonnull %642, ptr noundef nonnull %645, ptr noundef nonnull %648, ptr noundef nonnull %2, ptr noundef nonnull %651, ptr noundef nonnull %654, ptr noundef nonnull %657, ptr noundef nonnull %660, ptr noundef nonnull %445, ptr noundef nonnull %454, ptr noundef nonnull %13) #6
  %661 = load i32, ptr %13, align 4, !tbaa !5
  %.not998 = icmp eq i32 %661, 0
  br i1 %.not998, label %662, label %.loopexit1027

662:                                              ; preds = %620
  %663 = add nsw i32 %.01184, %27
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %664
  %666 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %621
  call void @zlalsa_(ptr noundef nonnull %20, ptr noundef nonnull %1, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef %665, ptr noundef nonnull %7, ptr noundef nonnull %666, ptr noundef nonnull %2, ptr noundef nonnull %624, ptr noundef nonnull %2, ptr noundef nonnull %627, ptr noundef nonnull %630, ptr noundef nonnull %633, ptr noundef nonnull %636, ptr noundef nonnull %639, ptr noundef nonnull %642, ptr noundef nonnull %645, ptr noundef nonnull %648, ptr noundef nonnull %2, ptr noundef nonnull %651, ptr noundef nonnull %654, ptr noundef nonnull %657, ptr noundef nonnull %660, ptr noundef nonnull %445, ptr noundef nonnull %454, ptr noundef nonnull %13) #6
  %667 = load i32, ptr %13, align 4, !tbaa !5
  %.not999 = icmp eq i32 %667, 0
  br i1 %.not999, label %668, label %.loopexit1027

668:                                              ; preds = %._crit_edge1178, %662, %516
  %669 = add nuw nsw i64 %indvars.iv1413, 1
  %670 = trunc nuw i64 %669 to i32
  br label %671

671:                                              ; preds = %._crit_edge1461, %668
  %indvars.iv.next1414.pre-phi = phi i64 [ %.pre, %._crit_edge1461 ], [ %669, %668 ]
  %.2955 = phi i32 [ %.09531182, %._crit_edge1461 ], [ %.1954, %668 ]
  %.1 = phi i32 [ %.01184, %._crit_edge1461 ], [ %670, %668 ]
  %.not986.not = icmp slt i64 %indvars.iv1413, %456
  br i1 %.not986.not, label %465, label %._crit_edge1188, !llvm.loop !82

._crit_edge1188:                                  ; preds = %671, %._crit_edge1136
  %672 = phi i32 [ 0, %._crit_edge1136 ], [ %.2955, %671 ]
  %673 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %25, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !9
  %677 = fcmp oge double %676, 0.000000e+00
  %678 = fneg double %676
  %679 = select i1 %677, double %676, double %678
  %680 = fmul double %.0923, %679
  %681 = load i32, ptr %2, align 4, !tbaa !5
  %.not9871190 = icmp slt i32 %681, 1
  br i1 %.not9871190, label %._crit_edge1194, label %.lr.ph1193.preheader

.lr.ph1193.preheader:                             ; preds = %._crit_edge1188
  %682 = zext nneg i32 %681 to i64
  br label %.lr.ph1193

.lr.ph1193:                                       ; preds = %.lr.ph1193.preheader, %695
  %indvars.iv1416 = phi i64 [ 1, %.lr.ph1193.preheader ], [ %indvars.iv.next1417, %695 ]
  %683 = getelementptr inbounds double, ptr %25, i64 %indvars.iv1416
  %684 = load double, ptr %683, align 8, !tbaa !9
  %685 = fcmp oge double %684, 0.000000e+00
  %686 = fneg double %684
  %687 = select i1 %685, double %684, double %686
  %688 = fcmp ugt double %687, %680
  br i1 %688, label %691, label %689

689:                                              ; preds = %.lr.ph1193
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %indvars.iv1416
  call void @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 %690, ptr noundef nonnull %2) #6
  br label %695

691:                                              ; preds = %.lr.ph1193
  %692 = load i32, ptr %9, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr %9, align 4, !tbaa !5
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %indvars.iv1416
  call void @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %683, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull %694, ptr noundef nonnull %2, ptr noundef nonnull %13) #6
  br label %695

695:                                              ; preds = %691, %689
  %696 = load double, ptr %683, align 8, !tbaa !9
  %697 = fcmp oge double %696, 0.000000e+00
  %698 = fneg double %696
  %699 = select i1 %697, double %696, double %698
  store double %699, ptr %683, align 8, !tbaa !9
  %indvars.iv.next1417 = add nuw nsw i64 %indvars.iv1416, 1
  %.not987.not = icmp ult i64 %indvars.iv1416, %682
  br i1 %.not987.not, label %.lr.ph1193, label %._crit_edge1194, !llvm.loop !83

._crit_edge1194:                                  ; preds = %695, %._crit_edge1188
  store i32 1, ptr %20, align 4, !tbaa !5
  %.not9881238 = icmp slt i32 %672, 1
  br i1 %.not9881238, label %._crit_edge1242, label %.lr.ph1241

.lr.ph1241:                                       ; preds = %._crit_edge1194
  %700 = add nsw i32 %393, -1
  %701 = sext i32 %393 to i64
  %702 = getelementptr inbounds double, ptr %31, i64 %701
  %703 = sext i32 %389 to i64
  %704 = getelementptr inbounds double, ptr %31, i64 %703
  %705 = sext i32 %392 to i64
  %706 = getelementptr inbounds double, ptr %31, i64 %705
  %707 = add nsw i32 %389, -1
  %708 = add nsw i32 %392, -1
  %709 = sext i32 %399 to i64
  %710 = getelementptr inbounds i32, ptr %32, i64 %709
  %711 = sext i32 %27 to i64
  %712 = zext nneg i32 %672 to i64
  %713 = add nsw i64 %711, %28
  %714 = shl nsw i64 %713, 4
  %scevgep1708 = getelementptr i8, ptr %6, i64 %714
  %715 = shl nsw i64 %711, 4
  %716 = add nsw i64 %711, %28
  %scevgep1752 = getelementptr i8, ptr %11, i64 -8
  %scevgep1756 = getelementptr i8, ptr %10, i64 -24
  %invariant.gep1872 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1876 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1880 = getelementptr i8, ptr %11, i64 24
  %stride.check1725 = icmp slt i32 %27, 0
  br label %717

717:                                              ; preds = %.lr.ph1241, %.loopexit
  %indvars.iv1458 = phi i64 [ 1, %.lr.ph1241 ], [ %indvars.iv.next1459, %.loopexit ]
  %718 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv1458
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = add nsw i32 %719, -1
  %721 = trunc nuw nsw i64 %indvars.iv1458 to i32
  %722 = add i32 %374, %721
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %32, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !5
  store i32 %725, ptr %18, align 4, !tbaa !5
  %726 = icmp eq i32 %725, 1
  br i1 %726, label %727, label %733

727:                                              ; preds = %717
  %728 = sext i32 %719 to i64
  %729 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %728
  %730 = add nsw i32 %719, %27
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %731
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef nonnull %729, ptr noundef nonnull %2, ptr noundef %732, ptr noundef nonnull %7) #6
  br label %.loopexit

733:                                              ; preds = %717
  %734 = load i32, ptr %1, align 4, !tbaa !5
  %.not989 = icmp sgt i32 %725, %734
  br i1 %.not989, label %841, label %735

735:                                              ; preds = %733
  %736 = load i32, ptr %3, align 4, !tbaa !5
  %.not9911202 = icmp slt i32 %736, 1
  %.not9961195 = icmp slt i32 %725, 1
  %or.cond1503 = or i1 %.not9911202, %.not9961195
  br i1 %or.cond1503, label %._crit_edge1208, label %.lr.ph1199.preheader

.lr.ph1199.preheader:                             ; preds = %735
  %737 = load i32, ptr %2, align 4, !tbaa !5
  %738 = xor i32 %737, -1
  %739 = add i32 %719, %738
  %740 = add nuw i32 %725, 1
  %741 = sext i32 %739 to i64
  %742 = sext i32 %737 to i64
  %wide.trip.count1426 = zext i32 %740 to i64
  %743 = shl nuw nsw i64 %wide.trip.count1426, 3
  %scevgep1753 = getelementptr i8, ptr %scevgep1752, i64 %743
  %744 = add nsw i64 %742, %741
  %745 = shl nsw i64 %744, 4
  %scevgep1755 = getelementptr i8, ptr %10, i64 %745
  %746 = shl nsw i64 %742, 4
  %747 = add nsw i32 %736, -1
  %748 = zext i32 %747 to i64
  %749 = mul i64 %746, %748
  %750 = shl nuw nsw i64 %wide.trip.count1426, 4
  %751 = getelementptr i8, ptr %scevgep1756, i64 %749
  %752 = getelementptr i8, ptr %751, i64 %745
  %scevgep1757 = getelementptr i8, ptr %752, i64 %750
  %753 = zext nneg i32 %725 to i64
  %754 = zext nneg i32 %725 to i64
  %min.iters.check1764 = icmp ult i32 %725, 7
  %stride.check1761 = icmp slt i32 %737, 0
  %n.mod.vf1766 = and i64 %753, 3
  %755 = icmp eq i64 %n.mod.vf1766, 0
  %756 = select i1 %755, i64 4, i64 %n.mod.vf1766
  %n.vec1767 = sub nsw i64 %753, %756
  %ind.end1768 = add nsw i64 %n.vec1767, 1
  br label %.lr.ph1199

.lr.ph1199:                                       ; preds = %.lr.ph1199.preheader, %._crit_edge1200
  %indvars.iv1428 = phi i64 [ %741, %.lr.ph1199.preheader ], [ %indvars.iv.next1429, %._crit_edge1200 ]
  %.61205 = phi i32 [ %700, %.lr.ph1199.preheader ], [ %785, %._crit_edge1200 ]
  %.99331204 = phi i32 [ 1, %.lr.ph1199.preheader ], [ %786, %._crit_edge1200 ]
  %indvars.iv.next1429 = add nsw i64 %indvars.iv1428, %742
  %757 = sext i32 %.61205 to i64
  %invariant.gep1497 = getelementptr %struct.doublecomplex, ptr %30, i64 %indvars.iv.next1429
  br i1 %min.iters.check1764, label %scalar.ph1763.preheader, label %vector.memcheck1750

vector.memcheck1750:                              ; preds = %.lr.ph1199
  %758 = shl nsw i64 %757, 3
  %scevgep1751 = getelementptr i8, ptr %11, i64 %758
  %scevgep1754 = getelementptr i8, ptr %scevgep1753, i64 %758
  %bound01758 = icmp ult ptr %scevgep1751, %scevgep1757
  %bound11759 = icmp ult ptr %scevgep1755, %scevgep1754
  %found.conflict1760 = and i1 %bound01758, %bound11759
  %759 = or i1 %found.conflict1760, %stride.check1761
  br i1 %759, label %scalar.ph1763.preheader, label %vector.ph1765

vector.ph1765:                                    ; preds = %vector.memcheck1750
  %ind.end1770 = add nsw i64 %n.vec1767, %757
  %invariant.gep1866 = getelementptr i8, ptr %invariant.gep1497, i64 64
  %invariant.gep1868 = getelementptr double, ptr %11, i64 %757
  br label %vector.body1772

vector.body1772:                                  ; preds = %vector.body1772, %vector.ph1765
  %index1773 = phi i64 [ 0, %vector.ph1765 ], [ %index.next1776, %vector.body1772 ]
  %offset.idx1774 = or disjoint i64 %index1773, 1
  %760 = or disjoint i64 %index1773, 2
  %761 = or disjoint i64 %index1773, 3
  %762 = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %offset.idx1774
  %763 = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %760
  %764 = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %761
  %gep1867 = getelementptr %struct.doublecomplex, ptr %invariant.gep1866, i64 %index1773
  %765 = load double, ptr %762, align 8, !tbaa !17, !alias.scope !84
  %766 = load double, ptr %763, align 8, !tbaa !17, !alias.scope !84
  %767 = insertelement <2 x double> poison, double %765, i64 0
  %768 = insertelement <2 x double> %767, double %766, i64 1
  %769 = load double, ptr %764, align 8, !tbaa !17, !alias.scope !84
  %770 = load double, ptr %gep1867, align 8, !tbaa !17, !alias.scope !84
  %771 = insertelement <2 x double> poison, double %769, i64 0
  %772 = insertelement <2 x double> %771, double %770, i64 1
  %gep1869 = getelementptr double, ptr %invariant.gep1868, i64 %index1773
  %773 = getelementptr i8, ptr %gep1869, i64 16
  store <2 x double> %768, ptr %gep1869, align 8, !tbaa !9, !alias.scope !87, !noalias !84
  store <2 x double> %772, ptr %773, align 8, !tbaa !9, !alias.scope !87, !noalias !84
  %index.next1776 = add nuw i64 %index1773, 4
  %774 = icmp eq i64 %index.next1776, %n.vec1767
  br i1 %774, label %scalar.ph1763.preheader, label %vector.body1772, !llvm.loop !89

scalar.ph1763.preheader:                          ; preds = %vector.body1772, %vector.memcheck1750, %.lr.ph1199
  %indvars.iv1421.ph = phi i64 [ 1, %vector.memcheck1750 ], [ 1, %.lr.ph1199 ], [ %ind.end1768, %vector.body1772 ]
  %indvars.iv1419.ph = phi i64 [ %757, %vector.memcheck1750 ], [ %757, %.lr.ph1199 ], [ %ind.end1770, %vector.body1772 ]
  %775 = sub nsw i64 %wide.trip.count1426, %indvars.iv1421.ph
  %776 = sub nsw i64 %754, %indvars.iv1421.ph
  %xtraiter1795 = and i64 %775, 3
  %lcmp.mod1796.not = icmp eq i64 %xtraiter1795, 0
  br i1 %lcmp.mod1796.not, label %scalar.ph1763.prol.loopexit, label %scalar.ph1763.prol

scalar.ph1763.prol:                               ; preds = %scalar.ph1763.preheader, %scalar.ph1763.prol
  %indvars.iv1421.prol = phi i64 [ %indvars.iv.next1422.prol, %scalar.ph1763.prol ], [ %indvars.iv1421.ph, %scalar.ph1763.preheader ]
  %indvars.iv1419.prol = phi i64 [ %indvars.iv.next1420.prol, %scalar.ph1763.prol ], [ %indvars.iv1419.ph, %scalar.ph1763.preheader ]
  %prol.iter1797 = phi i64 [ %prol.iter1797.next, %scalar.ph1763.prol ], [ 0, %scalar.ph1763.preheader ]
  %indvars.iv.next1420.prol = add nsw i64 %indvars.iv1419.prol, 1
  %gep1498.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %indvars.iv1421.prol
  %777 = load double, ptr %gep1498.prol, align 8, !tbaa !17
  %778 = getelementptr double, ptr %11, i64 %indvars.iv1419.prol
  store double %777, ptr %778, align 8, !tbaa !9
  %indvars.iv.next1422.prol = add nuw nsw i64 %indvars.iv1421.prol, 1
  %prol.iter1797.next = add i64 %prol.iter1797, 1
  %prol.iter1797.cmp.not = icmp eq i64 %prol.iter1797.next, %xtraiter1795
  br i1 %prol.iter1797.cmp.not, label %scalar.ph1763.prol.loopexit, label %scalar.ph1763.prol, !llvm.loop !90

scalar.ph1763.prol.loopexit:                      ; preds = %scalar.ph1763.prol, %scalar.ph1763.preheader
  %indvars.iv.next1420.lcssa.unr = phi i64 [ poison, %scalar.ph1763.preheader ], [ %indvars.iv.next1420.prol, %scalar.ph1763.prol ]
  %indvars.iv1421.unr = phi i64 [ %indvars.iv1421.ph, %scalar.ph1763.preheader ], [ %indvars.iv.next1422.prol, %scalar.ph1763.prol ]
  %indvars.iv1419.unr = phi i64 [ %indvars.iv1419.ph, %scalar.ph1763.preheader ], [ %indvars.iv.next1420.prol, %scalar.ph1763.prol ]
  %779 = icmp ult i64 %776, 3
  br i1 %779, label %._crit_edge1200, label %scalar.ph1763.preheader.new

scalar.ph1763.preheader.new:                      ; preds = %scalar.ph1763.prol.loopexit
  %invariant.gep1870 = getelementptr i8, ptr %invariant.gep1497, i64 16
  %invariant.gep1874 = getelementptr i8, ptr %invariant.gep1497, i64 32
  %invariant.gep1878 = getelementptr i8, ptr %invariant.gep1497, i64 48
  br label %scalar.ph1763

scalar.ph1763:                                    ; preds = %scalar.ph1763, %scalar.ph1763.preheader.new
  %indvars.iv1421 = phi i64 [ %indvars.iv1421.unr, %scalar.ph1763.preheader.new ], [ %indvars.iv.next1422.3, %scalar.ph1763 ]
  %indvars.iv1419 = phi i64 [ %indvars.iv1419.unr, %scalar.ph1763.preheader.new ], [ %indvars.iv.next1420.3, %scalar.ph1763 ]
  %gep1498 = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %indvars.iv1421
  %780 = load double, ptr %gep1498, align 8, !tbaa !17
  %781 = getelementptr double, ptr %11, i64 %indvars.iv1419
  store double %780, ptr %781, align 8, !tbaa !9
  %gep1871 = getelementptr %struct.doublecomplex, ptr %invariant.gep1870, i64 %indvars.iv1421
  %782 = load double, ptr %gep1871, align 8, !tbaa !17
  %gep1873 = getelementptr double, ptr %invariant.gep1872, i64 %indvars.iv1419
  store double %782, ptr %gep1873, align 8, !tbaa !9
  %gep1875 = getelementptr %struct.doublecomplex, ptr %invariant.gep1874, i64 %indvars.iv1421
  %783 = load double, ptr %gep1875, align 8, !tbaa !17
  %gep1877 = getelementptr double, ptr %invariant.gep1876, i64 %indvars.iv1419
  store double %783, ptr %gep1877, align 8, !tbaa !9
  %indvars.iv.next1420.3 = add nsw i64 %indvars.iv1419, 4
  %gep1879 = getelementptr %struct.doublecomplex, ptr %invariant.gep1878, i64 %indvars.iv1421
  %784 = load double, ptr %gep1879, align 8, !tbaa !17
  %gep1881 = getelementptr double, ptr %invariant.gep1880, i64 %indvars.iv1419
  store double %784, ptr %gep1881, align 8, !tbaa !9
  %indvars.iv.next1422.3 = add nuw nsw i64 %indvars.iv1421, 4
  %exitcond1427.not.3 = icmp eq i64 %indvars.iv.next1422.3, %wide.trip.count1426
  br i1 %exitcond1427.not.3, label %._crit_edge1200, label %scalar.ph1763, !llvm.loop !91

._crit_edge1200:                                  ; preds = %scalar.ph1763, %scalar.ph1763.prol.loopexit
  %indvars.iv.next1420.lcssa = phi i64 [ %indvars.iv.next1420.lcssa.unr, %scalar.ph1763.prol.loopexit ], [ %indvars.iv.next1420.3, %scalar.ph1763 ]
  %785 = trunc nsw i64 %indvars.iv.next1420.lcssa to i32
  %786 = add nuw i32 %.99331204, 1
  %exitcond1431.not = icmp eq i32 %.99331204, %736
  br i1 %exitcond1431.not, label %._crit_edge1208, label %.lr.ph1199, !llvm.loop !92

._crit_edge1208:                                  ; preds = %._crit_edge1200, %735
  %787 = add i32 %719, %375
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %31, i64 %788
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c_b10, ptr noundef nonnull %789, ptr noundef nonnull %2, ptr noundef nonnull %702, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull %704, ptr noundef nonnull %18) #6
  %790 = load i32, ptr %3, align 4, !tbaa !5
  %.not9921216 = icmp slt i32 %790, 1
  %791 = load i32, ptr %18, align 4
  %792 = icmp slt i32 %791, 1
  %or.cond1505 = select i1 %.not9921216, i1 true, i1 %792
  br i1 %or.cond1505, label %._crit_edge1222, label %.lr.ph1221.split.preheader

.lr.ph1221.split.preheader:                       ; preds = %._crit_edge1208
  %793 = load i32, ptr %2, align 4, !tbaa !5
  %794 = xor i32 %793, -1
  %795 = add i32 %719, %794
  br label %.lr.ph1221.split

.lr.ph1221.split:                                 ; preds = %.lr.ph1221.split.preheader, %._crit_edge1214
  %.69191219 = phi i32 [ %.7920.lcssa, %._crit_edge1214 ], [ %700, %.lr.ph1221.split.preheader ]
  %.101218 = phi i32 [ %806, %._crit_edge1214 ], [ 1, %.lr.ph1221.split.preheader ]
  %.141217 = phi i32 [ %797, %._crit_edge1214 ], [ %795, %.lr.ph1221.split.preheader ]
  %796 = load i32, ptr %2, align 4, !tbaa !5
  %797 = add nsw i32 %796, %.141217
  %798 = load i32, ptr %18, align 4, !tbaa !5
  %.not9951209 = icmp slt i32 %798, 1
  br i1 %.not9951209, label %._crit_edge1214, label %.lr.ph1213.preheader

.lr.ph1213.preheader:                             ; preds = %.lr.ph1221.split
  %799 = sext i32 %.69191219 to i64
  %800 = sext i32 %797 to i64
  %801 = add nuw i32 %798, 1
  %wide.trip.count1439 = zext i32 %801 to i64
  %invariant.gep1499 = getelementptr %struct.doublecomplex, ptr %30, i64 %800
  br label %.lr.ph1213

.lr.ph1213:                                       ; preds = %.lr.ph1213.preheader, %.lr.ph1213
  %indvars.iv1434 = phi i64 [ 1, %.lr.ph1213.preheader ], [ %indvars.iv.next1435, %.lr.ph1213 ]
  %indvars.iv1432 = phi i64 [ %799, %.lr.ph1213.preheader ], [ %indvars.iv.next1433, %.lr.ph1213 ]
  %indvars.iv.next1433 = add nsw i64 %indvars.iv1432, 1
  %gep1500 = getelementptr %struct.doublecomplex, ptr %invariant.gep1499, i64 %indvars.iv1434
  %802 = call { double, double } @Cd(ptr noundef nonnull %gep1500)
  %803 = extractvalue { double, double } %802, 1
  %804 = getelementptr double, ptr %11, i64 %indvars.iv1432
  store double %803, ptr %804, align 8, !tbaa !9
  %indvars.iv.next1435 = add nuw nsw i64 %indvars.iv1434, 1
  %exitcond1440.not = icmp eq i64 %indvars.iv.next1435, %wide.trip.count1439
  br i1 %exitcond1440.not, label %._crit_edge1214.loopexit, label %.lr.ph1213, !llvm.loop !93

._crit_edge1214.loopexit:                         ; preds = %.lr.ph1213
  %805 = trunc nsw i64 %indvars.iv.next1433 to i32
  br label %._crit_edge1214

._crit_edge1214:                                  ; preds = %._crit_edge1214.loopexit, %.lr.ph1221.split
  %.7920.lcssa = phi i32 [ %.69191219, %.lr.ph1221.split ], [ %805, %._crit_edge1214.loopexit ]
  %806 = add nuw i32 %.101218, 1
  %exitcond1441.not = icmp eq i32 %.101218, %790
  br i1 %exitcond1441.not, label %._crit_edge1222, label %.lr.ph1221.split, !llvm.loop !94

._crit_edge1222:                                  ; preds = %._crit_edge1214, %._crit_edge1208
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c_b10, ptr noundef nonnull %789, ptr noundef nonnull %2, ptr noundef nonnull %702, ptr noundef nonnull %18, ptr noundef nonnull @c_b35, ptr noundef nonnull %706, ptr noundef nonnull %18) #6
  %807 = load i32, ptr %3, align 4, !tbaa !5
  %.not9931232 = icmp slt i32 %807, 1
  br i1 %.not9931232, label %.loopexit, label %.lr.ph1237

.lr.ph1237:                                       ; preds = %._crit_edge1222
  %808 = load i32, ptr %18, align 4, !tbaa !5
  %.not994.not1223 = icmp sgt i32 %808, 0
  br i1 %.not994.not1223, label %.lr.ph1228.us.preheader, label %.loopexit

.lr.ph1228.us.preheader:                          ; preds = %.lr.ph1237
  %809 = add i32 %808, %719
  %810 = sext i32 %719 to i64
  %811 = sext i32 %809 to i64
  %812 = add nuw i32 %807, 1
  %wide.trip.count1456 = zext i32 %812 to i64
  %813 = shl nsw i64 %810, 4
  %scevgep1709 = getelementptr i8, ptr %scevgep1708, i64 %813
  %814 = add nsw i64 %wide.trip.count1456, -2
  %815 = mul i64 %715, %814
  %816 = add nsw i64 %810, 1
  %smax1710 = call i64 @llvm.smax.i64(i64 %816, i64 %811)
  %817 = add i64 %716, %smax1710
  %818 = shl nsw i64 %817, 4
  %819 = getelementptr i8, ptr %6, i64 %815
  %scevgep1711 = getelementptr i8, ptr %819, i64 %818
  %820 = mul nsw i64 %810, -8
  %scevgep1713 = getelementptr i8, ptr %11, i64 %820
  %scevgep1716 = getelementptr i8, ptr %11, i64 %820
  %821 = add nsw i64 %810, 1
  %smax1727 = call i64 @llvm.smax.i64(i64 %821, i64 %811)
  %822 = sub i64 %smax1727, %810
  %min.iters.check1730 = icmp ult i64 %822, 10
  %n.vec1733 = and i64 %822, -2
  %ind.end1734 = add i64 %n.vec1733, %810
  %cmp.n1749 = icmp eq i64 %822, %n.vec1733
  br label %.lr.ph1228.us

.lr.ph1228.us:                                    ; preds = %.lr.ph1228.us.preheader, %._crit_edge1229.us
  %indvars.iv1453 = phi i64 [ 1, %.lr.ph1228.us.preheader ], [ %indvars.iv.next1454, %._crit_edge1229.us ]
  %.81235.us = phi i32 [ %707, %.lr.ph1228.us.preheader ], [ %840, %._crit_edge1229.us ]
  %.89211234.us = phi i32 [ %708, %.lr.ph1228.us.preheader ], [ %839, %._crit_edge1229.us ]
  %823 = mul nsw i64 %indvars.iv1453, %711
  %824 = sext i32 %.81235.us to i64
  %825 = sext i32 %.89211234.us to i64
  %invariant.gep1501 = getelementptr %struct.doublecomplex, ptr %29, i64 %823
  br i1 %min.iters.check1730, label %scalar.ph1729.preheader, label %vector.memcheck1707

vector.memcheck1707:                              ; preds = %.lr.ph1228.us
  %826 = shl nsw i64 %825, 3
  %scevgep1712 = getelementptr i8, ptr %11, i64 %826
  %827 = add i64 %smax1710, %825
  %828 = shl nsw i64 %827, 3
  %scevgep1714 = getelementptr i8, ptr %scevgep1713, i64 %828
  %829 = shl nsw i64 %824, 3
  %scevgep1715 = getelementptr i8, ptr %11, i64 %829
  %830 = add i64 %smax1710, %824
  %831 = shl nsw i64 %830, 3
  %scevgep1717 = getelementptr i8, ptr %scevgep1716, i64 %831
  %bound01718 = icmp ult ptr %scevgep1709, %scevgep1714
  %bound11719 = icmp ult ptr %scevgep1712, %scevgep1711
  %found.conflict1720 = and i1 %bound01718, %bound11719
  %bound01722 = icmp ult ptr %scevgep1709, %scevgep1717
  %bound11723 = icmp ult ptr %scevgep1715, %scevgep1711
  %found.conflict1724 = and i1 %bound01722, %bound11723
  %832 = or i1 %found.conflict1724, %stride.check1725
  %conflict.rdx1726 = or i1 %found.conflict1720, %832
  br i1 %conflict.rdx1726, label %scalar.ph1729.preheader, label %vector.ph1731

vector.ph1731:                                    ; preds = %vector.memcheck1707
  %ind.end1736 = add i64 %n.vec1733, %825
  %ind.end1738 = add i64 %n.vec1733, %824
  %invariant.gep1882 = getelementptr double, ptr %11, i64 %824
  %invariant.gep1884 = getelementptr double, ptr %11, i64 %825
  %invariant.gep1886 = getelementptr %struct.doublecomplex, ptr %invariant.gep1501, i64 %810
  br label %vector.body1740

vector.body1740:                                  ; preds = %vector.body1740, %vector.ph1731
  %index1741 = phi i64 [ 0, %vector.ph1731 ], [ %index.next1748, %vector.body1740 ]
  %gep1883 = getelementptr double, ptr %invariant.gep1882, i64 %index1741
  %wide.load1745 = load <2 x double>, ptr %gep1883, align 8, !tbaa !9, !alias.scope !95
  %gep1885 = getelementptr double, ptr %invariant.gep1884, i64 %index1741
  %wide.load1746 = load <2 x double>, ptr %gep1885, align 8, !tbaa !9, !alias.scope !98
  %gep1887 = getelementptr %struct.doublecomplex, ptr %invariant.gep1886, i64 %index1741
  %interleaved.vec1747 = shufflevector <2 x double> %wide.load1745, <2 x double> %wide.load1746, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1747, ptr %gep1887, align 8, !tbaa !9
  %index.next1748 = add nuw i64 %index1741, 2
  %833 = icmp eq i64 %index.next1748, %n.vec1733
  br i1 %833, label %middle.block1728, label %vector.body1740, !llvm.loop !100

middle.block1728:                                 ; preds = %vector.body1740
  br i1 %cmp.n1749, label %._crit_edge1229.us, label %scalar.ph1729.preheader

scalar.ph1729.preheader:                          ; preds = %middle.block1728, %vector.memcheck1707, %.lr.ph1228.us
  %indvars.iv1446.ph = phi i64 [ %810, %vector.memcheck1707 ], [ %810, %.lr.ph1228.us ], [ %ind.end1734, %middle.block1728 ]
  %indvars.iv1444.ph = phi i64 [ %825, %vector.memcheck1707 ], [ %825, %.lr.ph1228.us ], [ %ind.end1736, %middle.block1728 ]
  %indvars.iv1442.ph = phi i64 [ %824, %vector.memcheck1707 ], [ %824, %.lr.ph1228.us ], [ %ind.end1738, %middle.block1728 ]
  br label %scalar.ph1729

scalar.ph1729:                                    ; preds = %scalar.ph1729.preheader, %scalar.ph1729
  %indvars.iv1446 = phi i64 [ %indvars.iv.next1447, %scalar.ph1729 ], [ %indvars.iv1446.ph, %scalar.ph1729.preheader ]
  %indvars.iv1444 = phi i64 [ %indvars.iv.next1445, %scalar.ph1729 ], [ %indvars.iv1444.ph, %scalar.ph1729.preheader ]
  %indvars.iv1442 = phi i64 [ %indvars.iv.next1443, %scalar.ph1729 ], [ %indvars.iv1442.ph, %scalar.ph1729.preheader ]
  %indvars.iv.next1443 = add nsw i64 %indvars.iv1442, 1
  %indvars.iv.next1445 = add nsw i64 %indvars.iv1444, 1
  %834 = getelementptr double, ptr %11, i64 %indvars.iv1442
  %835 = load double, ptr %834, align 8, !tbaa !9
  %836 = getelementptr double, ptr %11, i64 %indvars.iv1444
  %837 = load double, ptr %836, align 8, !tbaa !9
  %gep1502 = getelementptr %struct.doublecomplex, ptr %invariant.gep1501, i64 %indvars.iv1446
  store double %835, ptr %gep1502, align 8, !tbaa !17
  %838 = getelementptr inbounds i8, ptr %gep1502, i64 8
  store double %837, ptr %838, align 8, !tbaa !39
  %indvars.iv.next1447 = add nsw i64 %indvars.iv1446, 1
  %.not994.not.us = icmp slt i64 %indvars.iv.next1447, %811
  br i1 %.not994.not.us, label %scalar.ph1729, label %._crit_edge1229.us, !llvm.loop !101

._crit_edge1229.us:                               ; preds = %scalar.ph1729, %middle.block1728
  %indvars.iv.next1443.lcssa = phi i64 [ %ind.end1738, %middle.block1728 ], [ %indvars.iv.next1443, %scalar.ph1729 ]
  %indvars.iv.next1445.lcssa = phi i64 [ %ind.end1736, %middle.block1728 ], [ %indvars.iv.next1445, %scalar.ph1729 ]
  %839 = trunc nsw i64 %indvars.iv.next1445.lcssa to i32
  %840 = trunc nsw i64 %indvars.iv.next1443.lcssa to i32
  %indvars.iv.next1454 = add nuw nsw i64 %indvars.iv1453, 1
  %exitcond1457.not = icmp eq i64 %indvars.iv.next1454, %wide.trip.count1456
  br i1 %exitcond1457.not, label %.loopexit, label %.lr.ph1228.us, !llvm.loop !102

841:                                              ; preds = %733
  %842 = sext i32 %719 to i64
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %842
  %844 = add nsw i32 %719, %27
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %29, i64 %845
  %847 = getelementptr inbounds double, ptr %31, i64 %842
  %848 = add i32 %719, %375
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %31, i64 %849
  %851 = add nsw i32 %720, %395
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds i32, ptr %32, i64 %852
  %854 = add nsw i32 %720, %378
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %31, i64 %855
  %857 = add nsw i32 %720, %380
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %31, i64 %858
  %860 = add nsw i32 %720, %382
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %31, i64 %861
  %863 = add nsw i32 %720, %385
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %31, i64 %864
  %866 = add nsw i32 %720, %396
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds i32, ptr %32, i64 %867
  %869 = add nsw i32 %720, %398
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %32, i64 %870
  %872 = add nsw i32 %720, %397
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds i32, ptr %32, i64 %873
  %875 = add nsw i32 %720, %388
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds double, ptr %31, i64 %876
  %878 = add nsw i32 %720, %383
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %31, i64 %879
  %881 = add nsw i32 %720, %384
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds double, ptr %31, i64 %882
  call void @zlalsa_(ptr noundef nonnull %20, ptr noundef nonnull %1, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %843, ptr noundef nonnull %2, ptr noundef %846, ptr noundef nonnull %7, ptr noundef nonnull %847, ptr noundef nonnull %2, ptr noundef nonnull %850, ptr noundef nonnull %853, ptr noundef nonnull %856, ptr noundef nonnull %859, ptr noundef nonnull %862, ptr noundef nonnull %865, ptr noundef nonnull %868, ptr noundef nonnull %871, ptr noundef nonnull %2, ptr noundef nonnull %874, ptr noundef nonnull %877, ptr noundef nonnull %880, ptr noundef nonnull %883, ptr noundef nonnull %704, ptr noundef nonnull %710, ptr noundef nonnull %13) #6
  %884 = load i32, ptr %13, align 4, !tbaa !5
  %.not990 = icmp eq i32 %884, 0
  br i1 %.not990, label %.loopexit, label %.loopexit1027

.loopexit:                                        ; preds = %._crit_edge1229.us, %.lr.ph1237, %._crit_edge1222, %727, %841
  %indvars.iv.next1459 = add nuw nsw i64 %indvars.iv1458, 1
  %.not988.not = icmp ult i64 %indvars.iv1458, %712
  br i1 %.not988.not, label %717, label %._crit_edge1242, !llvm.loop !103

._crit_edge1242:                                  ; preds = %.loopexit, %._crit_edge1194
  call void @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #6
  call void @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #6
  call void @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #6
  br label %.loopexit1027

.loopexit1027:                                    ; preds = %662, %620, %524, %841, %103, %52, %53, %43, %._crit_edge1242, %._crit_edge1131, %99, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  ret void
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare void @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 void @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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

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

declare void @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 #4

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

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

declare void @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 void @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) #5

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 = { inlinehint 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 #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = 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, !25, !26}
!63 = distinct !{!63, !13, !26, !25}
!64 = !{!65}
!65 = distinct !{!65, !66}
!66 = distinct !{!66, !"LVerDomain"}
!67 = !{!68}
!68 = distinct !{!68, !66}
!69 = distinct !{!69, !13, !25, !26}
!70 = distinct !{!70, !13, !25}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !13}
!73 = distinct !{!73, !13}
!74 = !{!75}
!75 = distinct !{!75, !76}
!76 = distinct !{!76, !"LVerDomain"}
!77 = !{!78}
!78 = distinct !{!78, !76}
!79 = distinct !{!79, !13, !25, !26}
!80 = distinct !{!80, !13, !25}
!81 = distinct !{!81, !13}
!82 = distinct !{!82, !13}
!83 = distinct !{!83, !13}
!84 = !{!85}
!85 = distinct !{!85, !86}
!86 = distinct !{!86, !"LVerDomain"}
!87 = !{!88}
!88 = distinct !{!88, !86}
!89 = distinct !{!89, !13, !25, !26}
!90 = distinct !{!90, !28}
!91 = distinct !{!91, !13, !25}
!92 = distinct !{!92, !13}
!93 = distinct !{!93, !13}
!94 = distinct !{!94, !13, !16}
!95 = !{!96}
!96 = distinct !{!96, !97}
!97 = distinct !{!97, !"LVerDomain"}
!98 = !{!99}
!99 = distinct !{!99, !97}
!100 = distinct !{!100, !13, !25, !26}
!101 = distinct !{!101, !13, !25}
!102 = distinct !{!102, !13}
!103 = distinct !{!103, !13}


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