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

; 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 [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b9 = external hidden global double, align 8
@c_b10 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4

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

235:                                              ; preds = %26
  %236 = load ptr, ptr %27, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp sgt i32 %237, 1
  br i1 %238, label %239, label %241

239:                                              ; preds = %235, %26
  %240 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -1, ptr %240, align 4, !tbaa !9
  br label %300

241:                                              ; preds = %235
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %243, 3
  br i1 %244, label %245, label %247

245:                                              ; preds = %241
  %246 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -2, ptr %246, align 4, !tbaa !9
  br label %299

247:                                              ; preds = %241
  %248 = load ptr, ptr %29, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %249, %251
  br i1 %252, label %253, label %255

253:                                              ; preds = %247
  %254 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -3, ptr %254, align 4, !tbaa !9
  br label %298

255:                                              ; preds = %247
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp slt i32 %257, 1
  br i1 %258, label %259, label %261

259:                                              ; preds = %255
  %260 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -4, ptr %260, align 4, !tbaa !9
  br label %297

261:                                              ; preds = %255
  %262 = load ptr, ptr %32, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load ptr, ptr %29, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = icmp slt i32 %263, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %261
  %268 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -6, ptr %268, align 4, !tbaa !9
  br label %296

269:                                              ; preds = %261
  %270 = load ptr, ptr %34, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %29, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp slt i32 %271, %273
  br i1 %274, label %275, label %277

275:                                              ; preds = %269
  %276 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -8, ptr %276, align 4, !tbaa !9
  br label %295

277:                                              ; preds = %269
  %278 = load ptr, ptr %36, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = load ptr, ptr %29, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp slt i32 %279, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %277
  %284 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -10, ptr %284, align 4, !tbaa !9
  br label %294

285:                                              ; preds = %277
  %286 = load ptr, ptr %45, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = load ptr, ptr %29, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = icmp slt i32 %287, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %285
  %292 = load ptr, ptr %52, align 8, !tbaa !5
  store i32 -19, ptr %292, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %291, %285
  br label %294

294:                                              ; preds = %293, %283
  br label %295

295:                                              ; preds = %294, %275
  br label %296

296:                                              ; preds = %295, %267
  br label %297

297:                                              ; preds = %296, %259
  br label %298

298:                                              ; preds = %297, %253
  br label %299

299:                                              ; preds = %298, %245
  br label %300

300:                                              ; preds = %299, %239
  %301 = load ptr, ptr %52, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %309

304:                                              ; preds = %300
  %305 = load ptr, ptr %52, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = sub nsw i32 0, %306
  store i32 %307, ptr %75, align 4, !tbaa !9
  %308 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %75, i32 noundef 6)
  store i32 1, ptr %108, align 4
  br label %1611

309:                                              ; preds = %300
  store i32 1, ptr %90, align 4, !tbaa !9
  %310 = load i32, ptr %90, align 4, !tbaa !9
  %311 = load ptr, ptr %29, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = add nsw i32 %310, %312
  store i32 %313, ptr %91, align 4, !tbaa !9
  %314 = load i32, ptr %91, align 4, !tbaa !9
  %315 = load ptr, ptr %29, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = add nsw i32 %314, %316
  store i32 %317, ptr %92, align 4, !tbaa !9
  %318 = load ptr, ptr %29, align 8, !tbaa !5
  %319 = load ptr, ptr %51, align 8, !tbaa !5
  %320 = load i32, ptr %90, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds i32, ptr %319, i64 %321
  %323 = load ptr, ptr %51, align 8, !tbaa !5
  %324 = load i32, ptr %91, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  %327 = load ptr, ptr %51, align 8, !tbaa !5
  %328 = load i32, ptr %92, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds i32, ptr %327, i64 %329
  %331 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlasdt_(ptr noundef %318, ptr noundef %83, ptr noundef %96, ptr noundef %322, ptr noundef %326, ptr noundef %330, ptr noundef %331)
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %336

335:                                              ; preds = %309
  br label %982

336:                                              ; preds = %309
  %337 = load i32, ptr %96, align 4, !tbaa !9
  %338 = add nsw i32 %337, 1
  %339 = sdiv i32 %338, 2
  store i32 %339, ptr %104, align 4, !tbaa !9
  %340 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %340, ptr %75, align 4, !tbaa !9
  %341 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %341, ptr %86, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %783, %336
  %343 = load i32, ptr %86, align 4, !tbaa !9
  %344 = load i32, ptr %75, align 4, !tbaa !9
  %345 = icmp sle i32 %343, %344
  br i1 %345, label %346, label %786

346:                                              ; preds = %342
  %347 = load i32, ptr %86, align 4, !tbaa !9
  %348 = sub nsw i32 %347, 1
  store i32 %348, ptr %93, align 4, !tbaa !9
  %349 = load ptr, ptr %51, align 8, !tbaa !5
  %350 = load i32, ptr %90, align 4, !tbaa !9
  %351 = load i32, ptr %93, align 4, !tbaa !9
  %352 = add nsw i32 %350, %351
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds i32, ptr %349, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !9
  store i32 %355, ptr %94, align 4, !tbaa !9
  %356 = load ptr, ptr %51, align 8, !tbaa !5
  %357 = load i32, ptr %91, align 4, !tbaa !9
  %358 = load i32, ptr %93, align 4, !tbaa !9
  %359 = add nsw i32 %357, %358
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %356, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !9
  store i32 %362, ptr %98, align 4, !tbaa !9
  %363 = load ptr, ptr %51, align 8, !tbaa !5
  %364 = load i32, ptr %92, align 4, !tbaa !9
  %365 = load i32, ptr %93, align 4, !tbaa !9
  %366 = add nsw i32 %364, %365
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i32, ptr %363, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  store i32 %369, ptr %99, align 4, !tbaa !9
  %370 = load i32, ptr %94, align 4, !tbaa !9
  %371 = load i32, ptr %98, align 4, !tbaa !9
  %372 = sub nsw i32 %370, %371
  store i32 %372, ptr %101, align 4, !tbaa !9
  %373 = load i32, ptr %94, align 4, !tbaa !9
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %102, align 4, !tbaa !9
  %375 = load i32, ptr %98, align 4, !tbaa !9
  %376 = load ptr, ptr %30, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = mul nsw i32 %375, %377
  %379 = shl i32 %378, 1
  store i32 %379, ptr %87, align 4, !tbaa !9
  %380 = load ptr, ptr %30, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  store i32 %381, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %418, %346
  %383 = load i32, ptr %82, align 4, !tbaa !9
  %384 = load i32, ptr %76, align 4, !tbaa !9
  %385 = icmp sle i32 %383, %384
  br i1 %385, label %386, label %421

386:                                              ; preds = %382
  %387 = load i32, ptr %101, align 4, !tbaa !9
  %388 = load i32, ptr %98, align 4, !tbaa !9
  %389 = add nsw i32 %387, %388
  %390 = sub nsw i32 %389, 1
  store i32 %390, ptr %77, align 4, !tbaa !9
  %391 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %391, ptr %85, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %414, %386
  %393 = load i32, ptr %85, align 4, !tbaa !9
  %394 = load i32, ptr %77, align 4, !tbaa !9
  %395 = icmp sle i32 %393, %394
  br i1 %395, label %396, label %417

396:                                              ; preds = %392
  %397 = load i32, ptr %87, align 4, !tbaa !9
  %398 = add nsw i32 %397, 1
  store i32 %398, ptr %87, align 4, !tbaa !9
  %399 = load i32, ptr %85, align 4, !tbaa !9
  %400 = load i32, ptr %82, align 4, !tbaa !9
  %401 = load i32, ptr %71, align 4, !tbaa !9
  %402 = mul nsw i32 %400, %401
  %403 = add nsw i32 %399, %402
  store i32 %403, ptr %78, align 4, !tbaa !9
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = load i32, ptr %78, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds %struct.doublecomplex, ptr %404, i64 %406
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %407, i32 0, i32 0
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = load ptr, ptr %50, align 8, !tbaa !5
  %411 = load i32, ptr %87, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %410, i64 %412
  store double %409, ptr %413, align 8, !tbaa !14
  br label %414

414:                                              ; preds = %396
  %415 = load i32, ptr %85, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %85, align 4, !tbaa !9
  br label %392, !llvm.loop !15

417:                                              ; preds = %392
  br label %418

418:                                              ; preds = %417
  %419 = load i32, ptr %82, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %82, align 4, !tbaa !9
  br label %382, !llvm.loop !17

421:                                              ; preds = %382
  %422 = load ptr, ptr %30, align 8, !tbaa !5
  %423 = load ptr, ptr %35, align 8, !tbaa !5
  %424 = load i32, ptr %101, align 4, !tbaa !9
  %425 = load i32, ptr %65, align 4, !tbaa !9
  %426 = add nsw i32 %424, %425
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %423, i64 %427
  %429 = load ptr, ptr %36, align 8, !tbaa !5
  %430 = load ptr, ptr %50, align 8, !tbaa !5
  %431 = load i32, ptr %98, align 4, !tbaa !9
  %432 = load ptr, ptr %30, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = mul nsw i32 %431, %433
  %435 = shl i32 %434, 1
  %436 = add nsw i32 %435, 1
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %430, i64 %437
  %439 = load ptr, ptr %50, align 8, !tbaa !5
  %440 = getelementptr inbounds double, ptr %439, i64 1
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %98, ptr noundef %422, ptr noundef %98, ptr noundef @c_b9, ptr noundef %428, ptr noundef %429, ptr noundef %438, ptr noundef %98, ptr noundef @c_b10, ptr noundef %440, ptr noundef %98)
  %441 = load i32, ptr %98, align 4, !tbaa !9
  %442 = load ptr, ptr %30, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = mul nsw i32 %441, %443
  %445 = shl i32 %444, 1
  store i32 %445, ptr %87, align 4, !tbaa !9
  %446 = load ptr, ptr %30, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  store i32 %447, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %484, %421
  %449 = load i32, ptr %82, align 4, !tbaa !9
  %450 = load i32, ptr %76, align 4, !tbaa !9
  %451 = icmp sle i32 %449, %450
  br i1 %451, label %452, label %487

452:                                              ; preds = %448
  %453 = load i32, ptr %101, align 4, !tbaa !9
  %454 = load i32, ptr %98, align 4, !tbaa !9
  %455 = add nsw i32 %453, %454
  %456 = sub nsw i32 %455, 1
  store i32 %456, ptr %77, align 4, !tbaa !9
  %457 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %457, ptr %85, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %480, %452
  %459 = load i32, ptr %85, align 4, !tbaa !9
  %460 = load i32, ptr %77, align 4, !tbaa !9
  %461 = icmp sle i32 %459, %460
  br i1 %461, label %462, label %483

462:                                              ; preds = %458
  %463 = load i32, ptr %87, align 4, !tbaa !9
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %87, align 4, !tbaa !9
  %465 = load ptr, ptr %31, align 8, !tbaa !5
  %466 = load i32, ptr %85, align 4, !tbaa !9
  %467 = load i32, ptr %82, align 4, !tbaa !9
  %468 = load i32, ptr %71, align 4, !tbaa !9
  %469 = mul nsw i32 %467, %468
  %470 = add nsw i32 %466, %469
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %465, i64 %471
  %473 = call { double, double } @Cd(ptr noundef %472)
  %474 = extractvalue { double, double } %473, 0
  %475 = extractvalue { double, double } %473, 1
  %476 = load ptr, ptr %50, align 8, !tbaa !5
  %477 = load i32, ptr %87, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %476, i64 %478
  store double %475, ptr %479, align 8, !tbaa !14
  br label %480

480:                                              ; preds = %462
  %481 = load i32, ptr %85, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %85, align 4, !tbaa !9
  br label %458, !llvm.loop !18

483:                                              ; preds = %458
  br label %484

484:                                              ; preds = %483
  %485 = load i32, ptr %82, align 4, !tbaa !9
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %82, align 4, !tbaa !9
  br label %448, !llvm.loop !19

487:                                              ; preds = %448
  %488 = load ptr, ptr %30, align 8, !tbaa !5
  %489 = load ptr, ptr %35, align 8, !tbaa !5
  %490 = load i32, ptr %101, align 4, !tbaa !9
  %491 = load i32, ptr %65, align 4, !tbaa !9
  %492 = add nsw i32 %490, %491
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %489, i64 %493
  %495 = load ptr, ptr %36, align 8, !tbaa !5
  %496 = load ptr, ptr %50, align 8, !tbaa !5
  %497 = load i32, ptr %98, align 4, !tbaa !9
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = mul nsw i32 %497, %499
  %501 = shl i32 %500, 1
  %502 = add nsw i32 %501, 1
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %496, i64 %503
  %505 = load ptr, ptr %50, align 8, !tbaa !5
  %506 = load i32, ptr %98, align 4, !tbaa !9
  %507 = load ptr, ptr %30, align 8, !tbaa !5
  %508 = load i32, ptr %507, align 4, !tbaa !9
  %509 = mul nsw i32 %506, %508
  %510 = add nsw i32 %509, 1
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %505, i64 %511
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %98, ptr noundef %488, ptr noundef %98, ptr noundef @c_b9, ptr noundef %494, ptr noundef %495, ptr noundef %504, ptr noundef %98, ptr noundef @c_b10, ptr noundef %512, ptr noundef %98)
  store i32 0, ptr %89, align 4, !tbaa !9
  %513 = load i32, ptr %98, align 4, !tbaa !9
  %514 = load ptr, ptr %30, align 8, !tbaa !5
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = mul nsw i32 %513, %515
  store i32 %516, ptr %88, align 4, !tbaa !9
  %517 = load ptr, ptr %30, align 8, !tbaa !5
  %518 = load i32, ptr %517, align 4, !tbaa !9
  store i32 %518, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %575, %487
  %520 = load i32, ptr %82, align 4, !tbaa !9
  %521 = load i32, ptr %76, align 4, !tbaa !9
  %522 = icmp sle i32 %520, %521
  br i1 %522, label %523, label %578

523:                                              ; preds = %519
  %524 = load i32, ptr %101, align 4, !tbaa !9
  %525 = load i32, ptr %98, align 4, !tbaa !9
  %526 = add nsw i32 %524, %525
  %527 = sub nsw i32 %526, 1
  store i32 %527, ptr %77, align 4, !tbaa !9
  %528 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %528, ptr %85, align 4, !tbaa !9
  br label %529

529:                                              ; preds = %571, %523
  %530 = load i32, ptr %85, align 4, !tbaa !9
  %531 = load i32, ptr %77, align 4, !tbaa !9
  %532 = icmp sle i32 %530, %531
  br i1 %532, label %533, label %574

533:                                              ; preds = %529
  %534 = load i32, ptr %89, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %89, align 4, !tbaa !9
  %536 = load i32, ptr %88, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %88, align 4, !tbaa !9
  %538 = load i32, ptr %85, align 4, !tbaa !9
  %539 = load i32, ptr %82, align 4, !tbaa !9
  %540 = load i32, ptr %73, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = add nsw i32 %538, %541
  store i32 %542, ptr %78, align 4, !tbaa !9
  %543 = load i32, ptr %89, align 4, !tbaa !9
  store i32 %543, ptr %79, align 4, !tbaa !9
  %544 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %544, ptr %80, align 4, !tbaa !9
  %545 = load ptr, ptr %50, align 8, !tbaa !5
  %546 = load i32, ptr %79, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !14
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  store double %549, ptr %550, align 8, !tbaa !11
  %551 = load ptr, ptr %50, align 8, !tbaa !5
  %552 = load i32, ptr %80, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !14
  %556 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  store double %555, ptr %556, align 8, !tbaa !20
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  %558 = load double, ptr %557, align 8, !tbaa !11
  %559 = load ptr, ptr %33, align 8, !tbaa !5
  %560 = load i32, ptr %78, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %559, i64 %561
  %563 = getelementptr inbounds %struct.doublecomplex, ptr %562, i32 0, i32 0
  store double %558, ptr %563, align 8, !tbaa !11
  %564 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  %565 = load double, ptr %564, align 8, !tbaa !20
  %566 = load ptr, ptr %33, align 8, !tbaa !5
  %567 = load i32, ptr %78, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.doublecomplex, ptr %566, i64 %568
  %570 = getelementptr inbounds %struct.doublecomplex, ptr %569, i32 0, i32 1
  store double %565, ptr %570, align 8, !tbaa !20
  br label %571

571:                                              ; preds = %533
  %572 = load i32, ptr %85, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %85, align 4, !tbaa !9
  br label %529, !llvm.loop !21

574:                                              ; preds = %529
  br label %575

575:                                              ; preds = %574
  %576 = load i32, ptr %82, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr %82, align 4, !tbaa !9
  br label %519, !llvm.loop !22

578:                                              ; preds = %519
  %579 = load i32, ptr %99, align 4, !tbaa !9
  %580 = load ptr, ptr %30, align 8, !tbaa !5
  %581 = load i32, ptr %580, align 4, !tbaa !9
  %582 = mul nsw i32 %579, %581
  %583 = shl i32 %582, 1
  store i32 %583, ptr %87, align 4, !tbaa !9
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load i32, ptr %584, align 4, !tbaa !9
  store i32 %585, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %586

586:                                              ; preds = %622, %578
  %587 = load i32, ptr %82, align 4, !tbaa !9
  %588 = load i32, ptr %76, align 4, !tbaa !9
  %589 = icmp sle i32 %587, %588
  br i1 %589, label %590, label %625

590:                                              ; preds = %586
  %591 = load i32, ptr %102, align 4, !tbaa !9
  %592 = load i32, ptr %99, align 4, !tbaa !9
  %593 = add nsw i32 %591, %592
  %594 = sub nsw i32 %593, 1
  store i32 %594, ptr %77, align 4, !tbaa !9
  %595 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %595, ptr %85, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %618, %590
  %597 = load i32, ptr %85, align 4, !tbaa !9
  %598 = load i32, ptr %77, align 4, !tbaa !9
  %599 = icmp sle i32 %597, %598
  br i1 %599, label %600, label %621

600:                                              ; preds = %596
  %601 = load i32, ptr %87, align 4, !tbaa !9
  %602 = add nsw i32 %601, 1
  store i32 %602, ptr %87, align 4, !tbaa !9
  %603 = load i32, ptr %85, align 4, !tbaa !9
  %604 = load i32, ptr %82, align 4, !tbaa !9
  %605 = load i32, ptr %71, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %603, %606
  store i32 %607, ptr %78, align 4, !tbaa !9
  %608 = load ptr, ptr %31, align 8, !tbaa !5
  %609 = load i32, ptr %78, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds %struct.doublecomplex, ptr %608, i64 %610
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %611, i32 0, i32 0
  %613 = load double, ptr %612, align 8, !tbaa !11
  %614 = load ptr, ptr %50, align 8, !tbaa !5
  %615 = load i32, ptr %87, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  store double %613, ptr %617, align 8, !tbaa !14
  br label %618

618:                                              ; preds = %600
  %619 = load i32, ptr %85, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %85, align 4, !tbaa !9
  br label %596, !llvm.loop !23

621:                                              ; preds = %596
  br label %622

622:                                              ; preds = %621
  %623 = load i32, ptr %82, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %82, align 4, !tbaa !9
  br label %586, !llvm.loop !24

625:                                              ; preds = %586
  %626 = load ptr, ptr %30, align 8, !tbaa !5
  %627 = load ptr, ptr %35, align 8, !tbaa !5
  %628 = load i32, ptr %102, align 4, !tbaa !9
  %629 = load i32, ptr %65, align 4, !tbaa !9
  %630 = add nsw i32 %628, %629
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %627, i64 %631
  %633 = load ptr, ptr %36, align 8, !tbaa !5
  %634 = load ptr, ptr %50, align 8, !tbaa !5
  %635 = load i32, ptr %99, align 4, !tbaa !9
  %636 = load ptr, ptr %30, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = mul nsw i32 %635, %637
  %639 = shl i32 %638, 1
  %640 = add nsw i32 %639, 1
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %634, i64 %641
  %643 = load ptr, ptr %50, align 8, !tbaa !5
  %644 = getelementptr inbounds double, ptr %643, i64 1
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %99, ptr noundef %626, ptr noundef %99, ptr noundef @c_b9, ptr noundef %632, ptr noundef %633, ptr noundef %642, ptr noundef %99, ptr noundef @c_b10, ptr noundef %644, ptr noundef %99)
  %645 = load i32, ptr %99, align 4, !tbaa !9
  %646 = load ptr, ptr %30, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = mul nsw i32 %645, %647
  %649 = shl i32 %648, 1
  store i32 %649, ptr %87, align 4, !tbaa !9
  %650 = load ptr, ptr %30, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  store i32 %651, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %652

652:                                              ; preds = %688, %625
  %653 = load i32, ptr %82, align 4, !tbaa !9
  %654 = load i32, ptr %76, align 4, !tbaa !9
  %655 = icmp sle i32 %653, %654
  br i1 %655, label %656, label %691

656:                                              ; preds = %652
  %657 = load i32, ptr %102, align 4, !tbaa !9
  %658 = load i32, ptr %99, align 4, !tbaa !9
  %659 = add nsw i32 %657, %658
  %660 = sub nsw i32 %659, 1
  store i32 %660, ptr %77, align 4, !tbaa !9
  %661 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %661, ptr %85, align 4, !tbaa !9
  br label %662

662:                                              ; preds = %684, %656
  %663 = load i32, ptr %85, align 4, !tbaa !9
  %664 = load i32, ptr %77, align 4, !tbaa !9
  %665 = icmp sle i32 %663, %664
  br i1 %665, label %666, label %687

666:                                              ; preds = %662
  %667 = load i32, ptr %87, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %87, align 4, !tbaa !9
  %669 = load ptr, ptr %31, align 8, !tbaa !5
  %670 = load i32, ptr %85, align 4, !tbaa !9
  %671 = load i32, ptr %82, align 4, !tbaa !9
  %672 = load i32, ptr %71, align 4, !tbaa !9
  %673 = mul nsw i32 %671, %672
  %674 = add nsw i32 %670, %673
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %669, i64 %675
  %677 = call { double, double } @Cd(ptr noundef %676)
  %678 = extractvalue { double, double } %677, 0
  %679 = extractvalue { double, double } %677, 1
  %680 = load ptr, ptr %50, align 8, !tbaa !5
  %681 = load i32, ptr %87, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  store double %679, ptr %683, align 8, !tbaa !14
  br label %684

684:                                              ; preds = %666
  %685 = load i32, ptr %85, align 4, !tbaa !9
  %686 = add nsw i32 %685, 1
  store i32 %686, ptr %85, align 4, !tbaa !9
  br label %662, !llvm.loop !25

687:                                              ; preds = %662
  br label %688

688:                                              ; preds = %687
  %689 = load i32, ptr %82, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr %82, align 4, !tbaa !9
  br label %652, !llvm.loop !26

691:                                              ; preds = %652
  %692 = load ptr, ptr %30, align 8, !tbaa !5
  %693 = load ptr, ptr %35, align 8, !tbaa !5
  %694 = load i32, ptr %102, align 4, !tbaa !9
  %695 = load i32, ptr %65, align 4, !tbaa !9
  %696 = add nsw i32 %694, %695
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %693, i64 %697
  %699 = load ptr, ptr %36, align 8, !tbaa !5
  %700 = load ptr, ptr %50, align 8, !tbaa !5
  %701 = load i32, ptr %99, align 4, !tbaa !9
  %702 = load ptr, ptr %30, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = mul nsw i32 %701, %703
  %705 = shl i32 %704, 1
  %706 = add nsw i32 %705, 1
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %700, i64 %707
  %709 = load ptr, ptr %50, align 8, !tbaa !5
  %710 = load i32, ptr %99, align 4, !tbaa !9
  %711 = load ptr, ptr %30, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = mul nsw i32 %710, %712
  %714 = add nsw i32 %713, 1
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %709, i64 %715
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %99, ptr noundef %692, ptr noundef %99, ptr noundef @c_b9, ptr noundef %698, ptr noundef %699, ptr noundef %708, ptr noundef %99, ptr noundef @c_b10, ptr noundef %716, ptr noundef %99)
  store i32 0, ptr %89, align 4, !tbaa !9
  %717 = load i32, ptr %99, align 4, !tbaa !9
  %718 = load ptr, ptr %30, align 8, !tbaa !5
  %719 = load i32, ptr %718, align 4, !tbaa !9
  %720 = mul nsw i32 %717, %719
  store i32 %720, ptr %88, align 4, !tbaa !9
  %721 = load ptr, ptr %30, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  store i32 %722, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %723

723:                                              ; preds = %779, %691
  %724 = load i32, ptr %82, align 4, !tbaa !9
  %725 = load i32, ptr %76, align 4, !tbaa !9
  %726 = icmp sle i32 %724, %725
  br i1 %726, label %727, label %782

727:                                              ; preds = %723
  %728 = load i32, ptr %102, align 4, !tbaa !9
  %729 = load i32, ptr %99, align 4, !tbaa !9
  %730 = add nsw i32 %728, %729
  %731 = sub nsw i32 %730, 1
  store i32 %731, ptr %77, align 4, !tbaa !9
  %732 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %732, ptr %85, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %775, %727
  %734 = load i32, ptr %85, align 4, !tbaa !9
  %735 = load i32, ptr %77, align 4, !tbaa !9
  %736 = icmp sle i32 %734, %735
  br i1 %736, label %737, label %778

737:                                              ; preds = %733
  %738 = load i32, ptr %89, align 4, !tbaa !9
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %89, align 4, !tbaa !9
  %740 = load i32, ptr %88, align 4, !tbaa !9
  %741 = add nsw i32 %740, 1
  store i32 %741, ptr %88, align 4, !tbaa !9
  %742 = load i32, ptr %85, align 4, !tbaa !9
  %743 = load i32, ptr %82, align 4, !tbaa !9
  %744 = load i32, ptr %73, align 4, !tbaa !9
  %745 = mul nsw i32 %743, %744
  %746 = add nsw i32 %742, %745
  store i32 %746, ptr %78, align 4, !tbaa !9
  %747 = load i32, ptr %89, align 4, !tbaa !9
  store i32 %747, ptr %79, align 4, !tbaa !9
  %748 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %748, ptr %80, align 4, !tbaa !9
  %749 = load ptr, ptr %50, align 8, !tbaa !5
  %750 = load i32, ptr %79, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %749, i64 %751
  %753 = load double, ptr %752, align 8, !tbaa !14
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  store double %753, ptr %754, align 8, !tbaa !11
  %755 = load ptr, ptr %50, align 8, !tbaa !5
  %756 = load i32, ptr %80, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !14
  %760 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  store double %759, ptr %760, align 8, !tbaa !20
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  %762 = load double, ptr %761, align 8, !tbaa !11
  %763 = load ptr, ptr %33, align 8, !tbaa !5
  %764 = load i32, ptr %78, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds %struct.doublecomplex, ptr %763, i64 %765
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %766, i32 0, i32 0
  store double %762, ptr %767, align 8, !tbaa !11
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  %769 = load double, ptr %768, align 8, !tbaa !20
  %770 = load ptr, ptr %33, align 8, !tbaa !5
  %771 = load i32, ptr %78, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %772
  %774 = getelementptr inbounds %struct.doublecomplex, ptr %773, i32 0, i32 1
  store double %769, ptr %774, align 8, !tbaa !20
  br label %775

775:                                              ; preds = %737
  %776 = load i32, ptr %85, align 4, !tbaa !9
  %777 = add nsw i32 %776, 1
  store i32 %777, ptr %85, align 4, !tbaa !9
  br label %733, !llvm.loop !27

778:                                              ; preds = %733
  br label %779

779:                                              ; preds = %778
  %780 = load i32, ptr %82, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %82, align 4, !tbaa !9
  br label %723, !llvm.loop !28

782:                                              ; preds = %723
  br label %783

783:                                              ; preds = %782
  %784 = load i32, ptr %86, align 4, !tbaa !9
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr %86, align 4, !tbaa !9
  br label %342, !llvm.loop !29

786:                                              ; preds = %342
  %787 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %787, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %86, align 4, !tbaa !9
  br label %788

788:                                              ; preds = %816, %786
  %789 = load i32, ptr %86, align 4, !tbaa !9
  %790 = load i32, ptr %75, align 4, !tbaa !9
  %791 = icmp sle i32 %789, %790
  br i1 %791, label %792, label %819

792:                                              ; preds = %788
  %793 = load ptr, ptr %51, align 8, !tbaa !5
  %794 = load i32, ptr %90, align 4, !tbaa !9
  %795 = load i32, ptr %86, align 4, !tbaa !9
  %796 = add nsw i32 %794, %795
  %797 = sub nsw i32 %796, 1
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds i32, ptr %793, i64 %798
  %800 = load i32, ptr %799, align 4, !tbaa !9
  store i32 %800, ptr %94, align 4, !tbaa !9
  %801 = load ptr, ptr %30, align 8, !tbaa !5
  %802 = load ptr, ptr %31, align 8, !tbaa !5
  %803 = load i32, ptr %94, align 4, !tbaa !9
  %804 = load i32, ptr %71, align 4, !tbaa !9
  %805 = add nsw i32 %803, %804
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds %struct.doublecomplex, ptr %802, i64 %806
  %808 = load ptr, ptr %32, align 8, !tbaa !5
  %809 = load ptr, ptr %33, align 8, !tbaa !5
  %810 = load i32, ptr %94, align 4, !tbaa !9
  %811 = load i32, ptr %73, align 4, !tbaa !9
  %812 = add nsw i32 %810, %811
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 %813
  %815 = load ptr, ptr %34, align 8, !tbaa !5
  call void @zcopy_(ptr noundef %801, ptr noundef %807, ptr noundef %808, ptr noundef %814, ptr noundef %815)
  br label %816

816:                                              ; preds = %792
  %817 = load i32, ptr %86, align 4, !tbaa !9
  %818 = add nsw i32 %817, 1
  store i32 %818, ptr %86, align 4, !tbaa !9
  br label %788, !llvm.loop !30

819:                                              ; preds = %788
  %820 = load i32, ptr @c__2, align 4, !tbaa !9
  %821 = load i32, ptr %83, align 4, !tbaa !9
  %822 = call i32 @pow_ii(i32 noundef %820, i32 noundef %821)
  store i32 %822, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %84, align 4, !tbaa !9
  %823 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %823, ptr %103, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %978, %819
  %825 = load i32, ptr %103, align 4, !tbaa !9
  %826 = icmp sge i32 %825, 1
  br i1 %826, label %827, label %981

827:                                              ; preds = %824
  %828 = load i32, ptr %103, align 4, !tbaa !9
  %829 = shl i32 %828, 1
  %830 = sub nsw i32 %829, 1
  store i32 %830, ptr %106, align 4, !tbaa !9
  %831 = load i32, ptr %103, align 4, !tbaa !9
  %832 = icmp eq i32 %831, 1
  br i1 %832, label %833, label %834

833:                                              ; preds = %827
  store i32 1, ptr %95, align 4, !tbaa !9
  store i32 1, ptr %97, align 4, !tbaa !9
  br label %843

834:                                              ; preds = %827
  %835 = load i32, ptr %103, align 4, !tbaa !9
  %836 = sub nsw i32 %835, 1
  store i32 %836, ptr %75, align 4, !tbaa !9
  %837 = load i32, ptr @c__2, align 4, !tbaa !9
  %838 = load i32, ptr %75, align 4, !tbaa !9
  %839 = call i32 @pow_ii(i32 noundef %837, i32 noundef %838)
  store i32 %839, ptr %95, align 4, !tbaa !9
  %840 = load i32, ptr %95, align 4, !tbaa !9
  %841 = shl i32 %840, 1
  %842 = sub nsw i32 %841, 1
  store i32 %842, ptr %97, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %834, %833
  %844 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %844, ptr %75, align 4, !tbaa !9
  %845 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %845, ptr %86, align 4, !tbaa !9
  br label %846

846:                                              ; preds = %974, %843
  %847 = load i32, ptr %86, align 4, !tbaa !9
  %848 = load i32, ptr %75, align 4, !tbaa !9
  %849 = icmp sle i32 %847, %848
  br i1 %849, label %850, label %977

850:                                              ; preds = %846
  %851 = load i32, ptr %86, align 4, !tbaa !9
  %852 = sub nsw i32 %851, 1
  store i32 %852, ptr %100, align 4, !tbaa !9
  %853 = load ptr, ptr %51, align 8, !tbaa !5
  %854 = load i32, ptr %90, align 4, !tbaa !9
  %855 = load i32, ptr %100, align 4, !tbaa !9
  %856 = add nsw i32 %854, %855
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i32, ptr %853, i64 %857
  %859 = load i32, ptr %858, align 4, !tbaa !9
  store i32 %859, ptr %94, align 4, !tbaa !9
  %860 = load ptr, ptr %51, align 8, !tbaa !5
  %861 = load i32, ptr %91, align 4, !tbaa !9
  %862 = load i32, ptr %100, align 4, !tbaa !9
  %863 = add nsw i32 %861, %862
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds i32, ptr %860, i64 %864
  %866 = load i32, ptr %865, align 4, !tbaa !9
  store i32 %866, ptr %98, align 4, !tbaa !9
  %867 = load ptr, ptr %51, align 8, !tbaa !5
  %868 = load i32, ptr %92, align 4, !tbaa !9
  %869 = load i32, ptr %100, align 4, !tbaa !9
  %870 = add nsw i32 %868, %869
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds i32, ptr %867, i64 %871
  %873 = load i32, ptr %872, align 4, !tbaa !9
  store i32 %873, ptr %99, align 4, !tbaa !9
  %874 = load i32, ptr %94, align 4, !tbaa !9
  %875 = load i32, ptr %98, align 4, !tbaa !9
  %876 = sub nsw i32 %874, %875
  store i32 %876, ptr %101, align 4, !tbaa !9
  %877 = load i32, ptr %94, align 4, !tbaa !9
  %878 = add nsw i32 %877, 1
  store i32 %878, ptr %102, align 4, !tbaa !9
  %879 = load i32, ptr %87, align 4, !tbaa !9
  %880 = add nsw i32 %879, -1
  store i32 %880, ptr %87, align 4, !tbaa !9
  %881 = load ptr, ptr %27, align 8, !tbaa !5
  %882 = load ptr, ptr %30, align 8, !tbaa !5
  %883 = load ptr, ptr %33, align 8, !tbaa !5
  %884 = load i32, ptr %101, align 4, !tbaa !9
  %885 = load i32, ptr %73, align 4, !tbaa !9
  %886 = add nsw i32 %884, %885
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %883, i64 %887
  %889 = load ptr, ptr %34, align 8, !tbaa !5
  %890 = load ptr, ptr %31, align 8, !tbaa !5
  %891 = load i32, ptr %101, align 4, !tbaa !9
  %892 = load i32, ptr %71, align 4, !tbaa !9
  %893 = add nsw i32 %891, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %890, i64 %894
  %896 = load ptr, ptr %32, align 8, !tbaa !5
  %897 = load ptr, ptr %46, align 8, !tbaa !5
  %898 = load i32, ptr %101, align 4, !tbaa !9
  %899 = load i32, ptr %103, align 4, !tbaa !9
  %900 = load i32, ptr %55, align 4, !tbaa !9
  %901 = mul nsw i32 %899, %900
  %902 = add nsw i32 %898, %901
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds i32, ptr %897, i64 %903
  %905 = load ptr, ptr %43, align 8, !tbaa !5
  %906 = load i32, ptr %87, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds i32, ptr %905, i64 %907
  %909 = load ptr, ptr %44, align 8, !tbaa !5
  %910 = load i32, ptr %101, align 4, !tbaa !9
  %911 = load i32, ptr %106, align 4, !tbaa !9
  %912 = load i32, ptr %53, align 4, !tbaa !9
  %913 = mul nsw i32 %911, %912
  %914 = add nsw i32 %910, %913
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds i32, ptr %909, i64 %915
  %917 = load ptr, ptr %45, align 8, !tbaa !5
  %918 = load ptr, ptr %47, align 8, !tbaa !5
  %919 = load i32, ptr %101, align 4, !tbaa !9
  %920 = load i32, ptr %106, align 4, !tbaa !9
  %921 = load i32, ptr %61, align 4, !tbaa !9
  %922 = mul nsw i32 %920, %921
  %923 = add nsw i32 %919, %922
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %918, i64 %924
  %926 = load ptr, ptr %36, align 8, !tbaa !5
  %927 = load ptr, ptr %42, align 8, !tbaa !5
  %928 = load i32, ptr %101, align 4, !tbaa !9
  %929 = load i32, ptr %106, align 4, !tbaa !9
  %930 = load i32, ptr %63, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %928, %931
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %927, i64 %933
  %935 = load ptr, ptr %39, align 8, !tbaa !5
  %936 = load i32, ptr %101, align 4, !tbaa !9
  %937 = load i32, ptr %103, align 4, !tbaa !9
  %938 = load i32, ptr %57, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %936, %939
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %935, i64 %941
  %943 = load ptr, ptr %40, align 8, !tbaa !5
  %944 = load i32, ptr %101, align 4, !tbaa !9
  %945 = load i32, ptr %106, align 4, !tbaa !9
  %946 = load i32, ptr %59, align 4, !tbaa !9
  %947 = mul nsw i32 %945, %946
  %948 = add nsw i32 %944, %947
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %943, i64 %949
  %951 = load ptr, ptr %41, align 8, !tbaa !5
  %952 = load i32, ptr %101, align 4, !tbaa !9
  %953 = load i32, ptr %103, align 4, !tbaa !9
  %954 = load i32, ptr %69, align 4, !tbaa !9
  %955 = mul nsw i32 %953, %954
  %956 = add nsw i32 %952, %955
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %951, i64 %957
  %959 = load ptr, ptr %38, align 8, !tbaa !5
  %960 = load i32, ptr %87, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load ptr, ptr %48, align 8, !tbaa !5
  %964 = load i32, ptr %87, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds double, ptr %963, i64 %965
  %967 = load ptr, ptr %49, align 8, !tbaa !5
  %968 = load i32, ptr %87, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load ptr, ptr %50, align 8, !tbaa !5
  %972 = getelementptr inbounds double, ptr %971, i64 1
  %973 = load ptr, ptr %52, align 8, !tbaa !5
  call void @zlals0_(ptr noundef %881, ptr noundef %98, ptr noundef %99, ptr noundef %84, ptr noundef %882, ptr noundef %888, ptr noundef %889, ptr noundef %895, ptr noundef %896, ptr noundef %904, ptr noundef %908, ptr noundef %916, ptr noundef %917, ptr noundef %925, ptr noundef %926, ptr noundef %934, ptr noundef %942, ptr noundef %950, ptr noundef %958, ptr noundef %962, ptr noundef %966, ptr noundef %970, ptr noundef %972, ptr noundef %973)
  br label %974

974:                                              ; preds = %850
  %975 = load i32, ptr %86, align 4, !tbaa !9
  %976 = add nsw i32 %975, 1
  store i32 %976, ptr %86, align 4, !tbaa !9
  br label %846, !llvm.loop !31

977:                                              ; preds = %846
  br label %978

978:                                              ; preds = %977
  %979 = load i32, ptr %103, align 4, !tbaa !9
  %980 = add nsw i32 %979, -1
  store i32 %980, ptr %103, align 4, !tbaa !9
  br label %824, !llvm.loop !32

981:                                              ; preds = %824
  br label %1610

982:                                              ; preds = %335
  store i32 0, ptr %87, align 4, !tbaa !9
  %983 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %983, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %103, align 4, !tbaa !9
  br label %984

984:                                              ; preds = %1145, %982
  %985 = load i32, ptr %103, align 4, !tbaa !9
  %986 = load i32, ptr %75, align 4, !tbaa !9
  %987 = icmp sle i32 %985, %986
  br i1 %987, label %988, label %1148

988:                                              ; preds = %984
  %989 = load i32, ptr %103, align 4, !tbaa !9
  %990 = shl i32 %989, 1
  %991 = sub nsw i32 %990, 1
  store i32 %991, ptr %106, align 4, !tbaa !9
  %992 = load i32, ptr %103, align 4, !tbaa !9
  %993 = icmp eq i32 %992, 1
  br i1 %993, label %994, label %995

994:                                              ; preds = %988
  store i32 1, ptr %95, align 4, !tbaa !9
  store i32 1, ptr %97, align 4, !tbaa !9
  br label %1004

995:                                              ; preds = %988
  %996 = load i32, ptr %103, align 4, !tbaa !9
  %997 = sub nsw i32 %996, 1
  store i32 %997, ptr %76, align 4, !tbaa !9
  %998 = load i32, ptr @c__2, align 4, !tbaa !9
  %999 = load i32, ptr %76, align 4, !tbaa !9
  %1000 = call i32 @pow_ii(i32 noundef %998, i32 noundef %999)
  store i32 %1000, ptr %95, align 4, !tbaa !9
  %1001 = load i32, ptr %95, align 4, !tbaa !9
  %1002 = shl i32 %1001, 1
  %1003 = sub nsw i32 %1002, 1
  store i32 %1003, ptr %97, align 4, !tbaa !9
  br label %1004

1004:                                             ; preds = %995, %994
  %1005 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %1005, ptr %76, align 4, !tbaa !9
  %1006 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %1006, ptr %86, align 4, !tbaa !9
  br label %1007

1007:                                             ; preds = %1141, %1004
  %1008 = load i32, ptr %86, align 4, !tbaa !9
  %1009 = load i32, ptr %76, align 4, !tbaa !9
  %1010 = icmp sge i32 %1008, %1009
  br i1 %1010, label %1011, label %1144

1011:                                             ; preds = %1007
  %1012 = load i32, ptr %86, align 4, !tbaa !9
  %1013 = sub nsw i32 %1012, 1
  store i32 %1013, ptr %100, align 4, !tbaa !9
  %1014 = load ptr, ptr %51, align 8, !tbaa !5
  %1015 = load i32, ptr %90, align 4, !tbaa !9
  %1016 = load i32, ptr %100, align 4, !tbaa !9
  %1017 = add nsw i32 %1015, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds i32, ptr %1014, i64 %1018
  %1020 = load i32, ptr %1019, align 4, !tbaa !9
  store i32 %1020, ptr %94, align 4, !tbaa !9
  %1021 = load ptr, ptr %51, align 8, !tbaa !5
  %1022 = load i32, ptr %91, align 4, !tbaa !9
  %1023 = load i32, ptr %100, align 4, !tbaa !9
  %1024 = add nsw i32 %1022, %1023
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds i32, ptr %1021, i64 %1025
  %1027 = load i32, ptr %1026, align 4, !tbaa !9
  store i32 %1027, ptr %98, align 4, !tbaa !9
  %1028 = load ptr, ptr %51, align 8, !tbaa !5
  %1029 = load i32, ptr %92, align 4, !tbaa !9
  %1030 = load i32, ptr %100, align 4, !tbaa !9
  %1031 = add nsw i32 %1029, %1030
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds i32, ptr %1028, i64 %1032
  %1034 = load i32, ptr %1033, align 4, !tbaa !9
  store i32 %1034, ptr %99, align 4, !tbaa !9
  %1035 = load i32, ptr %94, align 4, !tbaa !9
  %1036 = load i32, ptr %98, align 4, !tbaa !9
  %1037 = sub nsw i32 %1035, %1036
  store i32 %1037, ptr %101, align 4, !tbaa !9
  %1038 = load i32, ptr %94, align 4, !tbaa !9
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr %102, align 4, !tbaa !9
  %1040 = load i32, ptr %86, align 4, !tbaa !9
  %1041 = load i32, ptr %97, align 4, !tbaa !9
  %1042 = icmp eq i32 %1040, %1041
  br i1 %1042, label %1043, label %1044

1043:                                             ; preds = %1011
  store i32 0, ptr %84, align 4, !tbaa !9
  br label %1045

1044:                                             ; preds = %1011
  store i32 1, ptr %84, align 4, !tbaa !9
  br label %1045

1045:                                             ; preds = %1044, %1043
  %1046 = load i32, ptr %87, align 4, !tbaa !9
  %1047 = add nsw i32 %1046, 1
  store i32 %1047, ptr %87, align 4, !tbaa !9
  %1048 = load ptr, ptr %27, align 8, !tbaa !5
  %1049 = load ptr, ptr %30, align 8, !tbaa !5
  %1050 = load ptr, ptr %31, align 8, !tbaa !5
  %1051 = load i32, ptr %101, align 4, !tbaa !9
  %1052 = load i32, ptr %71, align 4, !tbaa !9
  %1053 = add nsw i32 %1051, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1050, i64 %1054
  %1056 = load ptr, ptr %32, align 8, !tbaa !5
  %1057 = load ptr, ptr %33, align 8, !tbaa !5
  %1058 = load i32, ptr %101, align 4, !tbaa !9
  %1059 = load i32, ptr %73, align 4, !tbaa !9
  %1060 = add nsw i32 %1058, %1059
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1057, i64 %1061
  %1063 = load ptr, ptr %34, align 8, !tbaa !5
  %1064 = load ptr, ptr %46, align 8, !tbaa !5
  %1065 = load i32, ptr %101, align 4, !tbaa !9
  %1066 = load i32, ptr %103, align 4, !tbaa !9
  %1067 = load i32, ptr %55, align 4, !tbaa !9
  %1068 = mul nsw i32 %1066, %1067
  %1069 = add nsw i32 %1065, %1068
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds i32, ptr %1064, i64 %1070
  %1072 = load ptr, ptr %43, align 8, !tbaa !5
  %1073 = load i32, ptr %87, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds i32, ptr %1072, i64 %1074
  %1076 = load ptr, ptr %44, align 8, !tbaa !5
  %1077 = load i32, ptr %101, align 4, !tbaa !9
  %1078 = load i32, ptr %106, align 4, !tbaa !9
  %1079 = load i32, ptr %53, align 4, !tbaa !9
  %1080 = mul nsw i32 %1078, %1079
  %1081 = add nsw i32 %1077, %1080
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds i32, ptr %1076, i64 %1082
  %1084 = load ptr, ptr %45, align 8, !tbaa !5
  %1085 = load ptr, ptr %47, align 8, !tbaa !5
  %1086 = load i32, ptr %101, align 4, !tbaa !9
  %1087 = load i32, ptr %106, align 4, !tbaa !9
  %1088 = load i32, ptr %61, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1086, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1085, i64 %1091
  %1093 = load ptr, ptr %36, align 8, !tbaa !5
  %1094 = load ptr, ptr %42, align 8, !tbaa !5
  %1095 = load i32, ptr %101, align 4, !tbaa !9
  %1096 = load i32, ptr %106, align 4, !tbaa !9
  %1097 = load i32, ptr %63, align 4, !tbaa !9
  %1098 = mul nsw i32 %1096, %1097
  %1099 = add nsw i32 %1095, %1098
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1094, i64 %1100
  %1102 = load ptr, ptr %39, align 8, !tbaa !5
  %1103 = load i32, ptr %101, align 4, !tbaa !9
  %1104 = load i32, ptr %103, align 4, !tbaa !9
  %1105 = load i32, ptr %57, align 4, !tbaa !9
  %1106 = mul nsw i32 %1104, %1105
  %1107 = add nsw i32 %1103, %1106
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1102, i64 %1108
  %1110 = load ptr, ptr %40, align 8, !tbaa !5
  %1111 = load i32, ptr %101, align 4, !tbaa !9
  %1112 = load i32, ptr %106, align 4, !tbaa !9
  %1113 = load i32, ptr %59, align 4, !tbaa !9
  %1114 = mul nsw i32 %1112, %1113
  %1115 = add nsw i32 %1111, %1114
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds double, ptr %1110, i64 %1116
  %1118 = load ptr, ptr %41, align 8, !tbaa !5
  %1119 = load i32, ptr %101, align 4, !tbaa !9
  %1120 = load i32, ptr %103, align 4, !tbaa !9
  %1121 = load i32, ptr %69, align 4, !tbaa !9
  %1122 = mul nsw i32 %1120, %1121
  %1123 = add nsw i32 %1119, %1122
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1118, i64 %1124
  %1126 = load ptr, ptr %38, align 8, !tbaa !5
  %1127 = load i32, ptr %87, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds i32, ptr %1126, i64 %1128
  %1130 = load ptr, ptr %48, align 8, !tbaa !5
  %1131 = load i32, ptr %87, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1130, i64 %1132
  %1134 = load ptr, ptr %49, align 8, !tbaa !5
  %1135 = load i32, ptr %87, align 4, !tbaa !9
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds double, ptr %1134, i64 %1136
  %1138 = load ptr, ptr %50, align 8, !tbaa !5
  %1139 = getelementptr inbounds double, ptr %1138, i64 1
  %1140 = load ptr, ptr %52, align 8, !tbaa !5
  call void @zlals0_(ptr noundef %1048, ptr noundef %98, ptr noundef %99, ptr noundef %84, ptr noundef %1049, ptr noundef %1055, ptr noundef %1056, ptr noundef %1062, ptr noundef %1063, ptr noundef %1071, ptr noundef %1075, ptr noundef %1083, ptr noundef %1084, ptr noundef %1092, ptr noundef %1093, ptr noundef %1101, ptr noundef %1109, ptr noundef %1117, ptr noundef %1125, ptr noundef %1129, ptr noundef %1133, ptr noundef %1137, ptr noundef %1139, ptr noundef %1140)
  br label %1141

1141:                                             ; preds = %1045
  %1142 = load i32, ptr %86, align 4, !tbaa !9
  %1143 = add nsw i32 %1142, -1
  store i32 %1143, ptr %86, align 4, !tbaa !9
  br label %1007, !llvm.loop !33

1144:                                             ; preds = %1007
  br label %1145

1145:                                             ; preds = %1144
  %1146 = load i32, ptr %103, align 4, !tbaa !9
  %1147 = add nsw i32 %1146, 1
  store i32 %1147, ptr %103, align 4, !tbaa !9
  br label %984, !llvm.loop !34

1148:                                             ; preds = %984
  %1149 = load i32, ptr %96, align 4, !tbaa !9
  %1150 = add nsw i32 %1149, 1
  %1151 = sdiv i32 %1150, 2
  store i32 %1151, ptr %104, align 4, !tbaa !9
  %1152 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %1152, ptr %75, align 4, !tbaa !9
  %1153 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %1153, ptr %86, align 4, !tbaa !9
  br label %1154

1154:                                             ; preds = %1606, %1148
  %1155 = load i32, ptr %86, align 4, !tbaa !9
  %1156 = load i32, ptr %75, align 4, !tbaa !9
  %1157 = icmp sle i32 %1155, %1156
  br i1 %1157, label %1158, label %1609

1158:                                             ; preds = %1154
  %1159 = load i32, ptr %86, align 4, !tbaa !9
  %1160 = sub nsw i32 %1159, 1
  store i32 %1160, ptr %93, align 4, !tbaa !9
  %1161 = load ptr, ptr %51, align 8, !tbaa !5
  %1162 = load i32, ptr %90, align 4, !tbaa !9
  %1163 = load i32, ptr %93, align 4, !tbaa !9
  %1164 = add nsw i32 %1162, %1163
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds i32, ptr %1161, i64 %1165
  %1167 = load i32, ptr %1166, align 4, !tbaa !9
  store i32 %1167, ptr %94, align 4, !tbaa !9
  %1168 = load ptr, ptr %51, align 8, !tbaa !5
  %1169 = load i32, ptr %91, align 4, !tbaa !9
  %1170 = load i32, ptr %93, align 4, !tbaa !9
  %1171 = add nsw i32 %1169, %1170
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds i32, ptr %1168, i64 %1172
  %1174 = load i32, ptr %1173, align 4, !tbaa !9
  store i32 %1174, ptr %98, align 4, !tbaa !9
  %1175 = load ptr, ptr %51, align 8, !tbaa !5
  %1176 = load i32, ptr %92, align 4, !tbaa !9
  %1177 = load i32, ptr %93, align 4, !tbaa !9
  %1178 = add nsw i32 %1176, %1177
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds i32, ptr %1175, i64 %1179
  %1181 = load i32, ptr %1180, align 4, !tbaa !9
  store i32 %1181, ptr %99, align 4, !tbaa !9
  %1182 = load i32, ptr %98, align 4, !tbaa !9
  %1183 = add nsw i32 %1182, 1
  store i32 %1183, ptr %105, align 4, !tbaa !9
  %1184 = load i32, ptr %86, align 4, !tbaa !9
  %1185 = load i32, ptr %96, align 4, !tbaa !9
  %1186 = icmp eq i32 %1184, %1185
  br i1 %1186, label %1187, label %1189

1187:                                             ; preds = %1158
  %1188 = load i32, ptr %99, align 4, !tbaa !9
  store i32 %1188, ptr %107, align 4, !tbaa !9
  br label %1192

1189:                                             ; preds = %1158
  %1190 = load i32, ptr %99, align 4, !tbaa !9
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr %107, align 4, !tbaa !9
  br label %1192

1192:                                             ; preds = %1189, %1187
  %1193 = load i32, ptr %94, align 4, !tbaa !9
  %1194 = load i32, ptr %98, align 4, !tbaa !9
  %1195 = sub nsw i32 %1193, %1194
  store i32 %1195, ptr %101, align 4, !tbaa !9
  %1196 = load i32, ptr %94, align 4, !tbaa !9
  %1197 = add nsw i32 %1196, 1
  store i32 %1197, ptr %102, align 4, !tbaa !9
  %1198 = load i32, ptr %105, align 4, !tbaa !9
  %1199 = load ptr, ptr %30, align 8, !tbaa !5
  %1200 = load i32, ptr %1199, align 4, !tbaa !9
  %1201 = mul nsw i32 %1198, %1200
  %1202 = shl i32 %1201, 1
  store i32 %1202, ptr %87, align 4, !tbaa !9
  %1203 = load ptr, ptr %30, align 8, !tbaa !5
  %1204 = load i32, ptr %1203, align 4, !tbaa !9
  store i32 %1204, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1205

1205:                                             ; preds = %1241, %1192
  %1206 = load i32, ptr %82, align 4, !tbaa !9
  %1207 = load i32, ptr %76, align 4, !tbaa !9
  %1208 = icmp sle i32 %1206, %1207
  br i1 %1208, label %1209, label %1244

1209:                                             ; preds = %1205
  %1210 = load i32, ptr %101, align 4, !tbaa !9
  %1211 = load i32, ptr %105, align 4, !tbaa !9
  %1212 = add nsw i32 %1210, %1211
  %1213 = sub nsw i32 %1212, 1
  store i32 %1213, ptr %77, align 4, !tbaa !9
  %1214 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %1214, ptr %85, align 4, !tbaa !9
  br label %1215

1215:                                             ; preds = %1237, %1209
  %1216 = load i32, ptr %85, align 4, !tbaa !9
  %1217 = load i32, ptr %77, align 4, !tbaa !9
  %1218 = icmp sle i32 %1216, %1217
  br i1 %1218, label %1219, label %1240

1219:                                             ; preds = %1215
  %1220 = load i32, ptr %87, align 4, !tbaa !9
  %1221 = add nsw i32 %1220, 1
  store i32 %1221, ptr %87, align 4, !tbaa !9
  %1222 = load i32, ptr %85, align 4, !tbaa !9
  %1223 = load i32, ptr %82, align 4, !tbaa !9
  %1224 = load i32, ptr %71, align 4, !tbaa !9
  %1225 = mul nsw i32 %1223, %1224
  %1226 = add nsw i32 %1222, %1225
  store i32 %1226, ptr %78, align 4, !tbaa !9
  %1227 = load ptr, ptr %31, align 8, !tbaa !5
  %1228 = load i32, ptr %78, align 4, !tbaa !9
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds %struct.doublecomplex, ptr %1227, i64 %1229
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %1230, i32 0, i32 0
  %1232 = load double, ptr %1231, align 8, !tbaa !11
  %1233 = load ptr, ptr %50, align 8, !tbaa !5
  %1234 = load i32, ptr %87, align 4, !tbaa !9
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1233, i64 %1235
  store double %1232, ptr %1236, align 8, !tbaa !14
  br label %1237

1237:                                             ; preds = %1219
  %1238 = load i32, ptr %85, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, 1
  store i32 %1239, ptr %85, align 4, !tbaa !9
  br label %1215, !llvm.loop !35

1240:                                             ; preds = %1215
  br label %1241

1241:                                             ; preds = %1240
  %1242 = load i32, ptr %82, align 4, !tbaa !9
  %1243 = add nsw i32 %1242, 1
  store i32 %1243, ptr %82, align 4, !tbaa !9
  br label %1205, !llvm.loop !36

1244:                                             ; preds = %1205
  %1245 = load ptr, ptr %30, align 8, !tbaa !5
  %1246 = load ptr, ptr %37, align 8, !tbaa !5
  %1247 = load i32, ptr %101, align 4, !tbaa !9
  %1248 = load i32, ptr %67, align 4, !tbaa !9
  %1249 = add nsw i32 %1247, %1248
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds double, ptr %1246, i64 %1250
  %1252 = load ptr, ptr %36, align 8, !tbaa !5
  %1253 = load ptr, ptr %50, align 8, !tbaa !5
  %1254 = load i32, ptr %105, align 4, !tbaa !9
  %1255 = load ptr, ptr %30, align 8, !tbaa !5
  %1256 = load i32, ptr %1255, align 4, !tbaa !9
  %1257 = mul nsw i32 %1254, %1256
  %1258 = shl i32 %1257, 1
  %1259 = add nsw i32 %1258, 1
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds double, ptr %1253, i64 %1260
  %1262 = load ptr, ptr %50, align 8, !tbaa !5
  %1263 = getelementptr inbounds double, ptr %1262, i64 1
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %105, ptr noundef %1245, ptr noundef %105, ptr noundef @c_b9, ptr noundef %1251, ptr noundef %1252, ptr noundef %1261, ptr noundef %105, ptr noundef @c_b10, ptr noundef %1263, ptr noundef %105)
  %1264 = load i32, ptr %105, align 4, !tbaa !9
  %1265 = load ptr, ptr %30, align 8, !tbaa !5
  %1266 = load i32, ptr %1265, align 4, !tbaa !9
  %1267 = mul nsw i32 %1264, %1266
  %1268 = shl i32 %1267, 1
  store i32 %1268, ptr %87, align 4, !tbaa !9
  %1269 = load ptr, ptr %30, align 8, !tbaa !5
  %1270 = load i32, ptr %1269, align 4, !tbaa !9
  store i32 %1270, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1271

1271:                                             ; preds = %1307, %1244
  %1272 = load i32, ptr %82, align 4, !tbaa !9
  %1273 = load i32, ptr %76, align 4, !tbaa !9
  %1274 = icmp sle i32 %1272, %1273
  br i1 %1274, label %1275, label %1310

1275:                                             ; preds = %1271
  %1276 = load i32, ptr %101, align 4, !tbaa !9
  %1277 = load i32, ptr %105, align 4, !tbaa !9
  %1278 = add nsw i32 %1276, %1277
  %1279 = sub nsw i32 %1278, 1
  store i32 %1279, ptr %77, align 4, !tbaa !9
  %1280 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %1280, ptr %85, align 4, !tbaa !9
  br label %1281

1281:                                             ; preds = %1303, %1275
  %1282 = load i32, ptr %85, align 4, !tbaa !9
  %1283 = load i32, ptr %77, align 4, !tbaa !9
  %1284 = icmp sle i32 %1282, %1283
  br i1 %1284, label %1285, label %1306

1285:                                             ; preds = %1281
  %1286 = load i32, ptr %87, align 4, !tbaa !9
  %1287 = add nsw i32 %1286, 1
  store i32 %1287, ptr %87, align 4, !tbaa !9
  %1288 = load ptr, ptr %31, align 8, !tbaa !5
  %1289 = load i32, ptr %85, align 4, !tbaa !9
  %1290 = load i32, ptr %82, align 4, !tbaa !9
  %1291 = load i32, ptr %71, align 4, !tbaa !9
  %1292 = mul nsw i32 %1290, %1291
  %1293 = add nsw i32 %1289, %1292
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %1288, i64 %1294
  %1296 = call { double, double } @Cd(ptr noundef %1295)
  %1297 = extractvalue { double, double } %1296, 0
  %1298 = extractvalue { double, double } %1296, 1
  %1299 = load ptr, ptr %50, align 8, !tbaa !5
  %1300 = load i32, ptr %87, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %1299, i64 %1301
  store double %1298, ptr %1302, align 8, !tbaa !14
  br label %1303

1303:                                             ; preds = %1285
  %1304 = load i32, ptr %85, align 4, !tbaa !9
  %1305 = add nsw i32 %1304, 1
  store i32 %1305, ptr %85, align 4, !tbaa !9
  br label %1281, !llvm.loop !37

1306:                                             ; preds = %1281
  br label %1307

1307:                                             ; preds = %1306
  %1308 = load i32, ptr %82, align 4, !tbaa !9
  %1309 = add nsw i32 %1308, 1
  store i32 %1309, ptr %82, align 4, !tbaa !9
  br label %1271, !llvm.loop !38

1310:                                             ; preds = %1271
  %1311 = load ptr, ptr %30, align 8, !tbaa !5
  %1312 = load ptr, ptr %37, align 8, !tbaa !5
  %1313 = load i32, ptr %101, align 4, !tbaa !9
  %1314 = load i32, ptr %67, align 4, !tbaa !9
  %1315 = add nsw i32 %1313, %1314
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds double, ptr %1312, i64 %1316
  %1318 = load ptr, ptr %36, align 8, !tbaa !5
  %1319 = load ptr, ptr %50, align 8, !tbaa !5
  %1320 = load i32, ptr %105, align 4, !tbaa !9
  %1321 = load ptr, ptr %30, align 8, !tbaa !5
  %1322 = load i32, ptr %1321, align 4, !tbaa !9
  %1323 = mul nsw i32 %1320, %1322
  %1324 = shl i32 %1323, 1
  %1325 = add nsw i32 %1324, 1
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %1319, i64 %1326
  %1328 = load ptr, ptr %50, align 8, !tbaa !5
  %1329 = load i32, ptr %105, align 4, !tbaa !9
  %1330 = load ptr, ptr %30, align 8, !tbaa !5
  %1331 = load i32, ptr %1330, align 4, !tbaa !9
  %1332 = mul nsw i32 %1329, %1331
  %1333 = add nsw i32 %1332, 1
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds double, ptr %1328, i64 %1334
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %105, ptr noundef %1311, ptr noundef %105, ptr noundef @c_b9, ptr noundef %1317, ptr noundef %1318, ptr noundef %1327, ptr noundef %105, ptr noundef @c_b10, ptr noundef %1335, ptr noundef %105)
  store i32 0, ptr %89, align 4, !tbaa !9
  %1336 = load i32, ptr %105, align 4, !tbaa !9
  %1337 = load ptr, ptr %30, align 8, !tbaa !5
  %1338 = load i32, ptr %1337, align 4, !tbaa !9
  %1339 = mul nsw i32 %1336, %1338
  store i32 %1339, ptr %88, align 4, !tbaa !9
  %1340 = load ptr, ptr %30, align 8, !tbaa !5
  %1341 = load i32, ptr %1340, align 4, !tbaa !9
  store i32 %1341, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1342

1342:                                             ; preds = %1398, %1310
  %1343 = load i32, ptr %82, align 4, !tbaa !9
  %1344 = load i32, ptr %76, align 4, !tbaa !9
  %1345 = icmp sle i32 %1343, %1344
  br i1 %1345, label %1346, label %1401

1346:                                             ; preds = %1342
  %1347 = load i32, ptr %101, align 4, !tbaa !9
  %1348 = load i32, ptr %105, align 4, !tbaa !9
  %1349 = add nsw i32 %1347, %1348
  %1350 = sub nsw i32 %1349, 1
  store i32 %1350, ptr %77, align 4, !tbaa !9
  %1351 = load i32, ptr %101, align 4, !tbaa !9
  store i32 %1351, ptr %85, align 4, !tbaa !9
  br label %1352

1352:                                             ; preds = %1394, %1346
  %1353 = load i32, ptr %85, align 4, !tbaa !9
  %1354 = load i32, ptr %77, align 4, !tbaa !9
  %1355 = icmp sle i32 %1353, %1354
  br i1 %1355, label %1356, label %1397

1356:                                             ; preds = %1352
  %1357 = load i32, ptr %89, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %89, align 4, !tbaa !9
  %1359 = load i32, ptr %88, align 4, !tbaa !9
  %1360 = add nsw i32 %1359, 1
  store i32 %1360, ptr %88, align 4, !tbaa !9
  %1361 = load i32, ptr %85, align 4, !tbaa !9
  %1362 = load i32, ptr %82, align 4, !tbaa !9
  %1363 = load i32, ptr %73, align 4, !tbaa !9
  %1364 = mul nsw i32 %1362, %1363
  %1365 = add nsw i32 %1361, %1364
  store i32 %1365, ptr %78, align 4, !tbaa !9
  %1366 = load i32, ptr %89, align 4, !tbaa !9
  store i32 %1366, ptr %79, align 4, !tbaa !9
  %1367 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %1367, ptr %80, align 4, !tbaa !9
  %1368 = load ptr, ptr %50, align 8, !tbaa !5
  %1369 = load i32, ptr %79, align 4, !tbaa !9
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds double, ptr %1368, i64 %1370
  %1372 = load double, ptr %1371, align 8, !tbaa !14
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  store double %1372, ptr %1373, align 8, !tbaa !11
  %1374 = load ptr, ptr %50, align 8, !tbaa !5
  %1375 = load i32, ptr %80, align 4, !tbaa !9
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds double, ptr %1374, i64 %1376
  %1378 = load double, ptr %1377, align 8, !tbaa !14
  %1379 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  store double %1378, ptr %1379, align 8, !tbaa !20
  %1380 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  %1382 = load ptr, ptr %33, align 8, !tbaa !5
  %1383 = load i32, ptr %78, align 4, !tbaa !9
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %1382, i64 %1384
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %1385, i32 0, i32 0
  store double %1381, ptr %1386, align 8, !tbaa !11
  %1387 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  %1388 = load double, ptr %1387, align 8, !tbaa !20
  %1389 = load ptr, ptr %33, align 8, !tbaa !5
  %1390 = load i32, ptr %78, align 4, !tbaa !9
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %1389, i64 %1391
  %1393 = getelementptr inbounds %struct.doublecomplex, ptr %1392, i32 0, i32 1
  store double %1388, ptr %1393, align 8, !tbaa !20
  br label %1394

1394:                                             ; preds = %1356
  %1395 = load i32, ptr %85, align 4, !tbaa !9
  %1396 = add nsw i32 %1395, 1
  store i32 %1396, ptr %85, align 4, !tbaa !9
  br label %1352, !llvm.loop !39

1397:                                             ; preds = %1352
  br label %1398

1398:                                             ; preds = %1397
  %1399 = load i32, ptr %82, align 4, !tbaa !9
  %1400 = add nsw i32 %1399, 1
  store i32 %1400, ptr %82, align 4, !tbaa !9
  br label %1342, !llvm.loop !40

1401:                                             ; preds = %1342
  %1402 = load i32, ptr %107, align 4, !tbaa !9
  %1403 = load ptr, ptr %30, align 8, !tbaa !5
  %1404 = load i32, ptr %1403, align 4, !tbaa !9
  %1405 = mul nsw i32 %1402, %1404
  %1406 = shl i32 %1405, 1
  store i32 %1406, ptr %87, align 4, !tbaa !9
  %1407 = load ptr, ptr %30, align 8, !tbaa !5
  %1408 = load i32, ptr %1407, align 4, !tbaa !9
  store i32 %1408, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1409

1409:                                             ; preds = %1445, %1401
  %1410 = load i32, ptr %82, align 4, !tbaa !9
  %1411 = load i32, ptr %76, align 4, !tbaa !9
  %1412 = icmp sle i32 %1410, %1411
  br i1 %1412, label %1413, label %1448

1413:                                             ; preds = %1409
  %1414 = load i32, ptr %102, align 4, !tbaa !9
  %1415 = load i32, ptr %107, align 4, !tbaa !9
  %1416 = add nsw i32 %1414, %1415
  %1417 = sub nsw i32 %1416, 1
  store i32 %1417, ptr %77, align 4, !tbaa !9
  %1418 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %1418, ptr %85, align 4, !tbaa !9
  br label %1419

1419:                                             ; preds = %1441, %1413
  %1420 = load i32, ptr %85, align 4, !tbaa !9
  %1421 = load i32, ptr %77, align 4, !tbaa !9
  %1422 = icmp sle i32 %1420, %1421
  br i1 %1422, label %1423, label %1444

1423:                                             ; preds = %1419
  %1424 = load i32, ptr %87, align 4, !tbaa !9
  %1425 = add nsw i32 %1424, 1
  store i32 %1425, ptr %87, align 4, !tbaa !9
  %1426 = load i32, ptr %85, align 4, !tbaa !9
  %1427 = load i32, ptr %82, align 4, !tbaa !9
  %1428 = load i32, ptr %71, align 4, !tbaa !9
  %1429 = mul nsw i32 %1427, %1428
  %1430 = add nsw i32 %1426, %1429
  store i32 %1430, ptr %78, align 4, !tbaa !9
  %1431 = load ptr, ptr %31, align 8, !tbaa !5
  %1432 = load i32, ptr %78, align 4, !tbaa !9
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %1431, i64 %1433
  %1435 = getelementptr inbounds %struct.doublecomplex, ptr %1434, i32 0, i32 0
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = load ptr, ptr %50, align 8, !tbaa !5
  %1438 = load i32, ptr %87, align 4, !tbaa !9
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds double, ptr %1437, i64 %1439
  store double %1436, ptr %1440, align 8, !tbaa !14
  br label %1441

1441:                                             ; preds = %1423
  %1442 = load i32, ptr %85, align 4, !tbaa !9
  %1443 = add nsw i32 %1442, 1
  store i32 %1443, ptr %85, align 4, !tbaa !9
  br label %1419, !llvm.loop !41

1444:                                             ; preds = %1419
  br label %1445

1445:                                             ; preds = %1444
  %1446 = load i32, ptr %82, align 4, !tbaa !9
  %1447 = add nsw i32 %1446, 1
  store i32 %1447, ptr %82, align 4, !tbaa !9
  br label %1409, !llvm.loop !42

1448:                                             ; preds = %1409
  %1449 = load ptr, ptr %30, align 8, !tbaa !5
  %1450 = load ptr, ptr %37, align 8, !tbaa !5
  %1451 = load i32, ptr %102, align 4, !tbaa !9
  %1452 = load i32, ptr %67, align 4, !tbaa !9
  %1453 = add nsw i32 %1451, %1452
  %1454 = sext i32 %1453 to i64
  %1455 = getelementptr inbounds double, ptr %1450, i64 %1454
  %1456 = load ptr, ptr %36, align 8, !tbaa !5
  %1457 = load ptr, ptr %50, align 8, !tbaa !5
  %1458 = load i32, ptr %107, align 4, !tbaa !9
  %1459 = load ptr, ptr %30, align 8, !tbaa !5
  %1460 = load i32, ptr %1459, align 4, !tbaa !9
  %1461 = mul nsw i32 %1458, %1460
  %1462 = shl i32 %1461, 1
  %1463 = add nsw i32 %1462, 1
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds double, ptr %1457, i64 %1464
  %1466 = load ptr, ptr %50, align 8, !tbaa !5
  %1467 = getelementptr inbounds double, ptr %1466, i64 1
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %107, ptr noundef %1449, ptr noundef %107, ptr noundef @c_b9, ptr noundef %1455, ptr noundef %1456, ptr noundef %1465, ptr noundef %107, ptr noundef @c_b10, ptr noundef %1467, ptr noundef %107)
  %1468 = load i32, ptr %107, align 4, !tbaa !9
  %1469 = load ptr, ptr %30, align 8, !tbaa !5
  %1470 = load i32, ptr %1469, align 4, !tbaa !9
  %1471 = mul nsw i32 %1468, %1470
  %1472 = shl i32 %1471, 1
  store i32 %1472, ptr %87, align 4, !tbaa !9
  %1473 = load ptr, ptr %30, align 8, !tbaa !5
  %1474 = load i32, ptr %1473, align 4, !tbaa !9
  store i32 %1474, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1475

1475:                                             ; preds = %1511, %1448
  %1476 = load i32, ptr %82, align 4, !tbaa !9
  %1477 = load i32, ptr %76, align 4, !tbaa !9
  %1478 = icmp sle i32 %1476, %1477
  br i1 %1478, label %1479, label %1514

1479:                                             ; preds = %1475
  %1480 = load i32, ptr %102, align 4, !tbaa !9
  %1481 = load i32, ptr %107, align 4, !tbaa !9
  %1482 = add nsw i32 %1480, %1481
  %1483 = sub nsw i32 %1482, 1
  store i32 %1483, ptr %77, align 4, !tbaa !9
  %1484 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %1484, ptr %85, align 4, !tbaa !9
  br label %1485

1485:                                             ; preds = %1507, %1479
  %1486 = load i32, ptr %85, align 4, !tbaa !9
  %1487 = load i32, ptr %77, align 4, !tbaa !9
  %1488 = icmp sle i32 %1486, %1487
  br i1 %1488, label %1489, label %1510

1489:                                             ; preds = %1485
  %1490 = load i32, ptr %87, align 4, !tbaa !9
  %1491 = add nsw i32 %1490, 1
  store i32 %1491, ptr %87, align 4, !tbaa !9
  %1492 = load ptr, ptr %31, align 8, !tbaa !5
  %1493 = load i32, ptr %85, align 4, !tbaa !9
  %1494 = load i32, ptr %82, align 4, !tbaa !9
  %1495 = load i32, ptr %71, align 4, !tbaa !9
  %1496 = mul nsw i32 %1494, %1495
  %1497 = add nsw i32 %1493, %1496
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds %struct.doublecomplex, ptr %1492, i64 %1498
  %1500 = call { double, double } @Cd(ptr noundef %1499)
  %1501 = extractvalue { double, double } %1500, 0
  %1502 = extractvalue { double, double } %1500, 1
  %1503 = load ptr, ptr %50, align 8, !tbaa !5
  %1504 = load i32, ptr %87, align 4, !tbaa !9
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1503, i64 %1505
  store double %1502, ptr %1506, align 8, !tbaa !14
  br label %1507

1507:                                             ; preds = %1489
  %1508 = load i32, ptr %85, align 4, !tbaa !9
  %1509 = add nsw i32 %1508, 1
  store i32 %1509, ptr %85, align 4, !tbaa !9
  br label %1485, !llvm.loop !43

1510:                                             ; preds = %1485
  br label %1511

1511:                                             ; preds = %1510
  %1512 = load i32, ptr %82, align 4, !tbaa !9
  %1513 = add nsw i32 %1512, 1
  store i32 %1513, ptr %82, align 4, !tbaa !9
  br label %1475, !llvm.loop !44

1514:                                             ; preds = %1475
  %1515 = load ptr, ptr %30, align 8, !tbaa !5
  %1516 = load ptr, ptr %37, align 8, !tbaa !5
  %1517 = load i32, ptr %102, align 4, !tbaa !9
  %1518 = load i32, ptr %67, align 4, !tbaa !9
  %1519 = add nsw i32 %1517, %1518
  %1520 = sext i32 %1519 to i64
  %1521 = getelementptr inbounds double, ptr %1516, i64 %1520
  %1522 = load ptr, ptr %36, align 8, !tbaa !5
  %1523 = load ptr, ptr %50, align 8, !tbaa !5
  %1524 = load i32, ptr %107, align 4, !tbaa !9
  %1525 = load ptr, ptr %30, align 8, !tbaa !5
  %1526 = load i32, ptr %1525, align 4, !tbaa !9
  %1527 = mul nsw i32 %1524, %1526
  %1528 = shl i32 %1527, 1
  %1529 = add nsw i32 %1528, 1
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds double, ptr %1523, i64 %1530
  %1532 = load ptr, ptr %50, align 8, !tbaa !5
  %1533 = load i32, ptr %107, align 4, !tbaa !9
  %1534 = load ptr, ptr %30, align 8, !tbaa !5
  %1535 = load i32, ptr %1534, align 4, !tbaa !9
  %1536 = mul nsw i32 %1533, %1535
  %1537 = add nsw i32 %1536, 1
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds double, ptr %1532, i64 %1538
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %107, ptr noundef %1515, ptr noundef %107, ptr noundef @c_b9, ptr noundef %1521, ptr noundef %1522, ptr noundef %1531, ptr noundef %107, ptr noundef @c_b10, ptr noundef %1539, ptr noundef %107)
  store i32 0, ptr %89, align 4, !tbaa !9
  %1540 = load i32, ptr %107, align 4, !tbaa !9
  %1541 = load ptr, ptr %30, align 8, !tbaa !5
  %1542 = load i32, ptr %1541, align 4, !tbaa !9
  %1543 = mul nsw i32 %1540, %1542
  store i32 %1543, ptr %88, align 4, !tbaa !9
  %1544 = load ptr, ptr %30, align 8, !tbaa !5
  %1545 = load i32, ptr %1544, align 4, !tbaa !9
  store i32 %1545, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1546

1546:                                             ; preds = %1602, %1514
  %1547 = load i32, ptr %82, align 4, !tbaa !9
  %1548 = load i32, ptr %76, align 4, !tbaa !9
  %1549 = icmp sle i32 %1547, %1548
  br i1 %1549, label %1550, label %1605

1550:                                             ; preds = %1546
  %1551 = load i32, ptr %102, align 4, !tbaa !9
  %1552 = load i32, ptr %107, align 4, !tbaa !9
  %1553 = add nsw i32 %1551, %1552
  %1554 = sub nsw i32 %1553, 1
  store i32 %1554, ptr %77, align 4, !tbaa !9
  %1555 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %1555, ptr %85, align 4, !tbaa !9
  br label %1556

1556:                                             ; preds = %1598, %1550
  %1557 = load i32, ptr %85, align 4, !tbaa !9
  %1558 = load i32, ptr %77, align 4, !tbaa !9
  %1559 = icmp sle i32 %1557, %1558
  br i1 %1559, label %1560, label %1601

1560:                                             ; preds = %1556
  %1561 = load i32, ptr %89, align 4, !tbaa !9
  %1562 = add nsw i32 %1561, 1
  store i32 %1562, ptr %89, align 4, !tbaa !9
  %1563 = load i32, ptr %88, align 4, !tbaa !9
  %1564 = add nsw i32 %1563, 1
  store i32 %1564, ptr %88, align 4, !tbaa !9
  %1565 = load i32, ptr %85, align 4, !tbaa !9
  %1566 = load i32, ptr %82, align 4, !tbaa !9
  %1567 = load i32, ptr %73, align 4, !tbaa !9
  %1568 = mul nsw i32 %1566, %1567
  %1569 = add nsw i32 %1565, %1568
  store i32 %1569, ptr %78, align 4, !tbaa !9
  %1570 = load i32, ptr %89, align 4, !tbaa !9
  store i32 %1570, ptr %79, align 4, !tbaa !9
  %1571 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %1571, ptr %80, align 4, !tbaa !9
  %1572 = load ptr, ptr %50, align 8, !tbaa !5
  %1573 = load i32, ptr %79, align 4, !tbaa !9
  %1574 = sext i32 %1573 to i64
  %1575 = getelementptr inbounds double, ptr %1572, i64 %1574
  %1576 = load double, ptr %1575, align 8, !tbaa !14
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  store double %1576, ptr %1577, align 8, !tbaa !11
  %1578 = load ptr, ptr %50, align 8, !tbaa !5
  %1579 = load i32, ptr %80, align 4, !tbaa !9
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds double, ptr %1578, i64 %1580
  %1582 = load double, ptr %1581, align 8, !tbaa !14
  %1583 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  store double %1582, ptr %1583, align 8, !tbaa !20
  %1584 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 0
  %1585 = load double, ptr %1584, align 8, !tbaa !11
  %1586 = load ptr, ptr %33, align 8, !tbaa !5
  %1587 = load i32, ptr %78, align 4, !tbaa !9
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds %struct.doublecomplex, ptr %1586, i64 %1588
  %1590 = getelementptr inbounds %struct.doublecomplex, ptr %1589, i32 0, i32 0
  store double %1585, ptr %1590, align 8, !tbaa !11
  %1591 = getelementptr inbounds %struct.doublecomplex, ptr %81, i32 0, i32 1
  %1592 = load double, ptr %1591, align 8, !tbaa !20
  %1593 = load ptr, ptr %33, align 8, !tbaa !5
  %1594 = load i32, ptr %78, align 4, !tbaa !9
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds %struct.doublecomplex, ptr %1593, i64 %1595
  %1597 = getelementptr inbounds %struct.doublecomplex, ptr %1596, i32 0, i32 1
  store double %1592, ptr %1597, align 8, !tbaa !20
  br label %1598

1598:                                             ; preds = %1560
  %1599 = load i32, ptr %85, align 4, !tbaa !9
  %1600 = add nsw i32 %1599, 1
  store i32 %1600, ptr %85, align 4, !tbaa !9
  br label %1556, !llvm.loop !45

1601:                                             ; preds = %1556
  br label %1602

1602:                                             ; preds = %1601
  %1603 = load i32, ptr %82, align 4, !tbaa !9
  %1604 = add nsw i32 %1603, 1
  store i32 %1604, ptr %82, align 4, !tbaa !9
  br label %1546, !llvm.loop !46

1605:                                             ; preds = %1546
  br label %1606

1606:                                             ; preds = %1605
  %1607 = load i32, ptr %86, align 4, !tbaa !9
  %1608 = add nsw i32 %1607, 1
  store i32 %1608, ptr %86, align 4, !tbaa !9
  br label %1154, !llvm.loop !47

1609:                                             ; preds = %1154
  br label %1610

1610:                                             ; preds = %1609, %981
  store i32 1, ptr %108, align 4
  br label %1611

1611:                                             ; preds = %1610, %304
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  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 void @dlasdt_(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 void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) #0

declare void @zlals0_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 }

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

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


; 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 [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b9 = external hidden global double, align 8
@c_b10 = external hidden global double, align 8
@c__2 = external hidden local_unnamed_addr global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zlalsa_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25) local_unnamed_addr #0 {
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #5
  %35 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %35, -1
  %36 = sext i32 %narrow to i64
  %37 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %36
  %38 = load i32, ptr %7, align 4, !tbaa !5
  %narrow651 = xor i32 %38, -1
  %39 = sext i32 %narrow651 to i64
  %40 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %39
  %41 = load i32, ptr %9, align 4, !tbaa !5
  %narrow652 = xor i32 %41, -1
  %42 = sext i32 %narrow652 to i64
  %43 = getelementptr inbounds double, ptr %20, i64 %42
  %44 = getelementptr inbounds double, ptr %15, i64 %42
  %45 = getelementptr inbounds double, ptr %14, i64 %42
  %46 = getelementptr inbounds double, ptr %13, i64 %42
  %47 = getelementptr inbounds double, ptr %12, i64 %42
  %48 = getelementptr inbounds double, ptr %10, i64 %42
  %49 = getelementptr inbounds double, ptr %8, i64 %42
  %50 = getelementptr inbounds i8, ptr %11, i64 -4
  %51 = getelementptr inbounds i8, ptr %16, i64 -4
  %52 = load i32, ptr %18, align 4, !tbaa !5
  %narrow653 = xor i32 %52, -1
  %53 = sext i32 %narrow653 to i64
  %54 = getelementptr inbounds i32, ptr %19, i64 %53
  %55 = getelementptr inbounds i32, ptr %17, i64 %53
  %56 = getelementptr inbounds i8, ptr %21, i64 -8
  %57 = getelementptr inbounds i8, ptr %22, i64 -8
  %58 = getelementptr inbounds i8, ptr %23, i64 -8
  %59 = getelementptr inbounds i8, ptr %24, i64 -4
  store i32 0, ptr %25, align 4, !tbaa !5
  %60 = load i32, ptr %0, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %60, 1
  br i1 %or.cond, label %.thread, label %61

61:                                               ; preds = %26
  %62 = load i32, ptr %1, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 3
  br i1 %63, label %.thread, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %2, align 4, !tbaa !5
  %66 = icmp slt i32 %65, %62
  br i1 %66, label %.thread, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %3, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 1
  br i1 %69, label %.thread, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %5, align 4, !tbaa !5
  %72 = icmp slt i32 %71, %65
  br i1 %72, label %.thread, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %7, align 4, !tbaa !5
  %75 = icmp slt i32 %74, %65
  br i1 %75, label %.thread, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr %9, align 4, !tbaa !5
  %78 = icmp slt i32 %77, %65
  br i1 %78, label %.thread, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %18, align 4, !tbaa !5
  %81 = icmp slt i32 %80, %65
  br i1 %81, label %.thread, label %83

.thread:                                          ; preds = %79, %76, %73, %70, %67, %64, %61, %26
  %.sink = phi i32 [ -1, %26 ], [ -2, %61 ], [ -3, %64 ], [ -4, %67 ], [ -6, %70 ], [ -8, %73 ], [ -10, %76 ], [ -19, %79 ]
  %.neg = phi i32 [ 1, %26 ], [ 2, %61 ], [ 3, %64 ], [ 4, %67 ], [ 6, %70 ], [ 8, %73 ], [ 10, %76 ], [ 19, %79 ]
  store i32 %.sink, ptr %25, align 4, !tbaa !5
  store i32 %.neg, ptr %27, align 4, !tbaa !5
  %82 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %27, i32 noundef 6) #5
  br label %.loopexit

83:                                               ; preds = %79
  %84 = add nuw nsw i32 %65, 1
  %85 = add nuw nsw i32 %84, %65
  %86 = zext nneg i32 %84 to i64
  %87 = getelementptr inbounds i32, ptr %59, i64 %86
  %88 = zext nneg i32 %85 to i64
  %89 = getelementptr inbounds i32, ptr %59, i64 %88
  call void @dlasdt_(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef %24, ptr noundef nonnull %87, ptr noundef nonnull %89, ptr noundef nonnull %1) #5
  %90 = load i32, ptr %0, align 4, !tbaa !5
  %91 = icmp eq i32 %90, 1
  br i1 %91, label %458, label %92

92:                                               ; preds = %83
  %93 = load i32, ptr %30, align 4, !tbaa !5
  %94 = add nsw i32 %93, 1
  %95 = sdiv i32 %94, 2
  %.not654763 = icmp sgt i32 %95, %93
  br i1 %.not654763, label %._crit_edge767, label %.lr.ph766

.lr.ph766:                                        ; preds = %92
  %96 = shl nuw i32 %65, 1
  %97 = sext i32 %35 to i64
  %98 = sext i32 %38 to i64
  %99 = sext i32 %95 to i64
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  %100 = sext i32 %93 to i64
  %101 = shl nsw i64 %98, 4
  %102 = shl nsw i64 %39, 4
  %103 = getelementptr i8, ptr %6, i64 %101
  %104 = getelementptr i8, ptr %103, i64 %102
  %scevgep = getelementptr i8, ptr %104, i64 16
  %105 = getelementptr i8, ptr %6, i64 %102
  %scevgep1162 = getelementptr i8, ptr %105, i64 32
  %scevgep1165 = getelementptr i8, ptr %23, i64 8
  %scevgep1169 = getelementptr i8, ptr %23, i64 8
  %scevgep1185 = getelementptr i8, ptr %23, i64 8
  %106 = shl nsw i64 %97, 4
  %107 = shl nsw i64 %36, 4
  %108 = getelementptr i8, ptr %4, i64 %106
  %109 = getelementptr i8, ptr %108, i64 %107
  %scevgep1188 = getelementptr i8, ptr %109, i64 16
  %110 = getelementptr i8, ptr %4, i64 %107
  %scevgep1190 = getelementptr i8, ptr %110, i64 24
  %111 = add nsw i64 %98, %39
  %112 = shl nsw i64 %111, 4
  %scevgep1212 = getelementptr i8, ptr %6, i64 %112
  %113 = shl nsw i64 %98, 4
  %114 = add nsw i64 %98, %39
  %115 = add nsw i64 %97, %36
  %116 = shl nsw i64 %115, 4
  %scevgep1258 = getelementptr i8, ptr %4, i64 %116
  %scevgep1260 = getelementptr i8, ptr %4, i64 -8
  %117 = shl nsw i64 %97, 4
  %118 = add nsw i64 %97, %36
  %stride.check1265 = icmp slt i32 %35, 0
  %stride.check1228 = icmp slt i32 %38, 0
  %stride.check1195 = icmp slt i32 %35, 0
  %invariant.gep1473 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1477 = getelementptr i8, ptr %23, i64 16
  %invariant.gep1481 = getelementptr i8, ptr %23, i64 24
  %stride.check1175 = icmp slt i32 %38, 0
  %invariant.gep1485 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1487 = getelementptr i8, ptr %23, i64 8
  br label %119

119:                                              ; preds = %.lr.ph766, %._crit_edge760
  %120 = phi i32 [ %.pre, %.lr.ph766 ], [ %330, %._crit_edge760 ]
  %indvars.iv996 = phi i64 [ %99, %.lr.ph766 ], [ %indvars.iv.next997, %._crit_edge760 ]
  %121 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv996
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = trunc nsw i64 %indvars.iv996 to i32
  %124 = add i32 %65, %123
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds i32, ptr %59, i64 %125
  %127 = load i32, ptr %126, align 4, !tbaa !5
  store i32 %127, ptr %31, align 4, !tbaa !5
  %128 = add i32 %96, %123
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds i32, ptr %59, i64 %129
  %131 = load i32, ptr %130, align 4, !tbaa !5
  store i32 %131, ptr %32, align 4, !tbaa !5
  %132 = sub i32 %122, %127
  %133 = add i32 %122, 1
  %134 = shl i32 %127, 1
  %135 = mul i32 %134, %120
  %.not657690 = icmp sgt i32 %120, 0
  %.not668.not687 = icmp sgt i32 %127, 0
  %or.cond1158 = select i1 %.not657690, i1 %.not668.not687, i1 false
  br i1 %or.cond1158, label %.preheader.us.preheader, label %._crit_edge693

.preheader.us.preheader:                          ; preds = %119
  %136 = sext i32 %132 to i64
  %137 = sext i32 %122 to i64
  %138 = add nuw i32 %120, 1
  %wide.trip.count = zext i32 %138 to i64
  %139 = mul nsw i64 %136, -8
  %scevgep1255 = getelementptr i8, ptr %23, i64 %139
  %140 = add nsw i64 %136, 1
  %smax1256 = call i64 @llvm.smax.i64(i64 %140, i64 %137)
  %141 = shl nsw i64 %136, 4
  %scevgep1259 = getelementptr i8, ptr %scevgep1258, i64 %141
  %142 = add nsw i64 %wide.trip.count, -2
  %143 = mul i64 %117, %142
  %144 = add i64 %118, %smax1256
  %145 = shl nsw i64 %144, 4
  %146 = getelementptr i8, ptr %scevgep1260, i64 %143
  %scevgep1261 = getelementptr i8, ptr %146, i64 %145
  %147 = add nsw i64 %136, 1
  %smax1266 = call i64 @llvm.smax.i64(i64 %147, i64 %137)
  %148 = sub i64 %smax1266, %136
  %min.iters.check1269 = icmp ult i64 %148, 9
  %n.mod.vf1271 = and i64 %148, 3
  %149 = icmp eq i64 %n.mod.vf1271, 0
  %150 = select i1 %149, i64 4, i64 %n.mod.vf1271
  %n.vec1272 = sub i64 %148, %150
  %ind.end1273 = add i64 %n.vec1272, %136
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us
  %indvars.iv920 = phi i64 [ 1, %.preheader.us.preheader ], [ %indvars.iv.next921, %._crit_edge.us ]
  %.0610692.us = phi i32 [ %135, %.preheader.us.preheader ], [ %170, %._crit_edge.us ]
  %151 = mul nsw i64 %indvars.iv920, %97
  %152 = sext i32 %.0610692.us to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %37, i64 %151
  br i1 %min.iters.check1269, label %scalar.ph1268.preheader, label %vector.memcheck1253

vector.memcheck1253:                              ; preds = %.preheader.us
  %153 = shl nsw i64 %152, 3
  %scevgep1254 = getelementptr i8, ptr %23, i64 %153
  %154 = add i64 %smax1256, %152
  %155 = shl nsw i64 %154, 3
  %scevgep1257 = getelementptr i8, ptr %scevgep1255, i64 %155
  %bound01262 = icmp ult ptr %scevgep1254, %scevgep1261
  %bound11263 = icmp ult ptr %scevgep1259, %scevgep1257
  %found.conflict1264 = and i1 %bound01262, %bound11263
  %156 = or i1 %found.conflict1264, %stride.check1265
  br i1 %156, label %scalar.ph1268.preheader, label %vector.ph1270

vector.ph1270:                                    ; preds = %vector.memcheck1253
  %ind.end1275 = add i64 %n.vec1272, %152
  %invariant.gep1451 = getelementptr i8, ptr %invariant.gep, i64 16
  %invariant.gep1453 = getelementptr i8, ptr %invariant.gep, i64 32
  %invariant.gep1455 = getelementptr i8, ptr %invariant.gep, i64 48
  %invariant.gep1457 = getelementptr double, ptr %23, i64 %152
  br label %vector.body1277

vector.body1277:                                  ; preds = %vector.body1277, %vector.ph1270
  %index1278 = phi i64 [ 0, %vector.ph1270 ], [ %index.next1281, %vector.body1277 ]
  %offset.idx1279 = add i64 %index1278, %136
  %157 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %offset.idx1279
  %gep1452 = getelementptr %struct.doublecomplex, ptr %invariant.gep1451, i64 %offset.idx1279
  %gep1454 = getelementptr %struct.doublecomplex, ptr %invariant.gep1453, i64 %offset.idx1279
  %gep1456 = getelementptr %struct.doublecomplex, ptr %invariant.gep1455, i64 %offset.idx1279
  %158 = load double, ptr %157, align 8, !tbaa !9, !alias.scope !12
  %159 = load double, ptr %gep1452, align 8, !tbaa !9, !alias.scope !12
  %160 = insertelement <2 x double> poison, double %158, i64 0
  %161 = insertelement <2 x double> %160, double %159, i64 1
  %162 = load double, ptr %gep1454, align 8, !tbaa !9, !alias.scope !12
  %163 = load double, ptr %gep1456, align 8, !tbaa !9, !alias.scope !12
  %164 = insertelement <2 x double> poison, double %162, i64 0
  %165 = insertelement <2 x double> %164, double %163, i64 1
  %gep1458 = getelementptr double, ptr %invariant.gep1457, i64 %index1278
  %166 = getelementptr i8, ptr %gep1458, i64 16
  store <2 x double> %161, ptr %gep1458, align 8, !tbaa !15, !alias.scope !16, !noalias !12
  store <2 x double> %165, ptr %166, align 8, !tbaa !15, !alias.scope !16, !noalias !12
  %index.next1281 = add nuw i64 %index1278, 4
  %167 = icmp eq i64 %index.next1281, %n.vec1272
  br i1 %167, label %scalar.ph1268.preheader, label %vector.body1277, !llvm.loop !18

scalar.ph1268.preheader:                          ; preds = %vector.body1277, %vector.memcheck1253, %.preheader.us
  %indvars.iv915.ph = phi i64 [ %136, %vector.memcheck1253 ], [ %136, %.preheader.us ], [ %ind.end1273, %vector.body1277 ]
  %indvars.iv.ph = phi i64 [ %152, %vector.memcheck1253 ], [ %152, %.preheader.us ], [ %ind.end1275, %vector.body1277 ]
  br label %scalar.ph1268

scalar.ph1268:                                    ; preds = %scalar.ph1268.preheader, %scalar.ph1268
  %indvars.iv915 = phi i64 [ %indvars.iv.next916, %scalar.ph1268 ], [ %indvars.iv915.ph, %scalar.ph1268.preheader ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph1268 ], [ %indvars.iv.ph, %scalar.ph1268.preheader ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %gep1133 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv915
  %168 = load double, ptr %gep1133, align 8, !tbaa !9
  %169 = getelementptr double, ptr %23, i64 %indvars.iv
  store double %168, ptr %169, align 8, !tbaa !15
  %indvars.iv.next916 = add nsw i64 %indvars.iv915, 1
  %.not668.not.us = icmp slt i64 %indvars.iv.next916, %137
  br i1 %.not668.not.us, label %scalar.ph1268, label %._crit_edge.us, !llvm.loop !22

._crit_edge.us:                                   ; preds = %scalar.ph1268
  %170 = trunc nsw i64 %indvars.iv.next to i32
  %indvars.iv.next921 = add nuw nsw i64 %indvars.iv920, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next921, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge693, label %.preheader.us, !llvm.loop !23

._crit_edge693:                                   ; preds = %._crit_edge.us, %119
  %171 = add nsw i32 %132, %41
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %49, i64 %172
  %174 = or disjoint i32 %135, 1
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %58, i64 %175
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c_b9, ptr noundef %173, ptr noundef nonnull %9, ptr noundef nonnull %176, ptr noundef nonnull %31, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %31) #5
  %177 = load i32, ptr %31, align 4, !tbaa !5
  %178 = load i32, ptr %3, align 4, !tbaa !5
  %.not658697 = icmp slt i32 %178, 1
  br i1 %.not658697, label %._crit_edge702, label %.lr.ph701.preheader

.lr.ph701.preheader:                              ; preds = %._crit_edge693
  %179 = shl i32 %177, 1
  %180 = mul i32 %179, %178
  %181 = sext i32 %132 to i64
  %182 = add nuw i32 %178, 1
  %wide.trip.count933 = zext i32 %182 to i64
  br label %.lr.ph701

.lr.ph701:                                        ; preds = %.lr.ph701.preheader, %._crit_edge
  %indvars.iv930 = phi i64 [ 1, %.lr.ph701.preheader ], [ %indvars.iv.next931, %._crit_edge ]
  %.2612699 = phi i32 [ %180, %.lr.ph701.preheader ], [ %.3613.lcssa, %._crit_edge ]
  %183 = load i32, ptr %31, align 4, !tbaa !5
  %.not667.not694 = icmp sgt i32 %183, 0
  br i1 %.not667.not694, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph701
  %184 = add nsw i32 %183, %132
  %185 = mul nsw i64 %indvars.iv930, %97
  %186 = sext i32 %.2612699 to i64
  %187 = sext i32 %184 to i64
  %invariant.gep1134 = getelementptr %struct.doublecomplex, ptr %37, i64 %185
  br label %188

188:                                              ; preds = %.lr.ph, %188
  %indvars.iv925 = phi i64 [ %181, %.lr.ph ], [ %indvars.iv.next926, %188 ]
  %indvars.iv923 = phi i64 [ %186, %.lr.ph ], [ %indvars.iv.next924, %188 ]
  %indvars.iv.next924 = add nsw i64 %indvars.iv923, 1
  %gep1135 = getelementptr %struct.doublecomplex, ptr %invariant.gep1134, i64 %indvars.iv925
  %189 = call { double, double } @Cd(ptr noundef %gep1135)
  %190 = extractvalue { double, double } %189, 1
  %191 = getelementptr double, ptr %23, i64 %indvars.iv923
  store double %190, ptr %191, align 8, !tbaa !15
  %indvars.iv.next926 = add nsw i64 %indvars.iv925, 1
  %.not667.not = icmp slt i64 %indvars.iv.next926, %187
  br i1 %.not667.not, label %188, label %._crit_edge.loopexit, !llvm.loop !24

._crit_edge.loopexit:                             ; preds = %188
  %192 = trunc nsw i64 %indvars.iv.next924 to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph701
  %.3613.lcssa = phi i32 [ %.2612699, %.lr.ph701 ], [ %192, %._crit_edge.loopexit ]
  %indvars.iv.next931 = add nuw nsw i64 %indvars.iv930, 1
  %exitcond934.not = icmp eq i64 %indvars.iv.next931, %wide.trip.count933
  br i1 %exitcond934.not, label %._crit_edge702.loopexit, label %.lr.ph701, !llvm.loop !25

._crit_edge702.loopexit:                          ; preds = %._crit_edge
  %.pre1107 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1108 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge702

._crit_edge702:                                   ; preds = %._crit_edge702.loopexit, %._crit_edge693
  %193 = phi i32 [ %.pre1108, %._crit_edge702.loopexit ], [ %178, %._crit_edge693 ]
  %194 = phi i32 [ %.pre1107, %._crit_edge702.loopexit ], [ %177, %._crit_edge693 ]
  %195 = mul nsw i32 %193, %194
  %196 = shl i32 %195, 1
  %197 = or disjoint i32 %196, 1
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds double, ptr %58, i64 %198
  %200 = sext i32 %195 to i64
  %gep = getelementptr double, ptr %23, i64 %200
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c_b9, ptr noundef %173, ptr noundef nonnull %9, ptr noundef nonnull %199, ptr noundef nonnull %31, ptr noundef nonnull @c_b10, ptr noundef %gep, ptr noundef nonnull %31) #5
  %201 = load i32, ptr %3, align 4, !tbaa !5
  %.not659712 = icmp slt i32 %201, 1
  br i1 %.not659712, label %._crit_edge718.thread, label %.lr.ph717

._crit_edge718.thread:                            ; preds = %._crit_edge702
  %202 = load i32, ptr %32, align 4, !tbaa !5
  %203 = shl i32 %201, 1
  %204 = mul i32 %203, %202
  br label %._crit_edge731

.lr.ph717:                                        ; preds = %._crit_edge702
  %205 = load i32, ptr %31, align 4, !tbaa !5
  %.not666.not703 = icmp sgt i32 %205, 0
  br i1 %.not666.not703, label %.lr.ph708.us.preheader, label %._crit_edge718.thread1120

._crit_edge718.thread1120:                        ; preds = %.lr.ph717
  %206 = load i32, ptr %32, align 4, !tbaa !5
  %207 = shl nuw i32 %201, 1
  %208 = mul i32 %207, %206
  br label %.lr.ph730

.lr.ph708.us.preheader:                           ; preds = %.lr.ph717
  %209 = add i32 %205, %132
  %210 = mul nuw nsw i32 %201, %205
  %211 = sext i32 %132 to i64
  %212 = sext i32 %209 to i64
  %213 = add nuw i32 %201, 1
  %wide.trip.count949 = zext i32 %213 to i64
  %214 = shl nsw i64 %211, 4
  %scevgep1213 = getelementptr i8, ptr %scevgep1212, i64 %214
  %215 = add nsw i64 %wide.trip.count949, -2
  %216 = mul i64 %113, %215
  %217 = add nsw i64 %211, 1
  %smax = call i64 @llvm.smax.i64(i64 %217, i64 %212)
  %218 = add i64 %114, %smax
  %219 = shl nsw i64 %218, 4
  %220 = getelementptr i8, ptr %6, i64 %216
  %scevgep1214 = getelementptr i8, ptr %220, i64 %219
  %221 = mul nsw i64 %211, -8
  %scevgep1216 = getelementptr i8, ptr %23, i64 %221
  %scevgep1219 = getelementptr i8, ptr %23, i64 %221
  %222 = add nsw i64 %211, 1
  %smax1230 = call i64 @llvm.smax.i64(i64 %222, i64 %212)
  %223 = sub i64 %smax1230, %211
  %min.iters.check1233 = icmp ult i64 %223, 10
  %n.vec1236 = and i64 %223, -2
  %ind.end1237 = add i64 %n.vec1236, %211
  %cmp.n1252 = icmp eq i64 %223, %n.vec1236
  br label %.lr.ph708.us

.lr.ph708.us:                                     ; preds = %.lr.ph708.us.preheader, %._crit_edge709.us
  %indvars.iv946 = phi i64 [ 1, %.lr.ph708.us.preheader ], [ %indvars.iv.next947, %._crit_edge709.us ]
  %.0600715.us = phi i64 [ 0, %.lr.ph708.us.preheader ], [ %indvars.iv.next936.lcssa, %._crit_edge709.us ]
  %.0602714.us = phi i32 [ %210, %.lr.ph708.us.preheader ], [ %242, %._crit_edge709.us ]
  %224 = mul nsw i64 %indvars.iv946, %98
  %sext = shl i64 %.0600715.us, 32
  %225 = ashr exact i64 %sext, 32
  %226 = sext i32 %.0602714.us to i64
  %invariant.gep1136 = getelementptr %struct.doublecomplex, ptr %40, i64 %224
  br i1 %min.iters.check1233, label %scalar.ph1232.preheader, label %vector.memcheck1211

vector.memcheck1211:                              ; preds = %.lr.ph708.us
  %227 = shl nsw i64 %226, 3
  %scevgep1215 = getelementptr i8, ptr %23, i64 %227
  %228 = add i64 %smax, %226
  %229 = shl nsw i64 %228, 3
  %scevgep1217 = getelementptr i8, ptr %scevgep1216, i64 %229
  %230 = ashr exact i64 %sext, 29
  %scevgep1218 = getelementptr i8, ptr %23, i64 %230
  %231 = add i64 %smax, %225
  %232 = shl nsw i64 %231, 3
  %scevgep1220 = getelementptr i8, ptr %scevgep1219, i64 %232
  %bound01221 = icmp ult ptr %scevgep1213, %scevgep1217
  %bound11222 = icmp ult ptr %scevgep1215, %scevgep1214
  %found.conflict1223 = and i1 %bound01221, %bound11222
  %bound01225 = icmp ult ptr %scevgep1213, %scevgep1220
  %bound11226 = icmp ult ptr %scevgep1218, %scevgep1214
  %found.conflict1227 = and i1 %bound01225, %bound11226
  %233 = or i1 %found.conflict1227, %stride.check1228
  %conflict.rdx1229 = or i1 %found.conflict1223, %233
  br i1 %conflict.rdx1229, label %scalar.ph1232.preheader, label %vector.ph1234

vector.ph1234:                                    ; preds = %vector.memcheck1211
  %ind.end1239 = add i64 %n.vec1236, %226
  %ind.end1241 = add i64 %225, %n.vec1236
  %234 = getelementptr double, ptr %23, i64 %225
  %invariant.gep1459 = getelementptr double, ptr %23, i64 %226
  %invariant.gep1461 = getelementptr %struct.doublecomplex, ptr %invariant.gep1136, i64 %211
  br label %vector.body1243

vector.body1243:                                  ; preds = %vector.body1243, %vector.ph1234
  %index1244 = phi i64 [ 0, %vector.ph1234 ], [ %index.next1251, %vector.body1243 ]
  %235 = getelementptr double, ptr %234, i64 %index1244
  %wide.load1248 = load <2 x double>, ptr %235, align 8, !tbaa !15, !alias.scope !26
  %gep1460 = getelementptr double, ptr %invariant.gep1459, i64 %index1244
  %wide.load1249 = load <2 x double>, ptr %gep1460, align 8, !tbaa !15, !alias.scope !29
  %gep1462 = getelementptr %struct.doublecomplex, ptr %invariant.gep1461, i64 %index1244
  %interleaved.vec1250 = shufflevector <2 x double> %wide.load1248, <2 x double> %wide.load1249, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1250, ptr %gep1462, align 8, !tbaa !15
  %index.next1251 = add nuw i64 %index1244, 2
  %236 = icmp eq i64 %index.next1251, %n.vec1236
  br i1 %236, label %middle.block1231, label %vector.body1243, !llvm.loop !31

middle.block1231:                                 ; preds = %vector.body1243
  br i1 %cmp.n1252, label %._crit_edge709.us, label %scalar.ph1232.preheader

scalar.ph1232.preheader:                          ; preds = %middle.block1231, %vector.memcheck1211, %.lr.ph708.us
  %indvars.iv939.ph = phi i64 [ %211, %vector.memcheck1211 ], [ %211, %.lr.ph708.us ], [ %ind.end1237, %middle.block1231 ]
  %indvars.iv937.ph = phi i64 [ %226, %vector.memcheck1211 ], [ %226, %.lr.ph708.us ], [ %ind.end1239, %middle.block1231 ]
  %indvars.iv935.ph = phi i64 [ %225, %vector.memcheck1211 ], [ %225, %.lr.ph708.us ], [ %ind.end1241, %middle.block1231 ]
  br label %scalar.ph1232

scalar.ph1232:                                    ; preds = %scalar.ph1232.preheader, %scalar.ph1232
  %indvars.iv939 = phi i64 [ %indvars.iv.next940, %scalar.ph1232 ], [ %indvars.iv939.ph, %scalar.ph1232.preheader ]
  %indvars.iv937 = phi i64 [ %indvars.iv.next938, %scalar.ph1232 ], [ %indvars.iv937.ph, %scalar.ph1232.preheader ]
  %indvars.iv935 = phi i64 [ %indvars.iv.next936, %scalar.ph1232 ], [ %indvars.iv935.ph, %scalar.ph1232.preheader ]
  %indvars.iv.next936 = add nsw i64 %indvars.iv935, 1
  %indvars.iv.next938 = add nsw i64 %indvars.iv937, 1
  %237 = getelementptr double, ptr %23, i64 %indvars.iv935
  %238 = load double, ptr %237, align 8, !tbaa !15
  %239 = getelementptr double, ptr %23, i64 %indvars.iv937
  %240 = load double, ptr %239, align 8, !tbaa !15
  %gep1137 = getelementptr %struct.doublecomplex, ptr %invariant.gep1136, i64 %indvars.iv939
  store double %238, ptr %gep1137, align 8, !tbaa !9
  %241 = getelementptr inbounds i8, ptr %gep1137, i64 8
  store double %240, ptr %241, align 8, !tbaa !32
  %indvars.iv.next940 = add nsw i64 %indvars.iv939, 1
  %.not666.not.us = icmp slt i64 %indvars.iv.next940, %212
  br i1 %.not666.not.us, label %scalar.ph1232, label %._crit_edge709.us, !llvm.loop !33

._crit_edge709.us:                                ; preds = %scalar.ph1232, %middle.block1231
  %indvars.iv.next936.lcssa = phi i64 [ %ind.end1241, %middle.block1231 ], [ %indvars.iv.next936, %scalar.ph1232 ]
  %indvars.iv.next938.lcssa = phi i64 [ %ind.end1239, %middle.block1231 ], [ %indvars.iv.next938, %scalar.ph1232 ]
  %242 = trunc nsw i64 %indvars.iv.next938.lcssa to i32
  %indvars.iv.next947 = add nuw nsw i64 %indvars.iv946, 1
  %exitcond950.not = icmp eq i64 %indvars.iv.next947, %wide.trip.count949
  br i1 %exitcond950.not, label %._crit_edge718, label %.lr.ph708.us, !llvm.loop !34

._crit_edge718:                                   ; preds = %._crit_edge709.us
  %243 = load i32, ptr %32, align 4, !tbaa !5
  %244 = shl nuw i32 %201, 1
  %245 = mul i32 %244, %243
  br i1 %.not659712, label %._crit_edge731, label %.lr.ph730

.lr.ph730:                                        ; preds = %._crit_edge718.thread1120, %._crit_edge718
  %246 = phi i32 [ %208, %._crit_edge718.thread1120 ], [ %245, %._crit_edge718 ]
  %247 = phi i32 [ %206, %._crit_edge718.thread1120 ], [ %243, %._crit_edge718 ]
  %248 = add i32 %247, %122
  %.not665719.not = icmp slt i32 %122, %248
  br i1 %.not665719.not, label %.lr.ph723.preheader, label %._crit_edge731

.lr.ph723.preheader:                              ; preds = %.lr.ph730
  %249 = sext i32 %122 to i64
  %250 = add nsw i64 %249, 1
  %251 = add i32 %133, %247
  %252 = add nuw i32 %201, 1
  %wide.trip.count962 = zext i32 %252 to i64
  %253 = add i32 %247, -1
  %254 = zext i32 %253 to i64
  %255 = shl nuw nsw i64 %254, 3
  %scevgep1186 = getelementptr i8, ptr %scevgep1185, i64 %255
  %256 = shl nsw i64 %249, 4
  %scevgep1189 = getelementptr i8, ptr %scevgep1188, i64 %256
  %257 = shl nuw nsw i64 %wide.trip.count962, 4
  %258 = add nsw i64 %257, -16
  %259 = mul i64 %258, %97
  %260 = shl nuw nsw i64 %254, 4
  %261 = getelementptr i8, ptr %scevgep1190, i64 %259
  %262 = getelementptr i8, ptr %261, i64 %256
  %scevgep1191 = getelementptr i8, ptr %262, i64 %260
  %263 = add i32 %247, -1
  %264 = zext i32 %263 to i64
  %265 = add nuw nsw i64 %264, 1
  %266 = add i32 %247, 1
  %267 = add i32 %266, %122
  %268 = add i32 %247, %122
  %min.iters.check1198 = icmp ult i32 %263, 6
  %n.mod.vf1200 = and i64 %265, 3
  %269 = icmp eq i64 %n.mod.vf1200, 0
  %270 = select i1 %269, i64 4, i64 %n.mod.vf1200
  %n.vec1201 = sub nsw i64 %265, %270
  %ind.end1202 = add nsw i64 %250, %n.vec1201
  br label %.lr.ph723

.lr.ph723:                                        ; preds = %.lr.ph723.preheader, %._crit_edge724
  %indvars.iv959 = phi i64 [ 1, %.lr.ph723.preheader ], [ %indvars.iv.next960, %._crit_edge724 ]
  %.4614728 = phi i32 [ %246, %.lr.ph723.preheader ], [ %297, %._crit_edge724 ]
  %271 = mul nsw i64 %indvars.iv959, %97
  %272 = sext i32 %.4614728 to i64
  %invariant.gep1138 = getelementptr %struct.doublecomplex, ptr %37, i64 %271
  br i1 %min.iters.check1198, label %scalar.ph1197.preheader, label %vector.memcheck1183

vector.memcheck1183:                              ; preds = %.lr.ph723
  %273 = shl nsw i64 %272, 3
  %scevgep1184 = getelementptr i8, ptr %23, i64 %273
  %scevgep1187 = getelementptr i8, ptr %scevgep1186, i64 %273
  %bound01192 = icmp ult ptr %scevgep1184, %scevgep1191
  %bound11193 = icmp ult ptr %scevgep1189, %scevgep1187
  %found.conflict1194 = and i1 %bound01192, %bound11193
  %274 = or i1 %found.conflict1194, %stride.check1195
  br i1 %274, label %scalar.ph1197.preheader, label %vector.ph1199

vector.ph1199:                                    ; preds = %vector.memcheck1183
  %ind.end1204 = add nsw i64 %n.vec1201, %272
  %invariant.gep1463 = getelementptr i8, ptr %invariant.gep1138, i64 16
  %invariant.gep1465 = getelementptr i8, ptr %invariant.gep1138, i64 32
  %invariant.gep1467 = getelementptr i8, ptr %invariant.gep1138, i64 48
  %invariant.gep1469 = getelementptr double, ptr %23, i64 %272
  br label %vector.body1206

vector.body1206:                                  ; preds = %vector.body1206, %vector.ph1199
  %index1207 = phi i64 [ 0, %vector.ph1199 ], [ %index.next1210, %vector.body1206 ]
  %offset.idx1208 = add i64 %250, %index1207
  %275 = getelementptr %struct.doublecomplex, ptr %invariant.gep1138, i64 %offset.idx1208
  %gep1464 = getelementptr %struct.doublecomplex, ptr %invariant.gep1463, i64 %offset.idx1208
  %gep1466 = getelementptr %struct.doublecomplex, ptr %invariant.gep1465, i64 %offset.idx1208
  %gep1468 = getelementptr %struct.doublecomplex, ptr %invariant.gep1467, i64 %offset.idx1208
  %276 = load double, ptr %275, align 8, !tbaa !9, !alias.scope !35
  %277 = load double, ptr %gep1464, align 8, !tbaa !9, !alias.scope !35
  %278 = insertelement <2 x double> poison, double %276, i64 0
  %279 = insertelement <2 x double> %278, double %277, i64 1
  %280 = load double, ptr %gep1466, align 8, !tbaa !9, !alias.scope !35
  %281 = load double, ptr %gep1468, align 8, !tbaa !9, !alias.scope !35
  %282 = insertelement <2 x double> poison, double %280, i64 0
  %283 = insertelement <2 x double> %282, double %281, i64 1
  %gep1470 = getelementptr double, ptr %invariant.gep1469, i64 %index1207
  %284 = getelementptr i8, ptr %gep1470, i64 16
  store <2 x double> %279, ptr %gep1470, align 8, !tbaa !15, !alias.scope !38, !noalias !35
  store <2 x double> %283, ptr %284, align 8, !tbaa !15, !alias.scope !38, !noalias !35
  %index.next1210 = add nuw i64 %index1207, 4
  %285 = icmp eq i64 %index.next1210, %n.vec1201
  br i1 %285, label %scalar.ph1197.preheader, label %vector.body1206, !llvm.loop !40

scalar.ph1197.preheader:                          ; preds = %vector.body1206, %vector.memcheck1183, %.lr.ph723
  %indvars.iv953.ph = phi i64 [ %250, %vector.memcheck1183 ], [ %250, %.lr.ph723 ], [ %ind.end1202, %vector.body1206 ]
  %indvars.iv951.ph = phi i64 [ %272, %vector.memcheck1183 ], [ %272, %.lr.ph723 ], [ %ind.end1204, %vector.body1206 ]
  %286 = trunc i64 %indvars.iv953.ph to i32
  %287 = sub i32 %267, %286
  %288 = sub i32 %268, %286
  %xtraiter = and i32 %287, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph1197.prol.loopexit, label %scalar.ph1197.prol

scalar.ph1197.prol:                               ; preds = %scalar.ph1197.preheader, %scalar.ph1197.prol
  %indvars.iv953.prol = phi i64 [ %indvars.iv.next954.prol, %scalar.ph1197.prol ], [ %indvars.iv953.ph, %scalar.ph1197.preheader ]
  %indvars.iv951.prol = phi i64 [ %indvars.iv.next952.prol, %scalar.ph1197.prol ], [ %indvars.iv951.ph, %scalar.ph1197.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %scalar.ph1197.prol ], [ 0, %scalar.ph1197.preheader ]
  %indvars.iv.next952.prol = add nsw i64 %indvars.iv951.prol, 1
  %gep1139.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1138, i64 %indvars.iv953.prol
  %289 = load double, ptr %gep1139.prol, align 8, !tbaa !9
  %290 = getelementptr double, ptr %23, i64 %indvars.iv951.prol
  store double %289, ptr %290, align 8, !tbaa !15
  %indvars.iv.next954.prol = add nsw i64 %indvars.iv953.prol, 1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph1197.prol.loopexit, label %scalar.ph1197.prol, !llvm.loop !41

scalar.ph1197.prol.loopexit:                      ; preds = %scalar.ph1197.prol, %scalar.ph1197.preheader
  %indvars.iv.next952.lcssa.unr = phi i64 [ poison, %scalar.ph1197.preheader ], [ %indvars.iv.next952.prol, %scalar.ph1197.prol ]
  %indvars.iv953.unr = phi i64 [ %indvars.iv953.ph, %scalar.ph1197.preheader ], [ %indvars.iv.next954.prol, %scalar.ph1197.prol ]
  %indvars.iv951.unr = phi i64 [ %indvars.iv951.ph, %scalar.ph1197.preheader ], [ %indvars.iv.next952.prol, %scalar.ph1197.prol ]
  %291 = icmp ult i32 %288, 3
  br i1 %291, label %._crit_edge724, label %scalar.ph1197.preheader.new

scalar.ph1197.preheader.new:                      ; preds = %scalar.ph1197.prol.loopexit
  %invariant.gep1471 = getelementptr i8, ptr %invariant.gep1138, i64 16
  %invariant.gep1475 = getelementptr i8, ptr %invariant.gep1138, i64 32
  %invariant.gep1479 = getelementptr i8, ptr %invariant.gep1138, i64 48
  br label %scalar.ph1197

scalar.ph1197:                                    ; preds = %scalar.ph1197, %scalar.ph1197.preheader.new
  %indvars.iv953 = phi i64 [ %indvars.iv953.unr, %scalar.ph1197.preheader.new ], [ %indvars.iv.next954.3, %scalar.ph1197 ]
  %indvars.iv951 = phi i64 [ %indvars.iv951.unr, %scalar.ph1197.preheader.new ], [ %indvars.iv.next952.3, %scalar.ph1197 ]
  %gep1139 = getelementptr %struct.doublecomplex, ptr %invariant.gep1138, i64 %indvars.iv953
  %292 = load double, ptr %gep1139, align 8, !tbaa !9
  %293 = getelementptr double, ptr %23, i64 %indvars.iv951
  store double %292, ptr %293, align 8, !tbaa !15
  %gep1472 = getelementptr %struct.doublecomplex, ptr %invariant.gep1471, i64 %indvars.iv953
  %294 = load double, ptr %gep1472, align 8, !tbaa !9
  %gep1474 = getelementptr double, ptr %invariant.gep1473, i64 %indvars.iv951
  store double %294, ptr %gep1474, align 8, !tbaa !15
  %gep1476 = getelementptr %struct.doublecomplex, ptr %invariant.gep1475, i64 %indvars.iv953
  %295 = load double, ptr %gep1476, align 8, !tbaa !9
  %gep1478 = getelementptr double, ptr %invariant.gep1477, i64 %indvars.iv951
  store double %295, ptr %gep1478, align 8, !tbaa !15
  %indvars.iv.next952.3 = add nsw i64 %indvars.iv951, 4
  %gep1480 = getelementptr %struct.doublecomplex, ptr %invariant.gep1479, i64 %indvars.iv953
  %296 = load double, ptr %gep1480, align 8, !tbaa !9
  %gep1482 = getelementptr double, ptr %invariant.gep1481, i64 %indvars.iv951
  store double %296, ptr %gep1482, align 8, !tbaa !15
  %indvars.iv.next954.3 = add nsw i64 %indvars.iv953, 4
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next954.3 to i32
  %exitcond958.not.3 = icmp eq i32 %251, %lftr.wideiv.3
  br i1 %exitcond958.not.3, label %._crit_edge724, label %scalar.ph1197, !llvm.loop !43

._crit_edge724:                                   ; preds = %scalar.ph1197, %scalar.ph1197.prol.loopexit
  %indvars.iv.next952.lcssa = phi i64 [ %indvars.iv.next952.lcssa.unr, %scalar.ph1197.prol.loopexit ], [ %indvars.iv.next952.3, %scalar.ph1197 ]
  %297 = trunc nsw i64 %indvars.iv.next952.lcssa to i32
  %indvars.iv.next960 = add nuw nsw i64 %indvars.iv959, 1
  %exitcond963.not = icmp eq i64 %indvars.iv.next960, %wide.trip.count962
  br i1 %exitcond963.not, label %._crit_edge731, label %.lr.ph723, !llvm.loop !44

._crit_edge731:                                   ; preds = %._crit_edge724, %.lr.ph730, %._crit_edge718.thread, %._crit_edge718
  %298 = phi i32 [ %204, %._crit_edge718.thread ], [ %245, %._crit_edge718 ], [ %246, %.lr.ph730 ], [ %246, %._crit_edge724 ]
  %299 = add nsw i32 %133, %41
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds double, ptr %49, i64 %300
  %302 = or disjoint i32 %298, 1
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %58, i64 %303
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull @c_b9, ptr noundef %301, ptr noundef nonnull %9, ptr noundef nonnull %304, ptr noundef nonnull %32, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %32) #5
  %305 = load i32, ptr %32, align 4, !tbaa !5
  %306 = load i32, ptr %3, align 4, !tbaa !5
  %.not661739 = icmp slt i32 %306, 1
  br i1 %.not661739, label %._crit_edge744, label %.lr.ph743.preheader

.lr.ph743.preheader:                              ; preds = %._crit_edge731
  %307 = shl i32 %305, 1
  %308 = mul i32 %307, %306
  %309 = sext i32 %122 to i64
  %310 = add nsw i64 %309, 1
  %311 = add nuw i32 %306, 1
  %wide.trip.count976 = zext i32 %311 to i64
  br label %.lr.ph743

.lr.ph743:                                        ; preds = %.lr.ph743.preheader, %._crit_edge737
  %indvars.iv973 = phi i64 [ 1, %.lr.ph743.preheader ], [ %indvars.iv.next974, %._crit_edge737 ]
  %.6616741 = phi i32 [ %308, %.lr.ph743.preheader ], [ %.7617.lcssa, %._crit_edge737 ]
  %312 = load i32, ptr %32, align 4, !tbaa !5
  %313 = add i32 %312, %122
  %.not664732.not = icmp slt i32 %122, %313
  br i1 %.not664732.not, label %.lr.ph736, label %._crit_edge737

.lr.ph736:                                        ; preds = %.lr.ph743
  %314 = mul nsw i64 %indvars.iv973, %97
  %315 = sext i32 %.6616741 to i64
  %316 = add i32 %133, %312
  %invariant.gep1140 = getelementptr %struct.doublecomplex, ptr %37, i64 %314
  br label %317

317:                                              ; preds = %.lr.ph736, %317
  %indvars.iv966 = phi i64 [ %310, %.lr.ph736 ], [ %indvars.iv.next967, %317 ]
  %indvars.iv964 = phi i64 [ %315, %.lr.ph736 ], [ %indvars.iv.next965, %317 ]
  %indvars.iv.next965 = add nsw i64 %indvars.iv964, 1
  %gep1141 = getelementptr %struct.doublecomplex, ptr %invariant.gep1140, i64 %indvars.iv966
  %318 = call { double, double } @Cd(ptr noundef %gep1141)
  %319 = extractvalue { double, double } %318, 1
  %320 = getelementptr double, ptr %23, i64 %indvars.iv964
  store double %319, ptr %320, align 8, !tbaa !15
  %indvars.iv.next967 = add nsw i64 %indvars.iv966, 1
  %lftr.wideiv971 = trunc i64 %indvars.iv.next967 to i32
  %exitcond972.not = icmp eq i32 %316, %lftr.wideiv971
  br i1 %exitcond972.not, label %._crit_edge737.loopexit, label %317, !llvm.loop !45

._crit_edge737.loopexit:                          ; preds = %317
  %321 = trunc nsw i64 %indvars.iv.next965 to i32
  br label %._crit_edge737

._crit_edge737:                                   ; preds = %._crit_edge737.loopexit, %.lr.ph743
  %.7617.lcssa = phi i32 [ %.6616741, %.lr.ph743 ], [ %321, %._crit_edge737.loopexit ]
  %indvars.iv.next974 = add nuw nsw i64 %indvars.iv973, 1
  %exitcond977.not = icmp eq i64 %indvars.iv.next974, %wide.trip.count976
  br i1 %exitcond977.not, label %._crit_edge744.loopexit, label %.lr.ph743, !llvm.loop !46

._crit_edge744.loopexit:                          ; preds = %._crit_edge737
  %.pre1109 = load i32, ptr %32, align 4, !tbaa !5
  %.pre1110 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge744

._crit_edge744:                                   ; preds = %._crit_edge744.loopexit, %._crit_edge731
  %322 = phi i32 [ %.pre1110, %._crit_edge744.loopexit ], [ %306, %._crit_edge731 ]
  %323 = phi i32 [ %.pre1109, %._crit_edge744.loopexit ], [ %305, %._crit_edge731 ]
  %324 = mul nsw i32 %322, %323
  %325 = shl i32 %324, 1
  %326 = or disjoint i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %58, i64 %327
  %329 = sext i32 %324 to i64
  %gep762 = getelementptr double, ptr %23, i64 %329
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %3, ptr noundef nonnull %32, ptr noundef nonnull @c_b9, ptr noundef %301, ptr noundef nonnull %9, ptr noundef nonnull %328, ptr noundef nonnull %32, ptr noundef nonnull @c_b10, ptr noundef %gep762, ptr noundef nonnull %32) #5
  %330 = load i32, ptr %3, align 4, !tbaa !5
  %.not662754 = icmp slt i32 %330, 1
  br i1 %.not662754, label %._crit_edge760, label %.lr.ph759

.lr.ph759:                                        ; preds = %._crit_edge744
  %331 = load i32, ptr %32, align 4, !tbaa !5
  %332 = add i32 %331, %122
  %.not663745.not = icmp slt i32 %122, %332
  br i1 %.not663745.not, label %.lr.ph750.preheader, label %._crit_edge760

.lr.ph750.preheader:                              ; preds = %.lr.ph759
  %333 = mul nsw i32 %330, %331
  %334 = sext i32 %122 to i64
  %335 = add nsw i64 %334, 1
  %336 = add i32 %133, %331
  %337 = add nuw i32 %330, 1
  %wide.trip.count994 = zext i32 %337 to i64
  %338 = shl nsw i64 %334, 4
  %scevgep1161 = getelementptr i8, ptr %scevgep, i64 %338
  %339 = shl nuw nsw i64 %wide.trip.count994, 4
  %340 = add nsw i64 %339, -16
  %341 = mul i64 %340, %98
  %342 = add i32 %331, -1
  %343 = zext i32 %342 to i64
  %344 = shl nuw nsw i64 %343, 4
  %345 = getelementptr i8, ptr %scevgep1162, i64 %341
  %346 = getelementptr i8, ptr %345, i64 %338
  %scevgep1163 = getelementptr i8, ptr %346, i64 %344
  %347 = shl nuw nsw i64 %343, 3
  %scevgep1166 = getelementptr i8, ptr %scevgep1165, i64 %347
  %scevgep1170 = getelementptr i8, ptr %scevgep1169, i64 %347
  %348 = add i32 %331, -1
  %349 = zext i32 %348 to i64
  %350 = add nuw nsw i64 %349, 1
  %351 = add i32 %122, %331
  %min.iters.check = icmp ult i32 %348, 7
  %n.vec = and i64 %350, 8589934590
  %ind.end = add nsw i64 %335, %n.vec
  %cmp.n = icmp eq i64 %350, %n.vec
  %352 = sub i32 %122, %331
  br label %.lr.ph750

.lr.ph750:                                        ; preds = %.lr.ph750.preheader, %._crit_edge751
  %indvars.iv991 = phi i64 [ 1, %.lr.ph750.preheader ], [ %indvars.iv.next992, %._crit_edge751 ]
  %.2757 = phi i64 [ 0, %.lr.ph750.preheader ], [ %indvars.iv.next979.lcssa, %._crit_edge751 ]
  %.2604756 = phi i32 [ %333, %.lr.ph750.preheader ], [ %382, %._crit_edge751 ]
  %353 = mul nsw i64 %indvars.iv991, %98
  %sext1117 = shl i64 %.2757, 32
  %354 = ashr exact i64 %sext1117, 32
  %355 = sext i32 %.2604756 to i64
  %invariant.gep1142 = getelementptr %struct.doublecomplex, ptr %40, i64 %353
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph750
  %356 = shl nsw i64 %355, 3
  %scevgep1164 = getelementptr i8, ptr %23, i64 %356
  %scevgep1167 = getelementptr i8, ptr %scevgep1166, i64 %356
  %357 = ashr exact i64 %sext1117, 29
  %scevgep1168 = getelementptr i8, ptr %23, i64 %357
  %scevgep1171 = getelementptr i8, ptr %scevgep1170, i64 %357
  %bound0 = icmp ult ptr %scevgep1161, %scevgep1167
  %bound1 = icmp ult ptr %scevgep1164, %scevgep1163
  %found.conflict = and i1 %bound0, %bound1
  %bound01172 = icmp ult ptr %scevgep1161, %scevgep1171
  %bound11173 = icmp ult ptr %scevgep1168, %scevgep1163
  %found.conflict1174 = and i1 %bound01172, %bound11173
  %358 = or i1 %found.conflict1174, %stride.check1175
  %conflict.rdx = or i1 %found.conflict, %358
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %ind.end1176 = add nsw i64 %n.vec, %355
  %ind.end1178 = add nsw i64 %354, %n.vec
  %359 = getelementptr double, ptr %23, i64 %354
  %invariant.gep1483 = getelementptr double, ptr %23, i64 %355
  %360 = getelementptr %struct.doublecomplex, ptr %invariant.gep1142, i64 %335
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %361 = getelementptr double, ptr %359, i64 %index
  %wide.load = load <2 x double>, ptr %361, align 8, !tbaa !15, !alias.scope !47
  %gep1484 = getelementptr double, ptr %invariant.gep1483, i64 %index
  %wide.load1182 = load <2 x double>, ptr %gep1484, align 8, !tbaa !15, !alias.scope !50
  %362 = getelementptr %struct.doublecomplex, ptr %360, i64 %index
  %interleaved.vec = shufflevector <2 x double> %wide.load, <2 x double> %wide.load1182, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %362, align 8, !tbaa !15
  %index.next = add nuw i64 %index, 2
  %363 = icmp eq i64 %index.next, %n.vec
  br i1 %363, label %middle.block, label %vector.body, !llvm.loop !52

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph750
  %indvars.iv982.ph = phi i64 [ %335, %vector.memcheck ], [ %335, %.lr.ph750 ], [ %ind.end, %middle.block ]
  %indvars.iv980.ph = phi i64 [ %355, %vector.memcheck ], [ %355, %.lr.ph750 ], [ %ind.end1176, %middle.block ]
  %indvars.iv978.ph = phi i64 [ %354, %vector.memcheck ], [ %354, %.lr.ph750 ], [ %ind.end1178, %middle.block ]
  %364 = trunc i64 %indvars.iv982.ph to i32
  %365 = add i32 %352, %364
  %366 = and i32 %365, 1
  %lcmp.mod1436.not.not = icmp eq i32 %366, 0
  br i1 %lcmp.mod1436.not.not, label %scalar.ph.prol, label %scalar.ph.prol.loopexit

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %indvars.iv.next979.prol = add nsw i64 %indvars.iv978.ph, 1
  %indvars.iv.next981.prol = add nsw i64 %indvars.iv980.ph, 1
  %367 = getelementptr double, ptr %23, i64 %indvars.iv978.ph
  %368 = load double, ptr %367, align 8, !tbaa !15
  %369 = getelementptr double, ptr %23, i64 %indvars.iv980.ph
  %370 = load double, ptr %369, align 8, !tbaa !15
  %gep1143.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1142, i64 %indvars.iv982.ph
  store double %368, ptr %gep1143.prol, align 8, !tbaa !9
  %371 = getelementptr inbounds i8, ptr %gep1143.prol, i64 8
  store double %370, ptr %371, align 8, !tbaa !32
  %indvars.iv.next983.prol = add nsw i64 %indvars.iv982.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.next979.lcssa1434.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %indvars.iv.next979.prol, %scalar.ph.prol ]
  %indvars.iv.next981.lcssa1433.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %indvars.iv.next981.prol, %scalar.ph.prol ]
  %indvars.iv982.unr = phi i64 [ %indvars.iv982.ph, %scalar.ph.preheader ], [ %indvars.iv.next983.prol, %scalar.ph.prol ]
  %indvars.iv980.unr = phi i64 [ %indvars.iv980.ph, %scalar.ph.preheader ], [ %indvars.iv.next981.prol, %scalar.ph.prol ]
  %indvars.iv978.unr = phi i64 [ %indvars.iv978.ph, %scalar.ph.preheader ], [ %indvars.iv.next979.prol, %scalar.ph.prol ]
  %372 = icmp eq i32 %351, %364
  br i1 %372, label %._crit_edge751, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv982 = phi i64 [ %indvars.iv.next983.1, %scalar.ph ], [ %indvars.iv982.unr, %scalar.ph.prol.loopexit ]
  %indvars.iv980 = phi i64 [ %indvars.iv.next981.1, %scalar.ph ], [ %indvars.iv980.unr, %scalar.ph.prol.loopexit ]
  %indvars.iv978 = phi i64 [ %indvars.iv.next979.1, %scalar.ph ], [ %indvars.iv978.unr, %scalar.ph.prol.loopexit ]
  %373 = getelementptr double, ptr %23, i64 %indvars.iv978
  %374 = load double, ptr %373, align 8, !tbaa !15
  %375 = getelementptr double, ptr %23, i64 %indvars.iv980
  %376 = load double, ptr %375, align 8, !tbaa !15
  %gep1143 = getelementptr %struct.doublecomplex, ptr %invariant.gep1142, i64 %indvars.iv982
  store double %374, ptr %gep1143, align 8, !tbaa !9
  %377 = getelementptr inbounds i8, ptr %gep1143, i64 8
  store double %376, ptr %377, align 8, !tbaa !32
  %indvars.iv.next979.1 = add nsw i64 %indvars.iv978, 2
  %indvars.iv.next981.1 = add nsw i64 %indvars.iv980, 2
  %gep1486 = getelementptr double, ptr %invariant.gep1485, i64 %indvars.iv978
  %378 = load double, ptr %gep1486, align 8, !tbaa !15
  %gep1488 = getelementptr double, ptr %invariant.gep1487, i64 %indvars.iv980
  %379 = load double, ptr %gep1488, align 8, !tbaa !15
  %380 = getelementptr %struct.doublecomplex, ptr %invariant.gep1142, i64 %indvars.iv982
  %gep1143.1 = getelementptr i8, ptr %380, i64 16
  store double %378, ptr %gep1143.1, align 8, !tbaa !9
  %381 = getelementptr i8, ptr %380, i64 24
  store double %379, ptr %381, align 8, !tbaa !32
  %indvars.iv.next983.1 = add nsw i64 %indvars.iv982, 2
  %lftr.wideiv989.1 = trunc i64 %indvars.iv.next983.1 to i32
  %exitcond990.not.1 = icmp eq i32 %336, %lftr.wideiv989.1
  br i1 %exitcond990.not.1, label %._crit_edge751, label %scalar.ph, !llvm.loop !53

._crit_edge751:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next979.lcssa = phi i64 [ %ind.end1178, %middle.block ], [ %indvars.iv.next979.lcssa1434.unr, %scalar.ph.prol.loopexit ], [ %indvars.iv.next979.1, %scalar.ph ]
  %indvars.iv.next981.lcssa = phi i64 [ %ind.end1176, %middle.block ], [ %indvars.iv.next981.lcssa1433.unr, %scalar.ph.prol.loopexit ], [ %indvars.iv.next981.1, %scalar.ph ]
  %382 = trunc nsw i64 %indvars.iv.next981.lcssa to i32
  %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1
  %exitcond995.not = icmp eq i64 %indvars.iv.next992, %wide.trip.count994
  br i1 %exitcond995.not, label %._crit_edge760, label %.lr.ph750, !llvm.loop !54

._crit_edge760:                                   ; preds = %._crit_edge751, %.lr.ph759, %._crit_edge744
  %indvars.iv.next997 = add nsw i64 %indvars.iv996, 1
  %.not654.not = icmp slt i64 %indvars.iv996, %100
  br i1 %.not654.not, label %119, label %._crit_edge767.loopexit, !llvm.loop !55

._crit_edge767.loopexit:                          ; preds = %._crit_edge760
  %.pre1111 = load i32, ptr %30, align 4, !tbaa !5
  br label %._crit_edge767

._crit_edge767:                                   ; preds = %._crit_edge767.loopexit, %92
  %383 = phi i32 [ %.pre1111, %._crit_edge767.loopexit ], [ %93, %92 ]
  %.not655768 = icmp slt i32 %383, 1
  br i1 %.not655768, label %._crit_edge772, label %.lr.ph771.preheader

.lr.ph771.preheader:                              ; preds = %._crit_edge767
  %384 = zext nneg i32 %383 to i64
  br label %.lr.ph771

.lr.ph771:                                        ; preds = %.lr.ph771.preheader, %.lr.ph771
  %indvars.iv999 = phi i64 [ 1, %.lr.ph771.preheader ], [ %indvars.iv.next1000, %.lr.ph771 ]
  %indvars.iv.next1000 = add nuw nsw i64 %indvars.iv999, 1
  %385 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv999
  %386 = load i32, ptr %385, align 4, !tbaa !5
  %387 = add nsw i32 %386, %35
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %388
  %390 = add nsw i32 %386, %38
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %391
  call void @zcopy_(ptr noundef nonnull %3, ptr noundef %389, ptr noundef nonnull %5, ptr noundef %392, ptr noundef nonnull %7) #5
  %.not655.not = icmp ult i64 %indvars.iv999, %384
  br i1 %.not655.not, label %.lr.ph771, label %._crit_edge772, !llvm.loop !56

._crit_edge772:                                   ; preds = %.lr.ph771, %._crit_edge767
  %393 = load i32, ptr @c__2, align 4, !tbaa !5
  %394 = load i32, ptr %28, align 4, !tbaa !5
  %395 = call i32 @pow_ii(i32 noundef %393, i32 noundef %394)
  store i32 0, ptr %29, align 4, !tbaa !5
  %396 = load i32, ptr %28, align 4, !tbaa !5
  %397 = icmp sgt i32 %396, 0
  br i1 %397, label %.lr.ph783, label %.loopexit

.lr.ph783:                                        ; preds = %._crit_edge772
  %398 = shl i32 %65, 1
  br label %399

399:                                              ; preds = %.lr.ph783, %._crit_edge778
  %.0781 = phi i32 [ %396, %.lr.ph783 ], [ %456, %._crit_edge778 ]
  %.8780 = phi i32 [ %395, %.lr.ph783 ], [ %.9.lcssa, %._crit_edge778 ]
  %400 = shl nuw i32 %.0781, 1
  %401 = add nsw i32 %400, -1
  %402 = icmp eq i32 %.0781, 1
  br i1 %402, label %.lr.ph777, label %403

403:                                              ; preds = %399
  %404 = add nsw i32 %.0781, -1
  %405 = load i32, ptr @c__2, align 4, !tbaa !5
  %406 = call i32 @pow_ii(i32 noundef %405, i32 noundef %404)
  %407 = shl i32 %406, 1
  %408 = add nsw i32 %407, -1
  %.not656773.not = icmp slt i32 %406, %407
  br i1 %.not656773.not, label %.lr.ph777, label %._crit_edge778

.lr.ph777:                                        ; preds = %399, %403
  %409 = phi i32 [ %408, %403 ], [ 1, %399 ]
  %.05981124 = phi i32 [ %406, %403 ], [ 1, %399 ]
  %410 = mul nsw i32 %.0781, %52
  %411 = mul nsw i32 %401, %52
  %412 = mul nsw i32 %401, %41
  %413 = mul nsw i32 %.0781, %41
  %414 = sext i32 %.8780 to i64
  %415 = sext i32 %.05981124 to i64
  %416 = sext i32 %409 to i64
  br label %417

417:                                              ; preds = %.lr.ph777, %417
  %indvars.iv1004 = phi i64 [ %415, %.lr.ph777 ], [ %indvars.iv.next1005, %417 ]
  %indvars.iv1002 = phi i64 [ %414, %.lr.ph777 ], [ %indvars.iv.next1003, %417 ]
  %418 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv1004
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = trunc nsw i64 %indvars.iv1004 to i32
  %421 = add i32 %65, %420
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %59, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !5
  store i32 %424, ptr %31, align 4, !tbaa !5
  %425 = add i32 %398, %420
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds i32, ptr %59, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !5
  store i32 %428, ptr %32, align 4, !tbaa !5
  %429 = sub nsw i32 %419, %424
  %indvars.iv.next1003 = add nsw i64 %indvars.iv1002, -1
  %430 = add nsw i32 %429, %38
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %431
  %433 = add nsw i32 %429, %35
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %434
  %436 = add nsw i32 %429, %410
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %54, i64 %437
  %439 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv.next1003
  %440 = add nsw i32 %429, %411
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %55, i64 %441
  %443 = add nsw i32 %429, %412
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %43, i64 %444
  %446 = getelementptr inbounds double, ptr %44, i64 %444
  %447 = add nsw i32 %429, %413
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %47, i64 %448
  %450 = getelementptr inbounds double, ptr %46, i64 %444
  %451 = getelementptr inbounds double, ptr %45, i64 %448
  %452 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv.next1003
  %453 = getelementptr inbounds double, ptr %56, i64 %indvars.iv.next1003
  %454 = getelementptr inbounds double, ptr %57, i64 %indvars.iv.next1003
  call void @zlals0_(ptr noundef nonnull %0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef %432, ptr noundef nonnull %7, ptr noundef %435, ptr noundef nonnull %5, ptr noundef %438, ptr noundef nonnull %439, ptr noundef %442, ptr noundef nonnull %18, ptr noundef %445, ptr noundef nonnull %9, ptr noundef %446, ptr noundef %449, ptr noundef %450, ptr noundef %451, ptr noundef nonnull %452, ptr noundef nonnull %453, ptr noundef nonnull %454, ptr noundef %23, ptr noundef nonnull %25) #5
  %indvars.iv.next1005 = add nsw i64 %indvars.iv1004, 1
  %.not656.not = icmp slt i64 %indvars.iv1004, %416
  br i1 %.not656.not, label %417, label %._crit_edge778.loopexit, !llvm.loop !57

._crit_edge778.loopexit:                          ; preds = %417
  %455 = trunc nsw i64 %indvars.iv.next1003 to i32
  br label %._crit_edge778

._crit_edge778:                                   ; preds = %._crit_edge778.loopexit, %403
  %.9.lcssa = phi i32 [ %.8780, %403 ], [ %455, %._crit_edge778.loopexit ]
  %456 = add nsw i32 %.0781, -1
  %457 = icmp sgt i32 %.0781, 1
  br i1 %457, label %399, label %.loopexit, !llvm.loop !58

458:                                              ; preds = %83
  %459 = load i32, ptr %28, align 4, !tbaa !5
  %.not669791 = icmp slt i32 %459, 1
  br i1 %.not669791, label %._crit_edge796, label %.lr.ph795.preheader

.lr.ph795.preheader:                              ; preds = %458
  %invariant.gep1144 = getelementptr i32, ptr %59, i64 %88
  br label %.lr.ph795

.lr.ph795:                                        ; preds = %.lr.ph795.preheader, %._crit_edge789
  %.1793 = phi i32 [ %513, %._crit_edge789 ], [ 1, %.lr.ph795.preheader ]
  %.10792 = phi i32 [ %.11.lcssa, %._crit_edge789 ], [ 0, %.lr.ph795.preheader ]
  %460 = shl nuw i32 %.1793, 1
  %461 = add nsw i32 %460, -1
  %462 = icmp eq i32 %.1793, 1
  br i1 %462, label %.lr.ph788, label %463

463:                                              ; preds = %.lr.ph795
  %464 = add nsw i32 %.1793, -1
  %465 = load i32, ptr @c__2, align 4, !tbaa !5
  %466 = call i32 @pow_ii(i32 noundef %465, i32 noundef %464)
  %467 = shl i32 %466, 1
  %468 = add nsw i32 %467, -1
  %.not683784.not = icmp sgt i32 %467, %466
  br i1 %.not683784.not, label %.lr.ph788, label %._crit_edge789

.lr.ph788:                                        ; preds = %.lr.ph795, %463
  %.15971130 = phi i32 [ %468, %463 ], [ 1, %.lr.ph795 ]
  %.15991129 = phi i32 [ %466, %463 ], [ 1, %.lr.ph795 ]
  %469 = mul nsw i32 %.1793, %52
  %470 = mul nsw i32 %461, %52
  %471 = mul nsw i32 %461, %41
  %472 = mul nsw i32 %.1793, %41
  %473 = sext i32 %.10792 to i64
  %474 = sext i32 %.15971130 to i64
  %475 = sext i32 %.15991129 to i64
  br label %476

476:                                              ; preds = %.lr.ph788, %476
  %indvars.iv1011 = phi i64 [ %474, %.lr.ph788 ], [ %indvars.iv.next1012, %476 ]
  %indvars.iv1009 = phi i64 [ %473, %.lr.ph788 ], [ %indvars.iv.next1010, %476 ]
  %indvars.iv.next1012 = add nsw i64 %indvars.iv1011, -1
  %477 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv1011
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = trunc nsw i64 %indvars.iv1011 to i32
  %480 = add i32 %65, %479
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds i32, ptr %59, i64 %481
  %483 = load i32, ptr %482, align 4, !tbaa !5
  store i32 %483, ptr %31, align 4, !tbaa !5
  %gep1145 = getelementptr i32, ptr %invariant.gep1144, i64 %indvars.iv.next1012
  %484 = load i32, ptr %gep1145, align 4, !tbaa !5
  store i32 %484, ptr %32, align 4, !tbaa !5
  %485 = sub nsw i32 %478, %483
  %486 = icmp ne i64 %indvars.iv1011, %474
  %. = zext i1 %486 to i32
  store i32 %., ptr %29, align 4, !tbaa !5
  %indvars.iv.next1010 = add nsw i64 %indvars.iv1009, 1
  %487 = add nsw i32 %485, %35
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %488
  %490 = add nsw i32 %485, %38
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %491
  %493 = add nsw i32 %485, %469
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds i32, ptr %54, i64 %494
  %496 = getelementptr i32, ptr %16, i64 %indvars.iv1009
  %497 = add nsw i32 %485, %470
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i32, ptr %55, i64 %498
  %500 = add nsw i32 %485, %471
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %43, i64 %501
  %503 = getelementptr inbounds double, ptr %44, i64 %501
  %504 = add nsw i32 %485, %472
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %47, i64 %505
  %507 = getelementptr inbounds double, ptr %46, i64 %501
  %508 = getelementptr inbounds double, ptr %45, i64 %505
  %509 = getelementptr i32, ptr %11, i64 %indvars.iv1009
  %510 = getelementptr double, ptr %21, i64 %indvars.iv1009
  %511 = getelementptr double, ptr %22, i64 %indvars.iv1009
  call void @zlals0_(ptr noundef nonnull %0, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef %489, ptr noundef nonnull %5, ptr noundef %492, ptr noundef nonnull %7, ptr noundef %495, ptr noundef nonnull %496, ptr noundef %499, ptr noundef nonnull %18, ptr noundef %502, ptr noundef nonnull %9, ptr noundef %503, ptr noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef nonnull %509, ptr noundef nonnull %510, ptr noundef nonnull %511, ptr noundef %23, ptr noundef nonnull %25) #5
  %.not683.not = icmp sgt i64 %indvars.iv1011, %475
  br i1 %.not683.not, label %476, label %._crit_edge789.loopexit, !llvm.loop !59

._crit_edge789.loopexit:                          ; preds = %476
  %512 = trunc nsw i64 %indvars.iv.next1010 to i32
  br label %._crit_edge789

._crit_edge789:                                   ; preds = %._crit_edge789.loopexit, %463
  %.11.lcssa = phi i32 [ %.10792, %463 ], [ %512, %._crit_edge789.loopexit ]
  %513 = add nuw nsw i32 %.1793, 1
  %.not669.not = icmp slt i32 %.1793, %459
  br i1 %.not669.not, label %.lr.ph795, label %._crit_edge796, !llvm.loop !60

._crit_edge796:                                   ; preds = %._crit_edge789, %458
  %514 = load i32, ptr %30, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  %516 = sdiv i32 %515, 2
  %.not670885 = icmp sgt i32 %516, %514
  br i1 %.not670885, label %.loopexit, label %.lr.ph888

.lr.ph888:                                        ; preds = %._crit_edge796
  %517 = shl i32 %65, 1
  %518 = sext i32 %35 to i64
  %519 = sext i32 %38 to i64
  %520 = sext i32 %516 to i64
  %.pre1112 = load i32, ptr %3, align 4, !tbaa !5
  %521 = sext i32 %514 to i64
  %522 = shl nsw i64 %519, 4
  %523 = shl nsw i64 %39, 4
  %524 = getelementptr i8, ptr %6, i64 %522
  %525 = getelementptr i8, ptr %524, i64 %523
  %scevgep1283 = getelementptr i8, ptr %525, i64 16
  %526 = getelementptr i8, ptr %6, i64 %523
  %scevgep1285 = getelementptr i8, ptr %526, i64 32
  %scevgep1288 = getelementptr i8, ptr %23, i64 8
  %scevgep1292 = getelementptr i8, ptr %23, i64 8
  %scevgep1328 = getelementptr i8, ptr %23, i64 8
  %527 = shl nsw i64 %518, 4
  %528 = shl nsw i64 %36, 4
  %529 = getelementptr i8, ptr %4, i64 %527
  %530 = getelementptr i8, ptr %529, i64 %528
  %scevgep1331 = getelementptr i8, ptr %530, i64 16
  %531 = getelementptr i8, ptr %4, i64 %528
  %scevgep1333 = getelementptr i8, ptr %531, i64 24
  %532 = add nsw i64 %519, %39
  %533 = shl nsw i64 %532, 4
  %scevgep1355 = getelementptr i8, ptr %6, i64 %533
  %534 = shl nsw i64 %519, 4
  %535 = add nsw i64 %519, %39
  %536 = add nsw i64 %518, %36
  %537 = shl nsw i64 %536, 4
  %scevgep1401 = getelementptr i8, ptr %4, i64 %537
  %scevgep1403 = getelementptr i8, ptr %4, i64 -8
  %538 = shl nsw i64 %518, 4
  %539 = add nsw i64 %518, %36
  %stride.check1408 = icmp slt i32 %35, 0
  %invariant.gep1499 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1503 = getelementptr i8, ptr %23, i64 16
  %invariant.gep1507 = getelementptr i8, ptr %23, i64 24
  %stride.check1372 = icmp slt i32 %38, 0
  %stride.check1338 = icmp slt i32 %35, 0
  %invariant.gep1523 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1527 = getelementptr i8, ptr %23, i64 16
  %invariant.gep1531 = getelementptr i8, ptr %23, i64 24
  %stride.check1302 = icmp slt i32 %38, 0
  %invariant.gep1535 = getelementptr i8, ptr %23, i64 8
  %invariant.gep1537 = getelementptr i8, ptr %23, i64 8
  br label %540

540:                                              ; preds = %.lr.ph888, %._crit_edge880
  %541 = phi i32 [ %.pre1112, %.lr.ph888 ], [ %758, %._crit_edge880 ]
  %indvars.iv1104 = phi i64 [ %520, %.lr.ph888 ], [ %indvars.iv.next1105, %._crit_edge880 ]
  %542 = getelementptr inbounds i32, ptr %59, i64 %indvars.iv1104
  %543 = load i32, ptr %542, align 4, !tbaa !5
  %544 = trunc nsw i64 %indvars.iv1104 to i32
  %545 = add i32 %65, %544
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds i32, ptr %59, i64 %546
  %548 = load i32, ptr %547, align 4, !tbaa !5
  store i32 %548, ptr %31, align 4, !tbaa !5
  %549 = add i32 %517, %544
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds i32, ptr %59, i64 %550
  %552 = load i32, ptr %551, align 4, !tbaa !5
  store i32 %552, ptr %32, align 4, !tbaa !5
  %553 = add nsw i32 %548, 1
  store i32 %553, ptr %33, align 4, !tbaa !5
  %554 = load i32, ptr %30, align 4, !tbaa !5
  %555 = icmp ne i32 %554, %544
  %556 = zext i1 %555 to i32
  %storemerge = add nsw i32 %552, %556
  store i32 %storemerge, ptr %34, align 4, !tbaa !5
  %557 = sub i32 %543, %548
  %558 = add i32 %543, 1
  %559 = shl i32 %553, 1
  %560 = mul i32 %559, %541
  %.not671804 = icmp sgt i32 %541, 0
  %.not682.not797 = icmp slt i32 %557, %558
  %or.cond1159 = select i1 %.not671804, i1 %.not682.not797, i1 false
  br i1 %or.cond1159, label %.lr.ph801.us.preheader, label %._crit_edge809

.lr.ph801.us.preheader:                           ; preds = %540
  %561 = sext i32 %557 to i64
  %562 = add nuw i32 %541, 1
  %wide.trip.count1028 = zext i32 %562 to i64
  %wide.trip.count1023 = sext i32 %558 to i64
  %563 = mul nsw i64 %561, -8
  %scevgep1399 = getelementptr i8, ptr %23, i64 %563
  %564 = shl nsw i64 %561, 4
  %scevgep1402 = getelementptr i8, ptr %scevgep1401, i64 %564
  %565 = add nsw i64 %wide.trip.count1028, -2
  %566 = mul i64 %538, %565
  %567 = add nsw i64 %539, %wide.trip.count1023
  %568 = shl nsw i64 %567, 4
  %569 = getelementptr i8, ptr %scevgep1403, i64 %566
  %scevgep1404 = getelementptr i8, ptr %569, i64 %568
  %570 = sub nsw i64 %wide.trip.count1023, %561
  %min.iters.check1411 = icmp ult i64 %570, 8
  %n.vec1414 = and i64 %570, -4
  %ind.end1415 = add nsw i64 %n.vec1414, %561
  %cmp.n1424 = icmp eq i64 %570, %n.vec1414
  br label %.lr.ph801.us

.lr.ph801.us:                                     ; preds = %.lr.ph801.us.preheader, %._crit_edge802.us
  %indvars.iv1025 = phi i64 [ 1, %.lr.ph801.us.preheader ], [ %indvars.iv.next1026, %._crit_edge802.us ]
  %.12806.us = phi i32 [ %560, %.lr.ph801.us.preheader ], [ %598, %._crit_edge802.us ]
  %571 = mul nsw i64 %indvars.iv1025, %518
  %572 = sext i32 %.12806.us to i64
  %invariant.gep1146 = getelementptr %struct.doublecomplex, ptr %37, i64 %571
  br i1 %min.iters.check1411, label %scalar.ph1410.preheader, label %vector.memcheck1397

vector.memcheck1397:                              ; preds = %.lr.ph801.us
  %573 = shl nsw i64 %572, 3
  %scevgep1398 = getelementptr i8, ptr %23, i64 %573
  %574 = add nsw i64 %wide.trip.count1023, %572
  %575 = shl nsw i64 %574, 3
  %scevgep1400 = getelementptr i8, ptr %scevgep1399, i64 %575
  %bound01405 = icmp ult ptr %scevgep1398, %scevgep1404
  %bound11406 = icmp ult ptr %scevgep1402, %scevgep1400
  %found.conflict1407 = and i1 %bound01405, %bound11406
  %576 = or i1 %found.conflict1407, %stride.check1408
  br i1 %576, label %scalar.ph1410.preheader, label %vector.ph1412

vector.ph1412:                                    ; preds = %vector.memcheck1397
  %ind.end1417 = add nsw i64 %n.vec1414, %572
  %invariant.gep1489 = getelementptr i8, ptr %invariant.gep1146, i64 16
  %invariant.gep1491 = getelementptr i8, ptr %invariant.gep1146, i64 32
  %invariant.gep1493 = getelementptr i8, ptr %invariant.gep1146, i64 48
  %invariant.gep1495 = getelementptr double, ptr %23, i64 %572
  br label %vector.body1419

vector.body1419:                                  ; preds = %vector.body1419, %vector.ph1412
  %index1420 = phi i64 [ 0, %vector.ph1412 ], [ %index.next1423, %vector.body1419 ]
  %offset.idx1421 = add i64 %index1420, %561
  %577 = getelementptr %struct.doublecomplex, ptr %invariant.gep1146, i64 %offset.idx1421
  %gep1490 = getelementptr %struct.doublecomplex, ptr %invariant.gep1489, i64 %offset.idx1421
  %gep1492 = getelementptr %struct.doublecomplex, ptr %invariant.gep1491, i64 %offset.idx1421
  %gep1494 = getelementptr %struct.doublecomplex, ptr %invariant.gep1493, i64 %offset.idx1421
  %578 = load double, ptr %577, align 8, !tbaa !9, !alias.scope !61
  %579 = load double, ptr %gep1490, align 8, !tbaa !9, !alias.scope !61
  %580 = insertelement <2 x double> poison, double %578, i64 0
  %581 = insertelement <2 x double> %580, double %579, i64 1
  %582 = load double, ptr %gep1492, align 8, !tbaa !9, !alias.scope !61
  %583 = load double, ptr %gep1494, align 8, !tbaa !9, !alias.scope !61
  %584 = insertelement <2 x double> poison, double %582, i64 0
  %585 = insertelement <2 x double> %584, double %583, i64 1
  %gep1496 = getelementptr double, ptr %invariant.gep1495, i64 %index1420
  %586 = getelementptr i8, ptr %gep1496, i64 16
  store <2 x double> %581, ptr %gep1496, align 8, !tbaa !15, !alias.scope !64, !noalias !61
  store <2 x double> %585, ptr %586, align 8, !tbaa !15, !alias.scope !64, !noalias !61
  %index.next1423 = add nuw i64 %index1420, 4
  %587 = icmp eq i64 %index.next1423, %n.vec1414
  br i1 %587, label %middle.block1409, label %vector.body1419, !llvm.loop !66

middle.block1409:                                 ; preds = %vector.body1419
  br i1 %cmp.n1424, label %._crit_edge802.us, label %scalar.ph1410.preheader

scalar.ph1410.preheader:                          ; preds = %middle.block1409, %vector.memcheck1397, %.lr.ph801.us
  %indvars.iv1018.ph = phi i64 [ %561, %vector.memcheck1397 ], [ %561, %.lr.ph801.us ], [ %ind.end1415, %middle.block1409 ]
  %indvars.iv1016.ph = phi i64 [ %572, %vector.memcheck1397 ], [ %572, %.lr.ph801.us ], [ %ind.end1417, %middle.block1409 ]
  %588 = sub nsw i64 %wide.trip.count1023, %indvars.iv1018.ph
  %xtraiter1438 = and i64 %588, 3
  %lcmp.mod1439.not = icmp eq i64 %xtraiter1438, 0
  br i1 %lcmp.mod1439.not, label %scalar.ph1410.prol.loopexit, label %scalar.ph1410.prol

scalar.ph1410.prol:                               ; preds = %scalar.ph1410.preheader, %scalar.ph1410.prol
  %indvars.iv1018.prol = phi i64 [ %indvars.iv.next1019.prol, %scalar.ph1410.prol ], [ %indvars.iv1018.ph, %scalar.ph1410.preheader ]
  %indvars.iv1016.prol = phi i64 [ %indvars.iv.next1017.prol, %scalar.ph1410.prol ], [ %indvars.iv1016.ph, %scalar.ph1410.preheader ]
  %prol.iter1440 = phi i64 [ %prol.iter1440.next, %scalar.ph1410.prol ], [ 0, %scalar.ph1410.preheader ]
  %indvars.iv.next1017.prol = add nsw i64 %indvars.iv1016.prol, 1
  %gep1147.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1146, i64 %indvars.iv1018.prol
  %589 = load double, ptr %gep1147.prol, align 8, !tbaa !9
  %590 = getelementptr double, ptr %23, i64 %indvars.iv1016.prol
  store double %589, ptr %590, align 8, !tbaa !15
  %indvars.iv.next1019.prol = add nsw i64 %indvars.iv1018.prol, 1
  %prol.iter1440.next = add i64 %prol.iter1440, 1
  %prol.iter1440.cmp.not = icmp eq i64 %prol.iter1440.next, %xtraiter1438
  br i1 %prol.iter1440.cmp.not, label %scalar.ph1410.prol.loopexit, label %scalar.ph1410.prol, !llvm.loop !67

scalar.ph1410.prol.loopexit:                      ; preds = %scalar.ph1410.prol, %scalar.ph1410.preheader
  %indvars.iv.next1017.lcssa1425.unr = phi i64 [ poison, %scalar.ph1410.preheader ], [ %indvars.iv.next1017.prol, %scalar.ph1410.prol ]
  %indvars.iv1018.unr = phi i64 [ %indvars.iv1018.ph, %scalar.ph1410.preheader ], [ %indvars.iv.next1019.prol, %scalar.ph1410.prol ]
  %indvars.iv1016.unr = phi i64 [ %indvars.iv1016.ph, %scalar.ph1410.preheader ], [ %indvars.iv.next1017.prol, %scalar.ph1410.prol ]
  %591 = sub nsw i64 %indvars.iv1018.ph, %wide.trip.count1023
  %592 = icmp ugt i64 %591, -4
  br i1 %592, label %._crit_edge802.us, label %scalar.ph1410.preheader.new

scalar.ph1410.preheader.new:                      ; preds = %scalar.ph1410.prol.loopexit
  %invariant.gep1497 = getelementptr i8, ptr %invariant.gep1146, i64 16
  %invariant.gep1501 = getelementptr i8, ptr %invariant.gep1146, i64 32
  %invariant.gep1505 = getelementptr i8, ptr %invariant.gep1146, i64 48
  br label %scalar.ph1410

scalar.ph1410:                                    ; preds = %scalar.ph1410, %scalar.ph1410.preheader.new
  %indvars.iv1018 = phi i64 [ %indvars.iv1018.unr, %scalar.ph1410.preheader.new ], [ %indvars.iv.next1019.3, %scalar.ph1410 ]
  %indvars.iv1016 = phi i64 [ %indvars.iv1016.unr, %scalar.ph1410.preheader.new ], [ %indvars.iv.next1017.3, %scalar.ph1410 ]
  %gep1147 = getelementptr %struct.doublecomplex, ptr %invariant.gep1146, i64 %indvars.iv1018
  %593 = load double, ptr %gep1147, align 8, !tbaa !9
  %594 = getelementptr double, ptr %23, i64 %indvars.iv1016
  store double %593, ptr %594, align 8, !tbaa !15
  %gep1498 = getelementptr %struct.doublecomplex, ptr %invariant.gep1497, i64 %indvars.iv1018
  %595 = load double, ptr %gep1498, align 8, !tbaa !9
  %gep1500 = getelementptr double, ptr %invariant.gep1499, i64 %indvars.iv1016
  store double %595, ptr %gep1500, align 8, !tbaa !15
  %gep1502 = getelementptr %struct.doublecomplex, ptr %invariant.gep1501, i64 %indvars.iv1018
  %596 = load double, ptr %gep1502, align 8, !tbaa !9
  %gep1504 = getelementptr double, ptr %invariant.gep1503, i64 %indvars.iv1016
  store double %596, ptr %gep1504, align 8, !tbaa !15
  %indvars.iv.next1017.3 = add nsw i64 %indvars.iv1016, 4
  %gep1506 = getelementptr %struct.doublecomplex, ptr %invariant.gep1505, i64 %indvars.iv1018
  %597 = load double, ptr %gep1506, align 8, !tbaa !9
  %gep1508 = getelementptr double, ptr %invariant.gep1507, i64 %indvars.iv1016
  store double %597, ptr %gep1508, align 8, !tbaa !15
  %indvars.iv.next1019.3 = add nsw i64 %indvars.iv1018, 4
  %exitcond1024.not.3 = icmp eq i64 %indvars.iv.next1019.3, %wide.trip.count1023
  br i1 %exitcond1024.not.3, label %._crit_edge802.us, label %scalar.ph1410, !llvm.loop !68

._crit_edge802.us:                                ; preds = %scalar.ph1410.prol.loopexit, %scalar.ph1410, %middle.block1409
  %indvars.iv.next1017.lcssa = phi i64 [ %ind.end1417, %middle.block1409 ], [ %indvars.iv.next1017.lcssa1425.unr, %scalar.ph1410.prol.loopexit ], [ %indvars.iv.next1017.3, %scalar.ph1410 ]
  %598 = trunc nsw i64 %indvars.iv.next1017.lcssa to i32
  %indvars.iv.next1026 = add nuw nsw i64 %indvars.iv1025, 1
  %exitcond1029.not = icmp eq i64 %indvars.iv.next1026, %wide.trip.count1028
  br i1 %exitcond1029.not, label %._crit_edge809, label %.lr.ph801.us, !llvm.loop !69

._crit_edge809:                                   ; preds = %._crit_edge802.us, %540
  %599 = add nsw i32 %557, %41
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %48, i64 %600
  %602 = or disjoint i32 %560, 1
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %58, i64 %603
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b9, ptr noundef %601, ptr noundef nonnull %9, ptr noundef nonnull %604, ptr noundef nonnull %33, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %33) #5
  %605 = load i32, ptr %33, align 4, !tbaa !5
  %606 = load i32, ptr %3, align 4, !tbaa !5
  %.not672817 = icmp slt i32 %606, 1
  br i1 %.not672817, label %._crit_edge822, label %.lr.ph821.preheader

.lr.ph821.preheader:                              ; preds = %._crit_edge809
  %607 = shl i32 %605, 1
  %608 = mul i32 %607, %606
  %609 = sext i32 %557 to i64
  %610 = add nuw i32 %606, 1
  %wide.trip.count1040 = zext i32 %610 to i64
  br label %.lr.ph821

.lr.ph821:                                        ; preds = %.lr.ph821.preheader, %._crit_edge815
  %indvars.iv1037 = phi i64 [ 1, %.lr.ph821.preheader ], [ %indvars.iv.next1038, %._crit_edge815 ]
  %.14819 = phi i32 [ %608, %.lr.ph821.preheader ], [ %.15.lcssa, %._crit_edge815 ]
  %611 = load i32, ptr %33, align 4, !tbaa !5
  %.not681.not810 = icmp sgt i32 %611, 0
  br i1 %.not681.not810, label %.lr.ph814, label %._crit_edge815

.lr.ph814:                                        ; preds = %.lr.ph821
  %612 = add nsw i32 %611, %557
  %613 = mul nsw i64 %indvars.iv1037, %518
  %614 = sext i32 %.14819 to i64
  %615 = sext i32 %612 to i64
  %invariant.gep1148 = getelementptr %struct.doublecomplex, ptr %37, i64 %613
  br label %616

616:                                              ; preds = %.lr.ph814, %616
  %indvars.iv1032 = phi i64 [ %609, %.lr.ph814 ], [ %indvars.iv.next1033, %616 ]
  %indvars.iv1030 = phi i64 [ %614, %.lr.ph814 ], [ %indvars.iv.next1031, %616 ]
  %indvars.iv.next1031 = add nsw i64 %indvars.iv1030, 1
  %gep1149 = getelementptr %struct.doublecomplex, ptr %invariant.gep1148, i64 %indvars.iv1032
  %617 = call { double, double } @Cd(ptr noundef %gep1149)
  %618 = extractvalue { double, double } %617, 1
  %619 = getelementptr double, ptr %23, i64 %indvars.iv1030
  store double %618, ptr %619, align 8, !tbaa !15
  %indvars.iv.next1033 = add nsw i64 %indvars.iv1032, 1
  %.not681.not = icmp slt i64 %indvars.iv.next1033, %615
  br i1 %.not681.not, label %616, label %._crit_edge815.loopexit, !llvm.loop !70

._crit_edge815.loopexit:                          ; preds = %616
  %620 = trunc nsw i64 %indvars.iv.next1031 to i32
  br label %._crit_edge815

._crit_edge815:                                   ; preds = %._crit_edge815.loopexit, %.lr.ph821
  %.15.lcssa = phi i32 [ %.14819, %.lr.ph821 ], [ %620, %._crit_edge815.loopexit ]
  %indvars.iv.next1038 = add nuw nsw i64 %indvars.iv1037, 1
  %exitcond1041.not = icmp eq i64 %indvars.iv.next1038, %wide.trip.count1040
  br i1 %exitcond1041.not, label %._crit_edge822.loopexit, label %.lr.ph821, !llvm.loop !71

._crit_edge822.loopexit:                          ; preds = %._crit_edge815
  %.pre1113 = load i32, ptr %33, align 4, !tbaa !5
  %.pre1114 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge822

._crit_edge822:                                   ; preds = %._crit_edge822.loopexit, %._crit_edge809
  %621 = phi i32 [ %.pre1114, %._crit_edge822.loopexit ], [ %606, %._crit_edge809 ]
  %622 = phi i32 [ %.pre1113, %._crit_edge822.loopexit ], [ %605, %._crit_edge809 ]
  %623 = mul nsw i32 %621, %622
  %624 = shl i32 %623, 1
  %625 = or disjoint i32 %624, 1
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %58, i64 %626
  %628 = sext i32 %623 to i64
  %gep882 = getelementptr double, ptr %23, i64 %628
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b9, ptr noundef %601, ptr noundef nonnull %9, ptr noundef nonnull %627, ptr noundef nonnull %33, ptr noundef nonnull @c_b10, ptr noundef %gep882, ptr noundef nonnull %33) #5
  %629 = load i32, ptr %3, align 4, !tbaa !5
  %.not673832 = icmp slt i32 %629, 1
  br i1 %.not673832, label %._crit_edge838.thread, label %.lr.ph837

._crit_edge838.thread:                            ; preds = %._crit_edge822
  %630 = load i32, ptr %34, align 4, !tbaa !5
  %631 = shl i32 %629, 1
  %632 = mul i32 %631, %630
  br label %._crit_edge851

.lr.ph837:                                        ; preds = %._crit_edge822
  %633 = load i32, ptr %33, align 4, !tbaa !5
  %.not680.not823 = icmp sgt i32 %633, 0
  br i1 %.not680.not823, label %.lr.ph828.us.preheader, label %._crit_edge838.thread1131

._crit_edge838.thread1131:                        ; preds = %.lr.ph837
  %634 = load i32, ptr %34, align 4, !tbaa !5
  %635 = shl nuw i32 %629, 1
  %636 = mul i32 %635, %634
  br label %.lr.ph850

.lr.ph828.us.preheader:                           ; preds = %.lr.ph837
  %637 = add i32 %633, %557
  %638 = mul nuw nsw i32 %629, %633
  %639 = sext i32 %557 to i64
  %640 = sext i32 %637 to i64
  %641 = add nuw i32 %629, 1
  %wide.trip.count1056 = zext i32 %641 to i64
  %642 = shl nsw i64 %639, 4
  %scevgep1356 = getelementptr i8, ptr %scevgep1355, i64 %642
  %643 = add nsw i64 %wide.trip.count1056, -2
  %644 = mul i64 %534, %643
  %645 = add nsw i64 %639, 1
  %smax1357 = call i64 @llvm.smax.i64(i64 %645, i64 %640)
  %646 = add i64 %535, %smax1357
  %647 = shl nsw i64 %646, 4
  %648 = getelementptr i8, ptr %6, i64 %644
  %scevgep1358 = getelementptr i8, ptr %648, i64 %647
  %649 = mul nsw i64 %639, -8
  %scevgep1360 = getelementptr i8, ptr %23, i64 %649
  %scevgep1363 = getelementptr i8, ptr %23, i64 %649
  %650 = add nsw i64 %639, 1
  %smax1374 = call i64 @llvm.smax.i64(i64 %650, i64 %640)
  %651 = sub i64 %smax1374, %639
  %min.iters.check1377 = icmp ult i64 %651, 10
  %n.vec1380 = and i64 %651, -2
  %ind.end1381 = add i64 %n.vec1380, %639
  %cmp.n1396 = icmp eq i64 %651, %n.vec1380
  br label %.lr.ph828.us

.lr.ph828.us:                                     ; preds = %.lr.ph828.us.preheader, %._crit_edge829.us
  %indvars.iv1053 = phi i64 [ 1, %.lr.ph828.us.preheader ], [ %indvars.iv.next1054, %._crit_edge829.us ]
  %.4835.us = phi i64 [ 0, %.lr.ph828.us.preheader ], [ %indvars.iv.next1043.lcssa, %._crit_edge829.us ]
  %.4606834.us = phi i32 [ %638, %.lr.ph828.us.preheader ], [ %670, %._crit_edge829.us ]
  %652 = mul nsw i64 %indvars.iv1053, %519
  %sext1118 = shl i64 %.4835.us, 32
  %653 = ashr exact i64 %sext1118, 32
  %654 = sext i32 %.4606834.us to i64
  %invariant.gep1150 = getelementptr %struct.doublecomplex, ptr %40, i64 %652
  br i1 %min.iters.check1377, label %scalar.ph1376.preheader, label %vector.memcheck1354

vector.memcheck1354:                              ; preds = %.lr.ph828.us
  %655 = shl nsw i64 %654, 3
  %scevgep1359 = getelementptr i8, ptr %23, i64 %655
  %656 = add i64 %smax1357, %654
  %657 = shl nsw i64 %656, 3
  %scevgep1361 = getelementptr i8, ptr %scevgep1360, i64 %657
  %658 = ashr exact i64 %sext1118, 29
  %scevgep1362 = getelementptr i8, ptr %23, i64 %658
  %659 = add i64 %smax1357, %653
  %660 = shl nsw i64 %659, 3
  %scevgep1364 = getelementptr i8, ptr %scevgep1363, i64 %660
  %bound01365 = icmp ult ptr %scevgep1356, %scevgep1361
  %bound11366 = icmp ult ptr %scevgep1359, %scevgep1358
  %found.conflict1367 = and i1 %bound01365, %bound11366
  %bound01369 = icmp ult ptr %scevgep1356, %scevgep1364
  %bound11370 = icmp ult ptr %scevgep1362, %scevgep1358
  %found.conflict1371 = and i1 %bound01369, %bound11370
  %661 = or i1 %found.conflict1371, %stride.check1372
  %conflict.rdx1373 = or i1 %found.conflict1367, %661
  br i1 %conflict.rdx1373, label %scalar.ph1376.preheader, label %vector.ph1378

vector.ph1378:                                    ; preds = %vector.memcheck1354
  %ind.end1383 = add i64 %n.vec1380, %654
  %ind.end1385 = add i64 %653, %n.vec1380
  %662 = getelementptr double, ptr %23, i64 %653
  %invariant.gep1509 = getelementptr double, ptr %23, i64 %654
  %invariant.gep1511 = getelementptr %struct.doublecomplex, ptr %invariant.gep1150, i64 %639
  br label %vector.body1387

vector.body1387:                                  ; preds = %vector.body1387, %vector.ph1378
  %index1388 = phi i64 [ 0, %vector.ph1378 ], [ %index.next1395, %vector.body1387 ]
  %663 = getelementptr double, ptr %662, i64 %index1388
  %wide.load1392 = load <2 x double>, ptr %663, align 8, !tbaa !15, !alias.scope !72
  %gep1510 = getelementptr double, ptr %invariant.gep1509, i64 %index1388
  %wide.load1393 = load <2 x double>, ptr %gep1510, align 8, !tbaa !15, !alias.scope !75
  %gep1512 = getelementptr %struct.doublecomplex, ptr %invariant.gep1511, i64 %index1388
  %interleaved.vec1394 = shufflevector <2 x double> %wide.load1392, <2 x double> %wide.load1393, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1394, ptr %gep1512, align 8, !tbaa !15
  %index.next1395 = add nuw i64 %index1388, 2
  %664 = icmp eq i64 %index.next1395, %n.vec1380
  br i1 %664, label %middle.block1375, label %vector.body1387, !llvm.loop !77

middle.block1375:                                 ; preds = %vector.body1387
  br i1 %cmp.n1396, label %._crit_edge829.us, label %scalar.ph1376.preheader

scalar.ph1376.preheader:                          ; preds = %middle.block1375, %vector.memcheck1354, %.lr.ph828.us
  %indvars.iv1046.ph = phi i64 [ %639, %vector.memcheck1354 ], [ %639, %.lr.ph828.us ], [ %ind.end1381, %middle.block1375 ]
  %indvars.iv1044.ph = phi i64 [ %654, %vector.memcheck1354 ], [ %654, %.lr.ph828.us ], [ %ind.end1383, %middle.block1375 ]
  %indvars.iv1042.ph = phi i64 [ %653, %vector.memcheck1354 ], [ %653, %.lr.ph828.us ], [ %ind.end1385, %middle.block1375 ]
  br label %scalar.ph1376

scalar.ph1376:                                    ; preds = %scalar.ph1376.preheader, %scalar.ph1376
  %indvars.iv1046 = phi i64 [ %indvars.iv.next1047, %scalar.ph1376 ], [ %indvars.iv1046.ph, %scalar.ph1376.preheader ]
  %indvars.iv1044 = phi i64 [ %indvars.iv.next1045, %scalar.ph1376 ], [ %indvars.iv1044.ph, %scalar.ph1376.preheader ]
  %indvars.iv1042 = phi i64 [ %indvars.iv.next1043, %scalar.ph1376 ], [ %indvars.iv1042.ph, %scalar.ph1376.preheader ]
  %indvars.iv.next1043 = add nsw i64 %indvars.iv1042, 1
  %indvars.iv.next1045 = add nsw i64 %indvars.iv1044, 1
  %665 = getelementptr double, ptr %23, i64 %indvars.iv1042
  %666 = load double, ptr %665, align 8, !tbaa !15
  %667 = getelementptr double, ptr %23, i64 %indvars.iv1044
  %668 = load double, ptr %667, align 8, !tbaa !15
  %gep1151 = getelementptr %struct.doublecomplex, ptr %invariant.gep1150, i64 %indvars.iv1046
  store double %666, ptr %gep1151, align 8, !tbaa !9
  %669 = getelementptr inbounds i8, ptr %gep1151, i64 8
  store double %668, ptr %669, align 8, !tbaa !32
  %indvars.iv.next1047 = add nsw i64 %indvars.iv1046, 1
  %.not680.not.us = icmp slt i64 %indvars.iv.next1047, %640
  br i1 %.not680.not.us, label %scalar.ph1376, label %._crit_edge829.us, !llvm.loop !78

._crit_edge829.us:                                ; preds = %scalar.ph1376, %middle.block1375
  %indvars.iv.next1043.lcssa = phi i64 [ %ind.end1385, %middle.block1375 ], [ %indvars.iv.next1043, %scalar.ph1376 ]
  %indvars.iv.next1045.lcssa = phi i64 [ %ind.end1383, %middle.block1375 ], [ %indvars.iv.next1045, %scalar.ph1376 ]
  %670 = trunc nsw i64 %indvars.iv.next1045.lcssa to i32
  %indvars.iv.next1054 = add nuw nsw i64 %indvars.iv1053, 1
  %exitcond1057.not = icmp eq i64 %indvars.iv.next1054, %wide.trip.count1056
  br i1 %exitcond1057.not, label %._crit_edge838, label %.lr.ph828.us, !llvm.loop !79

._crit_edge838:                                   ; preds = %._crit_edge829.us
  %671 = load i32, ptr %34, align 4, !tbaa !5
  %672 = shl nuw i32 %629, 1
  %673 = mul i32 %672, %671
  br i1 %.not673832, label %._crit_edge851, label %.lr.ph850

.lr.ph850:                                        ; preds = %._crit_edge838.thread1131, %._crit_edge838
  %674 = phi i32 [ %636, %._crit_edge838.thread1131 ], [ %673, %._crit_edge838 ]
  %675 = phi i32 [ %634, %._crit_edge838.thread1131 ], [ %671, %._crit_edge838 ]
  %676 = add i32 %675, %543
  %.not679839.not = icmp slt i32 %543, %676
  br i1 %.not679839.not, label %.lr.ph843.preheader, label %._crit_edge851

.lr.ph843.preheader:                              ; preds = %.lr.ph850
  %677 = sext i32 %543 to i64
  %678 = add nsw i64 %677, 1
  %679 = add i32 %558, %675
  %680 = add nuw i32 %629, 1
  %wide.trip.count1070 = zext i32 %680 to i64
  %681 = add i32 %675, -1
  %682 = zext i32 %681 to i64
  %683 = shl nuw nsw i64 %682, 3
  %scevgep1329 = getelementptr i8, ptr %scevgep1328, i64 %683
  %684 = shl nsw i64 %677, 4
  %scevgep1332 = getelementptr i8, ptr %scevgep1331, i64 %684
  %685 = shl nuw nsw i64 %wide.trip.count1070, 4
  %686 = add nsw i64 %685, -16
  %687 = mul i64 %686, %518
  %688 = shl nuw nsw i64 %682, 4
  %689 = getelementptr i8, ptr %scevgep1333, i64 %687
  %690 = getelementptr i8, ptr %689, i64 %684
  %scevgep1334 = getelementptr i8, ptr %690, i64 %688
  %691 = add i32 %675, -1
  %692 = zext i32 %691 to i64
  %693 = add nuw nsw i64 %692, 1
  %694 = add i32 %675, 1
  %695 = add i32 %694, %543
  %696 = add i32 %675, %543
  %min.iters.check1341 = icmp ult i32 %691, 6
  %n.mod.vf1343 = and i64 %693, 3
  %697 = icmp eq i64 %n.mod.vf1343, 0
  %698 = select i1 %697, i64 4, i64 %n.mod.vf1343
  %n.vec1344 = sub nsw i64 %693, %698
  %ind.end1345 = add nsw i64 %678, %n.vec1344
  br label %.lr.ph843

.lr.ph843:                                        ; preds = %.lr.ph843.preheader, %._crit_edge844
  %indvars.iv1067 = phi i64 [ 1, %.lr.ph843.preheader ], [ %indvars.iv.next1068, %._crit_edge844 ]
  %.16848 = phi i32 [ %674, %.lr.ph843.preheader ], [ %725, %._crit_edge844 ]
  %699 = mul nsw i64 %indvars.iv1067, %518
  %700 = sext i32 %.16848 to i64
  %invariant.gep1152 = getelementptr %struct.doublecomplex, ptr %37, i64 %699
  br i1 %min.iters.check1341, label %scalar.ph1340.preheader, label %vector.memcheck1326

vector.memcheck1326:                              ; preds = %.lr.ph843
  %701 = shl nsw i64 %700, 3
  %scevgep1327 = getelementptr i8, ptr %23, i64 %701
  %scevgep1330 = getelementptr i8, ptr %scevgep1329, i64 %701
  %bound01335 = icmp ult ptr %scevgep1327, %scevgep1334
  %bound11336 = icmp ult ptr %scevgep1332, %scevgep1330
  %found.conflict1337 = and i1 %bound01335, %bound11336
  %702 = or i1 %found.conflict1337, %stride.check1338
  br i1 %702, label %scalar.ph1340.preheader, label %vector.ph1342

vector.ph1342:                                    ; preds = %vector.memcheck1326
  %ind.end1347 = add nsw i64 %n.vec1344, %700
  %invariant.gep1513 = getelementptr i8, ptr %invariant.gep1152, i64 16
  %invariant.gep1515 = getelementptr i8, ptr %invariant.gep1152, i64 32
  %invariant.gep1517 = getelementptr i8, ptr %invariant.gep1152, i64 48
  %invariant.gep1519 = getelementptr double, ptr %23, i64 %700
  br label %vector.body1349

vector.body1349:                                  ; preds = %vector.body1349, %vector.ph1342
  %index1350 = phi i64 [ 0, %vector.ph1342 ], [ %index.next1353, %vector.body1349 ]
  %offset.idx1351 = add i64 %678, %index1350
  %703 = getelementptr %struct.doublecomplex, ptr %invariant.gep1152, i64 %offset.idx1351
  %gep1514 = getelementptr %struct.doublecomplex, ptr %invariant.gep1513, i64 %offset.idx1351
  %gep1516 = getelementptr %struct.doublecomplex, ptr %invariant.gep1515, i64 %offset.idx1351
  %gep1518 = getelementptr %struct.doublecomplex, ptr %invariant.gep1517, i64 %offset.idx1351
  %704 = load double, ptr %703, align 8, !tbaa !9, !alias.scope !80
  %705 = load double, ptr %gep1514, align 8, !tbaa !9, !alias.scope !80
  %706 = insertelement <2 x double> poison, double %704, i64 0
  %707 = insertelement <2 x double> %706, double %705, i64 1
  %708 = load double, ptr %gep1516, align 8, !tbaa !9, !alias.scope !80
  %709 = load double, ptr %gep1518, align 8, !tbaa !9, !alias.scope !80
  %710 = insertelement <2 x double> poison, double %708, i64 0
  %711 = insertelement <2 x double> %710, double %709, i64 1
  %gep1520 = getelementptr double, ptr %invariant.gep1519, i64 %index1350
  %712 = getelementptr i8, ptr %gep1520, i64 16
  store <2 x double> %707, ptr %gep1520, align 8, !tbaa !15, !alias.scope !83, !noalias !80
  store <2 x double> %711, ptr %712, align 8, !tbaa !15, !alias.scope !83, !noalias !80
  %index.next1353 = add nuw i64 %index1350, 4
  %713 = icmp eq i64 %index.next1353, %n.vec1344
  br i1 %713, label %scalar.ph1340.preheader, label %vector.body1349, !llvm.loop !85

scalar.ph1340.preheader:                          ; preds = %vector.body1349, %vector.memcheck1326, %.lr.ph843
  %indvars.iv1060.ph = phi i64 [ %678, %vector.memcheck1326 ], [ %678, %.lr.ph843 ], [ %ind.end1345, %vector.body1349 ]
  %indvars.iv1058.ph = phi i64 [ %700, %vector.memcheck1326 ], [ %700, %.lr.ph843 ], [ %ind.end1347, %vector.body1349 ]
  %714 = trunc i64 %indvars.iv1060.ph to i32
  %715 = sub i32 %695, %714
  %716 = sub i32 %696, %714
  %xtraiter1441 = and i32 %715, 3
  %lcmp.mod1442.not = icmp eq i32 %xtraiter1441, 0
  br i1 %lcmp.mod1442.not, label %scalar.ph1340.prol.loopexit, label %scalar.ph1340.prol

scalar.ph1340.prol:                               ; preds = %scalar.ph1340.preheader, %scalar.ph1340.prol
  %indvars.iv1060.prol = phi i64 [ %indvars.iv.next1061.prol, %scalar.ph1340.prol ], [ %indvars.iv1060.ph, %scalar.ph1340.preheader ]
  %indvars.iv1058.prol = phi i64 [ %indvars.iv.next1059.prol, %scalar.ph1340.prol ], [ %indvars.iv1058.ph, %scalar.ph1340.preheader ]
  %prol.iter1443 = phi i32 [ %prol.iter1443.next, %scalar.ph1340.prol ], [ 0, %scalar.ph1340.preheader ]
  %indvars.iv.next1059.prol = add nsw i64 %indvars.iv1058.prol, 1
  %gep1153.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1152, i64 %indvars.iv1060.prol
  %717 = load double, ptr %gep1153.prol, align 8, !tbaa !9
  %718 = getelementptr double, ptr %23, i64 %indvars.iv1058.prol
  store double %717, ptr %718, align 8, !tbaa !15
  %indvars.iv.next1061.prol = add nsw i64 %indvars.iv1060.prol, 1
  %prol.iter1443.next = add i32 %prol.iter1443, 1
  %prol.iter1443.cmp.not = icmp eq i32 %prol.iter1443.next, %xtraiter1441
  br i1 %prol.iter1443.cmp.not, label %scalar.ph1340.prol.loopexit, label %scalar.ph1340.prol, !llvm.loop !86

scalar.ph1340.prol.loopexit:                      ; preds = %scalar.ph1340.prol, %scalar.ph1340.preheader
  %indvars.iv.next1059.lcssa.unr = phi i64 [ poison, %scalar.ph1340.preheader ], [ %indvars.iv.next1059.prol, %scalar.ph1340.prol ]
  %indvars.iv1060.unr = phi i64 [ %indvars.iv1060.ph, %scalar.ph1340.preheader ], [ %indvars.iv.next1061.prol, %scalar.ph1340.prol ]
  %indvars.iv1058.unr = phi i64 [ %indvars.iv1058.ph, %scalar.ph1340.preheader ], [ %indvars.iv.next1059.prol, %scalar.ph1340.prol ]
  %719 = icmp ult i32 %716, 3
  br i1 %719, label %._crit_edge844, label %scalar.ph1340.preheader.new

scalar.ph1340.preheader.new:                      ; preds = %scalar.ph1340.prol.loopexit
  %invariant.gep1521 = getelementptr i8, ptr %invariant.gep1152, i64 16
  %invariant.gep1525 = getelementptr i8, ptr %invariant.gep1152, i64 32
  %invariant.gep1529 = getelementptr i8, ptr %invariant.gep1152, i64 48
  br label %scalar.ph1340

scalar.ph1340:                                    ; preds = %scalar.ph1340, %scalar.ph1340.preheader.new
  %indvars.iv1060 = phi i64 [ %indvars.iv1060.unr, %scalar.ph1340.preheader.new ], [ %indvars.iv.next1061.3, %scalar.ph1340 ]
  %indvars.iv1058 = phi i64 [ %indvars.iv1058.unr, %scalar.ph1340.preheader.new ], [ %indvars.iv.next1059.3, %scalar.ph1340 ]
  %gep1153 = getelementptr %struct.doublecomplex, ptr %invariant.gep1152, i64 %indvars.iv1060
  %720 = load double, ptr %gep1153, align 8, !tbaa !9
  %721 = getelementptr double, ptr %23, i64 %indvars.iv1058
  store double %720, ptr %721, align 8, !tbaa !15
  %gep1522 = getelementptr %struct.doublecomplex, ptr %invariant.gep1521, i64 %indvars.iv1060
  %722 = load double, ptr %gep1522, align 8, !tbaa !9
  %gep1524 = getelementptr double, ptr %invariant.gep1523, i64 %indvars.iv1058
  store double %722, ptr %gep1524, align 8, !tbaa !15
  %gep1526 = getelementptr %struct.doublecomplex, ptr %invariant.gep1525, i64 %indvars.iv1060
  %723 = load double, ptr %gep1526, align 8, !tbaa !9
  %gep1528 = getelementptr double, ptr %invariant.gep1527, i64 %indvars.iv1058
  store double %723, ptr %gep1528, align 8, !tbaa !15
  %indvars.iv.next1059.3 = add nsw i64 %indvars.iv1058, 4
  %gep1530 = getelementptr %struct.doublecomplex, ptr %invariant.gep1529, i64 %indvars.iv1060
  %724 = load double, ptr %gep1530, align 8, !tbaa !9
  %gep1532 = getelementptr double, ptr %invariant.gep1531, i64 %indvars.iv1058
  store double %724, ptr %gep1532, align 8, !tbaa !15
  %indvars.iv.next1061.3 = add nsw i64 %indvars.iv1060, 4
  %lftr.wideiv1065.3 = trunc i64 %indvars.iv.next1061.3 to i32
  %exitcond1066.not.3 = icmp eq i32 %679, %lftr.wideiv1065.3
  br i1 %exitcond1066.not.3, label %._crit_edge844, label %scalar.ph1340, !llvm.loop !87

._crit_edge844:                                   ; preds = %scalar.ph1340, %scalar.ph1340.prol.loopexit
  %indvars.iv.next1059.lcssa = phi i64 [ %indvars.iv.next1059.lcssa.unr, %scalar.ph1340.prol.loopexit ], [ %indvars.iv.next1059.3, %scalar.ph1340 ]
  %725 = trunc nsw i64 %indvars.iv.next1059.lcssa to i32
  %indvars.iv.next1068 = add nuw nsw i64 %indvars.iv1067, 1
  %exitcond1071.not = icmp eq i64 %indvars.iv.next1068, %wide.trip.count1070
  br i1 %exitcond1071.not, label %._crit_edge851, label %.lr.ph843, !llvm.loop !88

._crit_edge851:                                   ; preds = %._crit_edge844, %.lr.ph850, %._crit_edge838.thread, %._crit_edge838
  %726 = phi i32 [ %632, %._crit_edge838.thread ], [ %673, %._crit_edge838 ], [ %674, %.lr.ph850 ], [ %674, %._crit_edge844 ]
  %727 = add nsw i32 %558, %41
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %48, i64 %728
  %730 = or disjoint i32 %726, 1
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %58, i64 %731
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %34, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull @c_b9, ptr noundef %729, ptr noundef nonnull %9, ptr noundef nonnull %732, ptr noundef nonnull %34, ptr noundef nonnull @c_b10, ptr noundef %23, ptr noundef nonnull %34) #5
  %733 = load i32, ptr %34, align 4, !tbaa !5
  %734 = load i32, ptr %3, align 4, !tbaa !5
  %.not675859 = icmp slt i32 %734, 1
  br i1 %.not675859, label %._crit_edge864, label %.lr.ph863.preheader

.lr.ph863.preheader:                              ; preds = %._crit_edge851
  %735 = shl i32 %733, 1
  %736 = mul i32 %735, %734
  %737 = sext i32 %543 to i64
  %738 = add nsw i64 %737, 1
  %739 = add nuw i32 %734, 1
  %wide.trip.count1084 = zext i32 %739 to i64
  br label %.lr.ph863

.lr.ph863:                                        ; preds = %.lr.ph863.preheader, %._crit_edge857
  %indvars.iv1081 = phi i64 [ 1, %.lr.ph863.preheader ], [ %indvars.iv.next1082, %._crit_edge857 ]
  %.18861 = phi i32 [ %736, %.lr.ph863.preheader ], [ %.19.lcssa, %._crit_edge857 ]
  %740 = load i32, ptr %34, align 4, !tbaa !5
  %741 = add i32 %740, %543
  %.not678852.not = icmp slt i32 %543, %741
  br i1 %.not678852.not, label %.lr.ph856, label %._crit_edge857

.lr.ph856:                                        ; preds = %.lr.ph863
  %742 = mul nsw i64 %indvars.iv1081, %518
  %743 = sext i32 %.18861 to i64
  %744 = add i32 %558, %740
  %invariant.gep1154 = getelementptr %struct.doublecomplex, ptr %37, i64 %742
  br label %745

745:                                              ; preds = %.lr.ph856, %745
  %indvars.iv1074 = phi i64 [ %738, %.lr.ph856 ], [ %indvars.iv.next1075, %745 ]
  %indvars.iv1072 = phi i64 [ %743, %.lr.ph856 ], [ %indvars.iv.next1073, %745 ]
  %indvars.iv.next1073 = add nsw i64 %indvars.iv1072, 1
  %gep1155 = getelementptr %struct.doublecomplex, ptr %invariant.gep1154, i64 %indvars.iv1074
  %746 = call { double, double } @Cd(ptr noundef %gep1155)
  %747 = extractvalue { double, double } %746, 1
  %748 = getelementptr double, ptr %23, i64 %indvars.iv1072
  store double %747, ptr %748, align 8, !tbaa !15
  %indvars.iv.next1075 = add nsw i64 %indvars.iv1074, 1
  %lftr.wideiv1079 = trunc i64 %indvars.iv.next1075 to i32
  %exitcond1080.not = icmp eq i32 %744, %lftr.wideiv1079
  br i1 %exitcond1080.not, label %._crit_edge857.loopexit, label %745, !llvm.loop !89

._crit_edge857.loopexit:                          ; preds = %745
  %749 = trunc nsw i64 %indvars.iv.next1073 to i32
  br label %._crit_edge857

._crit_edge857:                                   ; preds = %._crit_edge857.loopexit, %.lr.ph863
  %.19.lcssa = phi i32 [ %.18861, %.lr.ph863 ], [ %749, %._crit_edge857.loopexit ]
  %indvars.iv.next1082 = add nuw nsw i64 %indvars.iv1081, 1
  %exitcond1085.not = icmp eq i64 %indvars.iv.next1082, %wide.trip.count1084
  br i1 %exitcond1085.not, label %._crit_edge864.loopexit, label %.lr.ph863, !llvm.loop !90

._crit_edge864.loopexit:                          ; preds = %._crit_edge857
  %.pre1115 = load i32, ptr %34, align 4, !tbaa !5
  %.pre1116 = load i32, ptr %3, align 4, !tbaa !5
  br label %._crit_edge864

._crit_edge864:                                   ; preds = %._crit_edge864.loopexit, %._crit_edge851
  %750 = phi i32 [ %.pre1116, %._crit_edge864.loopexit ], [ %734, %._crit_edge851 ]
  %751 = phi i32 [ %.pre1115, %._crit_edge864.loopexit ], [ %733, %._crit_edge851 ]
  %752 = mul nsw i32 %750, %751
  %753 = shl i32 %752, 1
  %754 = or disjoint i32 %753, 1
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %58, i64 %755
  %757 = sext i32 %752 to i64
  %gep884 = getelementptr double, ptr %23, i64 %757
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull %34, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull @c_b9, ptr noundef %729, ptr noundef nonnull %9, ptr noundef nonnull %756, ptr noundef nonnull %34, ptr noundef nonnull @c_b10, ptr noundef %gep884, ptr noundef nonnull %34) #5
  %758 = load i32, ptr %3, align 4, !tbaa !5
  %.not676874 = icmp slt i32 %758, 1
  br i1 %.not676874, label %._crit_edge880, label %.lr.ph879

.lr.ph879:                                        ; preds = %._crit_edge864
  %759 = load i32, ptr %34, align 4, !tbaa !5
  %760 = add i32 %759, %543
  %.not677865.not = icmp slt i32 %543, %760
  br i1 %.not677865.not, label %.lr.ph870.preheader, label %._crit_edge880

.lr.ph870.preheader:                              ; preds = %.lr.ph879
  %761 = mul nsw i32 %758, %759
  %762 = sext i32 %543 to i64
  %763 = add nsw i64 %762, 1
  %764 = add i32 %558, %759
  %765 = add nuw i32 %758, 1
  %wide.trip.count1102 = zext i32 %765 to i64
  %766 = shl nsw i64 %762, 4
  %scevgep1284 = getelementptr i8, ptr %scevgep1283, i64 %766
  %767 = shl nuw nsw i64 %wide.trip.count1102, 4
  %768 = add nsw i64 %767, -16
  %769 = mul i64 %768, %519
  %770 = add i32 %759, -1
  %771 = zext i32 %770 to i64
  %772 = shl nuw nsw i64 %771, 4
  %773 = getelementptr i8, ptr %scevgep1285, i64 %769
  %774 = getelementptr i8, ptr %773, i64 %766
  %scevgep1286 = getelementptr i8, ptr %774, i64 %772
  %775 = shl nuw nsw i64 %771, 3
  %scevgep1289 = getelementptr i8, ptr %scevgep1288, i64 %775
  %scevgep1293 = getelementptr i8, ptr %scevgep1292, i64 %775
  %776 = add i32 %759, -1
  %777 = zext i32 %776 to i64
  %778 = add nuw nsw i64 %777, 1
  %779 = add i32 %543, %759
  %min.iters.check1306 = icmp ult i32 %776, 7
  %n.vec1309 = and i64 %778, 8589934590
  %ind.end1310 = add nsw i64 %763, %n.vec1309
  %cmp.n1325 = icmp eq i64 %778, %n.vec1309
  %780 = sub i32 %543, %759
  br label %.lr.ph870

.lr.ph870:                                        ; preds = %.lr.ph870.preheader, %._crit_edge871
  %indvars.iv1099 = phi i64 [ 1, %.lr.ph870.preheader ], [ %indvars.iv.next1100, %._crit_edge871 ]
  %.6877 = phi i64 [ 0, %.lr.ph870.preheader ], [ %indvars.iv.next1087.lcssa, %._crit_edge871 ]
  %.6608876 = phi i32 [ %761, %.lr.ph870.preheader ], [ %810, %._crit_edge871 ]
  %781 = mul nsw i64 %indvars.iv1099, %519
  %sext1119 = shl i64 %.6877, 32
  %782 = ashr exact i64 %sext1119, 32
  %783 = sext i32 %.6608876 to i64
  %invariant.gep1156 = getelementptr %struct.doublecomplex, ptr %40, i64 %781
  br i1 %min.iters.check1306, label %scalar.ph1305.preheader, label %vector.memcheck1282

vector.memcheck1282:                              ; preds = %.lr.ph870
  %784 = shl nsw i64 %783, 3
  %scevgep1287 = getelementptr i8, ptr %23, i64 %784
  %scevgep1290 = getelementptr i8, ptr %scevgep1289, i64 %784
  %785 = ashr exact i64 %sext1119, 29
  %scevgep1291 = getelementptr i8, ptr %23, i64 %785
  %scevgep1294 = getelementptr i8, ptr %scevgep1293, i64 %785
  %bound01295 = icmp ult ptr %scevgep1284, %scevgep1290
  %bound11296 = icmp ult ptr %scevgep1287, %scevgep1286
  %found.conflict1297 = and i1 %bound01295, %bound11296
  %bound01299 = icmp ult ptr %scevgep1284, %scevgep1294
  %bound11300 = icmp ult ptr %scevgep1291, %scevgep1286
  %found.conflict1301 = and i1 %bound01299, %bound11300
  %786 = or i1 %found.conflict1301, %stride.check1302
  %conflict.rdx1303 = or i1 %found.conflict1297, %786
  br i1 %conflict.rdx1303, label %scalar.ph1305.preheader, label %vector.ph1307

vector.ph1307:                                    ; preds = %vector.memcheck1282
  %ind.end1312 = add nsw i64 %n.vec1309, %783
  %ind.end1314 = add nsw i64 %782, %n.vec1309
  %787 = getelementptr double, ptr %23, i64 %782
  %invariant.gep1533 = getelementptr double, ptr %23, i64 %783
  %788 = getelementptr %struct.doublecomplex, ptr %invariant.gep1156, i64 %763
  br label %vector.body1316

vector.body1316:                                  ; preds = %vector.body1316, %vector.ph1307
  %index1317 = phi i64 [ 0, %vector.ph1307 ], [ %index.next1324, %vector.body1316 ]
  %789 = getelementptr double, ptr %787, i64 %index1317
  %wide.load1321 = load <2 x double>, ptr %789, align 8, !tbaa !15, !alias.scope !91
  %gep1534 = getelementptr double, ptr %invariant.gep1533, i64 %index1317
  %wide.load1322 = load <2 x double>, ptr %gep1534, align 8, !tbaa !15, !alias.scope !94
  %790 = getelementptr %struct.doublecomplex, ptr %788, i64 %index1317
  %interleaved.vec1323 = shufflevector <2 x double> %wide.load1321, <2 x double> %wide.load1322, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1323, ptr %790, align 8, !tbaa !15
  %index.next1324 = add nuw i64 %index1317, 2
  %791 = icmp eq i64 %index.next1324, %n.vec1309
  br i1 %791, label %middle.block1304, label %vector.body1316, !llvm.loop !96

middle.block1304:                                 ; preds = %vector.body1316
  br i1 %cmp.n1325, label %._crit_edge871, label %scalar.ph1305.preheader

scalar.ph1305.preheader:                          ; preds = %middle.block1304, %vector.memcheck1282, %.lr.ph870
  %indvars.iv1090.ph = phi i64 [ %763, %vector.memcheck1282 ], [ %763, %.lr.ph870 ], [ %ind.end1310, %middle.block1304 ]
  %indvars.iv1088.ph = phi i64 [ %783, %vector.memcheck1282 ], [ %783, %.lr.ph870 ], [ %ind.end1312, %middle.block1304 ]
  %indvars.iv1086.ph = phi i64 [ %782, %vector.memcheck1282 ], [ %782, %.lr.ph870 ], [ %ind.end1314, %middle.block1304 ]
  %792 = trunc i64 %indvars.iv1090.ph to i32
  %793 = add i32 %780, %792
  %794 = and i32 %793, 1
  %lcmp.mod1445.not.not = icmp eq i32 %794, 0
  br i1 %lcmp.mod1445.not.not, label %scalar.ph1305.prol, label %scalar.ph1305.prol.loopexit

scalar.ph1305.prol:                               ; preds = %scalar.ph1305.preheader
  %indvars.iv.next1087.prol = add nsw i64 %indvars.iv1086.ph, 1
  %indvars.iv.next1089.prol = add nsw i64 %indvars.iv1088.ph, 1
  %795 = getelementptr double, ptr %23, i64 %indvars.iv1086.ph
  %796 = load double, ptr %795, align 8, !tbaa !15
  %797 = getelementptr double, ptr %23, i64 %indvars.iv1088.ph
  %798 = load double, ptr %797, align 8, !tbaa !15
  %gep1157.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1156, i64 %indvars.iv1090.ph
  store double %796, ptr %gep1157.prol, align 8, !tbaa !9
  %799 = getelementptr inbounds i8, ptr %gep1157.prol, i64 8
  store double %798, ptr %799, align 8, !tbaa !32
  %indvars.iv.next1091.prol = add nsw i64 %indvars.iv1090.ph, 1
  br label %scalar.ph1305.prol.loopexit

scalar.ph1305.prol.loopexit:                      ; preds = %scalar.ph1305.prol, %scalar.ph1305.preheader
  %indvars.iv.next1087.lcssa1429.unr = phi i64 [ poison, %scalar.ph1305.preheader ], [ %indvars.iv.next1087.prol, %scalar.ph1305.prol ]
  %indvars.iv.next1089.lcssa1428.unr = phi i64 [ poison, %scalar.ph1305.preheader ], [ %indvars.iv.next1089.prol, %scalar.ph1305.prol ]
  %indvars.iv1090.unr = phi i64 [ %indvars.iv1090.ph, %scalar.ph1305.preheader ], [ %indvars.iv.next1091.prol, %scalar.ph1305.prol ]
  %indvars.iv1088.unr = phi i64 [ %indvars.iv1088.ph, %scalar.ph1305.preheader ], [ %indvars.iv.next1089.prol, %scalar.ph1305.prol ]
  %indvars.iv1086.unr = phi i64 [ %indvars.iv1086.ph, %scalar.ph1305.preheader ], [ %indvars.iv.next1087.prol, %scalar.ph1305.prol ]
  %800 = icmp eq i32 %779, %792
  br i1 %800, label %._crit_edge871, label %scalar.ph1305

scalar.ph1305:                                    ; preds = %scalar.ph1305.prol.loopexit, %scalar.ph1305
  %indvars.iv1090 = phi i64 [ %indvars.iv.next1091.1, %scalar.ph1305 ], [ %indvars.iv1090.unr, %scalar.ph1305.prol.loopexit ]
  %indvars.iv1088 = phi i64 [ %indvars.iv.next1089.1, %scalar.ph1305 ], [ %indvars.iv1088.unr, %scalar.ph1305.prol.loopexit ]
  %indvars.iv1086 = phi i64 [ %indvars.iv.next1087.1, %scalar.ph1305 ], [ %indvars.iv1086.unr, %scalar.ph1305.prol.loopexit ]
  %801 = getelementptr double, ptr %23, i64 %indvars.iv1086
  %802 = load double, ptr %801, align 8, !tbaa !15
  %803 = getelementptr double, ptr %23, i64 %indvars.iv1088
  %804 = load double, ptr %803, align 8, !tbaa !15
  %gep1157 = getelementptr %struct.doublecomplex, ptr %invariant.gep1156, i64 %indvars.iv1090
  store double %802, ptr %gep1157, align 8, !tbaa !9
  %805 = getelementptr inbounds i8, ptr %gep1157, i64 8
  store double %804, ptr %805, align 8, !tbaa !32
  %indvars.iv.next1087.1 = add nsw i64 %indvars.iv1086, 2
  %indvars.iv.next1089.1 = add nsw i64 %indvars.iv1088, 2
  %gep1536 = getelementptr double, ptr %invariant.gep1535, i64 %indvars.iv1086
  %806 = load double, ptr %gep1536, align 8, !tbaa !15
  %gep1538 = getelementptr double, ptr %invariant.gep1537, i64 %indvars.iv1088
  %807 = load double, ptr %gep1538, align 8, !tbaa !15
  %808 = getelementptr %struct.doublecomplex, ptr %invariant.gep1156, i64 %indvars.iv1090
  %gep1157.1 = getelementptr i8, ptr %808, i64 16
  store double %806, ptr %gep1157.1, align 8, !tbaa !9
  %809 = getelementptr i8, ptr %808, i64 24
  store double %807, ptr %809, align 8, !tbaa !32
  %indvars.iv.next1091.1 = add nsw i64 %indvars.iv1090, 2
  %lftr.wideiv1097.1 = trunc i64 %indvars.iv.next1091.1 to i32
  %exitcond1098.not.1 = icmp eq i32 %764, %lftr.wideiv1097.1
  br i1 %exitcond1098.not.1, label %._crit_edge871, label %scalar.ph1305, !llvm.loop !97

._crit_edge871:                                   ; preds = %scalar.ph1305.prol.loopexit, %scalar.ph1305, %middle.block1304
  %indvars.iv.next1087.lcssa = phi i64 [ %ind.end1314, %middle.block1304 ], [ %indvars.iv.next1087.lcssa1429.unr, %scalar.ph1305.prol.loopexit ], [ %indvars.iv.next1087.1, %scalar.ph1305 ]
  %indvars.iv.next1089.lcssa = phi i64 [ %ind.end1312, %middle.block1304 ], [ %indvars.iv.next1089.lcssa1428.unr, %scalar.ph1305.prol.loopexit ], [ %indvars.iv.next1089.1, %scalar.ph1305 ]
  %810 = trunc nsw i64 %indvars.iv.next1089.lcssa to i32
  %indvars.iv.next1100 = add nuw nsw i64 %indvars.iv1099, 1
  %exitcond1103.not = icmp eq i64 %indvars.iv.next1100, %wide.trip.count1102
  br i1 %exitcond1103.not, label %._crit_edge880, label %.lr.ph870, !llvm.loop !98

._crit_edge880:                                   ; preds = %._crit_edge871, %.lr.ph879, %._crit_edge864
  %indvars.iv.next1105 = add nsw i64 %indvars.iv1104, 1
  %.not670.not = icmp slt i64 %indvars.iv1104, %521
  br i1 %.not670.not, label %540, label %.loopexit, !llvm.loop !99

.loopexit:                                        ; preds = %._crit_edge778, %._crit_edge880, %._crit_edge772, %._crit_edge796, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  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 void @dlasdt_(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 void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @pow_ii(i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!13}
!13 = distinct !{!13, !14}
!14 = distinct !{!14, !"LVerDomain"}
!15 = !{!11, !11, i64 0}
!16 = !{!17}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !19, !20, !21}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !19, !20}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !19, !20, !21}
!32 = !{!10, !11, i64 8}
!33 = distinct !{!33, !19, !20}
!34 = distinct !{!34, !19}
!35 = !{!36}
!36 = distinct !{!36, !37}
!37 = distinct !{!37, !"LVerDomain"}
!38 = !{!39}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !19, !20, !21}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.unroll.disable"}
!43 = distinct !{!43, !19, !20}
!44 = distinct !{!44, !19}
!45 = distinct !{!45, !19}
!46 = distinct !{!46, !19}
!47 = !{!48}
!48 = distinct !{!48, !49}
!49 = distinct !{!49, !"LVerDomain"}
!50 = !{!51}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !19, !20, !21}
!53 = distinct !{!53, !19, !20}
!54 = distinct !{!54, !19}
!55 = distinct !{!55, !19}
!56 = distinct !{!56, !19}
!57 = distinct !{!57, !19}
!58 = distinct !{!58, !19}
!59 = distinct !{!59, !19}
!60 = distinct !{!60, !19}
!61 = !{!62}
!62 = distinct !{!62, !63}
!63 = distinct !{!63, !"LVerDomain"}
!64 = !{!65}
!65 = distinct !{!65, !63}
!66 = distinct !{!66, !19, !20, !21}
!67 = distinct !{!67, !42}
!68 = distinct !{!68, !19, !20}
!69 = distinct !{!69, !19}
!70 = distinct !{!70, !19}
!71 = distinct !{!71, !19}
!72 = !{!73}
!73 = distinct !{!73, !74}
!74 = distinct !{!74, !"LVerDomain"}
!75 = !{!76}
!76 = distinct !{!76, !74}
!77 = distinct !{!77, !19, !20, !21}
!78 = distinct !{!78, !19, !20}
!79 = distinct !{!79, !19}
!80 = !{!81}
!81 = distinct !{!81, !82}
!82 = distinct !{!82, !"LVerDomain"}
!83 = !{!84}
!84 = distinct !{!84, !82}
!85 = distinct !{!85, !19, !20, !21}
!86 = distinct !{!86, !42}
!87 = distinct !{!87, !19, !20}
!88 = distinct !{!88, !19}
!89 = distinct !{!89, !19}
!90 = distinct !{!90, !19}
!91 = !{!92}
!92 = distinct !{!92, !93}
!93 = distinct !{!93, !"LVerDomain"}
!94 = !{!95}
!95 = distinct !{!95, !93}
!96 = distinct !{!96, !19, !20, !21}
!97 = distinct !{!97, !19, !20}
!98 = distinct !{!98, !19}
!99 = distinct !{!99, !19}


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