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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

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

118:                                              ; preds = %18
  %119 = load ptr, ptr %24, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp sle i32 %120, 0
  br i1 %121, label %130, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %25, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp sle i32 %124, 0
  br i1 %125, label %130, label %126

126:                                              ; preds = %122
  %127 = load ptr, ptr %26, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %126, %122, %118, %18
  store i32 1, ptr %64, align 4
  br label %4155

131:                                              ; preds = %126
  %132 = load ptr, ptr %22, align 8, !tbaa !5
  %133 = call i32 @lsame_(ptr noundef %132, ptr noundef @.str)
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  store i32 1, ptr %61, align 4, !tbaa !9
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %143

136:                                              ; preds = %131
  %137 = load ptr, ptr %22, align 8, !tbaa !5
  %138 = call i32 @lsame_(ptr noundef %137, ptr noundef @.str.1)
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %136
  store i32 0, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %142

141:                                              ; preds = %136
  store i32 0, ptr %61, align 4, !tbaa !9
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %141, %140
  br label %143

143:                                              ; preds = %142, %135
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  %145 = call i32 @lsame_(ptr noundef %144, ptr noundef @.str.2)
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %148

147:                                              ; preds = %143
  store i32 1, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %155

148:                                              ; preds = %143
  %149 = load ptr, ptr %19, align 8, !tbaa !5
  %150 = call i32 @lsame_(ptr noundef %149, ptr noundef @.str.1)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %153

152:                                              ; preds = %148
  store i32 0, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %154

153:                                              ; preds = %148
  store i32 0, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %154

154:                                              ; preds = %153, %152
  br label %155

155:                                              ; preds = %154, %147
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = call i32 @lsame_(ptr noundef %156, ptr noundef @.str.3)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %160

159:                                              ; preds = %155
  store i32 1, ptr %63, align 4, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %167

160:                                              ; preds = %155
  %161 = load ptr, ptr %21, align 8, !tbaa !5
  %162 = call i32 @lsame_(ptr noundef %161, ptr noundef @.str.4)
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i32 0, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %166

165:                                              ; preds = %160
  store i32 0, ptr %63, align 4, !tbaa !9
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %165, %164
  br label %167

167:                                              ; preds = %166, %159
  %168 = load i32, ptr %61, align 4, !tbaa !9
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %663

170:                                              ; preds = %167
  %171 = load i32, ptr %63, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %663

173:                                              ; preds = %170
  %174 = load i32, ptr %53, align 4, !tbaa !9
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %663

176:                                              ; preds = %173
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load ptr, ptr %26, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = sub nsw i32 %178, %180
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr %47, align 4, !tbaa !9
  %183 = load i32, ptr %47, align 4, !tbaa !9
  %184 = load ptr, ptr %23, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp sle i32 %183, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %176
  %188 = load i32, ptr %47, align 4, !tbaa !9
  br label %192

189:                                              ; preds = %176
  %190 = load ptr, ptr %23, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %189, %187
  %193 = phi i32 [ %188, %187 ], [ %191, %189 ]
  store i32 %193, ptr %59, align 4, !tbaa !9
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %47, align 4, !tbaa !9
  %197 = load i32, ptr %47, align 4, !tbaa !9
  %198 = load ptr, ptr %25, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp sle i32 %197, %199
  br i1 %200, label %201, label %203

201:                                              ; preds = %192
  %202 = load i32, ptr %47, align 4, !tbaa !9
  br label %206

203:                                              ; preds = %192
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %203, %201
  %207 = phi i32 [ %202, %201 ], [ %205, %203 ]
  store i32 %207, ptr %58, align 4, !tbaa !9
  %208 = load ptr, ptr %24, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  store i32 %209, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %264, %206
  %211 = load i32, ptr %56, align 4, !tbaa !9
  %212 = load i32, ptr %47, align 4, !tbaa !9
  %213 = icmp sle i32 %211, %212
  br i1 %213, label %214, label %267

214:                                              ; preds = %210
  %215 = load ptr, ptr %26, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  store i32 %216, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %260, %214
  %218 = load i32, ptr %55, align 4, !tbaa !9
  %219 = load i32, ptr %48, align 4, !tbaa !9
  %220 = icmp sle i32 %218, %219
  br i1 %220, label %221, label %263

221:                                              ; preds = %217
  %222 = load i32, ptr %55, align 4, !tbaa !9
  %223 = load i32, ptr %56, align 4, !tbaa !9
  %224 = load i32, ptr %45, align 4, !tbaa !9
  %225 = mul nsw i32 %223, %224
  %226 = add nsw i32 %222, %225
  store i32 %226, ptr %49, align 4, !tbaa !9
  %227 = load ptr, ptr %23, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %26, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = sub nsw i32 %228, %230
  %232 = load i32, ptr %55, align 4, !tbaa !9
  %233 = add nsw i32 %231, %232
  %234 = load i32, ptr %56, align 4, !tbaa !9
  %235 = load i32, ptr %39, align 4, !tbaa !9
  %236 = mul nsw i32 %234, %235
  %237 = add nsw i32 %233, %236
  store i32 %237, ptr %50, align 4, !tbaa !9
  %238 = load ptr, ptr %33, align 8, !tbaa !5
  %239 = load i32, ptr %50, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.complex, ptr %238, i64 %240
  %242 = getelementptr inbounds %struct.complex, ptr %241, i32 0, i32 0
  %243 = load float, ptr %242, align 4, !tbaa !11
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i32, ptr %49, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds %struct.complex, ptr %244, i64 %246
  %248 = getelementptr inbounds %struct.complex, ptr %247, i32 0, i32 0
  store float %243, ptr %248, align 4, !tbaa !11
  %249 = load ptr, ptr %33, align 8, !tbaa !5
  %250 = load i32, ptr %50, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds %struct.complex, ptr %249, i64 %251
  %253 = getelementptr inbounds %struct.complex, ptr %252, i32 0, i32 1
  %254 = load float, ptr %253, align 4, !tbaa !14
  %255 = load ptr, ptr %35, align 8, !tbaa !5
  %256 = load i32, ptr %49, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds %struct.complex, ptr %255, i64 %257
  %259 = getelementptr inbounds %struct.complex, ptr %258, i32 0, i32 1
  store float %254, ptr %259, align 4, !tbaa !14
  br label %260

260:                                              ; preds = %221
  %261 = load i32, ptr %55, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %55, align 4, !tbaa !9
  br label %217, !llvm.loop !15

263:                                              ; preds = %217
  br label %264

264:                                              ; preds = %263
  %265 = load i32, ptr %56, align 4, !tbaa !9
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %56, align 4, !tbaa !9
  br label %210, !llvm.loop !17

267:                                              ; preds = %210
  %268 = load ptr, ptr %26, align 8, !tbaa !5
  %269 = load ptr, ptr %24, align 8, !tbaa !5
  %270 = load ptr, ptr %27, align 8, !tbaa !5
  %271 = load i32, ptr %59, align 4, !tbaa !9
  %272 = load i32, ptr %43, align 4, !tbaa !9
  %273 = add nsw i32 %271, %272
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds %struct.complex, ptr %270, i64 %274
  %276 = load ptr, ptr %28, align 8, !tbaa !5
  %277 = load ptr, ptr %35, align 8, !tbaa !5
  %278 = load i32, ptr %46, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds %struct.complex, ptr %277, i64 %279
  %281 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %268, ptr noundef %269, ptr noundef @c_b1, ptr noundef %275, ptr noundef %276, ptr noundef %280, ptr noundef %281)
  %282 = load ptr, ptr %23, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = sub nsw i32 %283, %285
  store i32 %286, ptr %47, align 4, !tbaa !9
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load ptr, ptr %24, align 8, !tbaa !5
  %289 = load ptr, ptr %27, align 8, !tbaa !5
  %290 = load i32, ptr %44, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.complex, ptr %289, i64 %291
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  %294 = load ptr, ptr %33, align 8, !tbaa !5
  %295 = load i32, ptr %40, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %struct.complex, ptr %294, i64 %296
  %298 = load ptr, ptr %34, align 8, !tbaa !5
  %299 = load ptr, ptr %35, align 8, !tbaa !5
  %300 = load i32, ptr %46, align 4, !tbaa !9
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds %struct.complex, ptr %299, i64 %301
  %303 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %287, ptr noundef %288, ptr noundef %47, ptr noundef @c_b1, ptr noundef %292, ptr noundef %293, ptr noundef %297, ptr noundef %298, ptr noundef @c_b1, ptr noundef %302, ptr noundef %303)
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = load ptr, ptr %26, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = sub nsw i32 %305, %307
  store i32 %308, ptr %47, align 4, !tbaa !9
  %309 = load ptr, ptr %24, align 8, !tbaa !5
  %310 = load ptr, ptr %23, align 8, !tbaa !5
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = load i32, ptr %58, align 4, !tbaa !9
  %313 = load i32, ptr %43, align 4, !tbaa !9
  %314 = mul nsw i32 %312, %313
  %315 = add nsw i32 %314, 1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.complex, ptr %311, i64 %316
  %318 = load ptr, ptr %28, align 8, !tbaa !5
  %319 = load ptr, ptr %33, align 8, !tbaa !5
  %320 = load i32, ptr %40, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds %struct.complex, ptr %319, i64 %321
  %323 = load ptr, ptr %34, align 8, !tbaa !5
  %324 = load ptr, ptr %35, align 8, !tbaa !5
  %325 = load i32, ptr %58, align 4, !tbaa !9
  %326 = load i32, ptr %45, align 4, !tbaa !9
  %327 = add nsw i32 %325, %326
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds %struct.complex, ptr %324, i64 %328
  %330 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %47, ptr noundef %309, ptr noundef %310, ptr noundef @c_b1, ptr noundef %317, ptr noundef %318, ptr noundef %322, ptr noundef %323, ptr noundef @c_b2, ptr noundef %329, ptr noundef %330)
  %331 = load ptr, ptr %24, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  store i32 %332, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %406, %267
  %334 = load i32, ptr %56, align 4, !tbaa !9
  %335 = load i32, ptr %47, align 4, !tbaa !9
  %336 = icmp sle i32 %334, %335
  br i1 %336, label %337, label %409

337:                                              ; preds = %333
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  store i32 %339, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %340

340:                                              ; preds = %402, %337
  %341 = load i32, ptr %55, align 4, !tbaa !9
  %342 = load i32, ptr %48, align 4, !tbaa !9
  %343 = icmp sle i32 %341, %342
  br i1 %343, label %344, label %405

344:                                              ; preds = %340
  %345 = load i32, ptr %55, align 4, !tbaa !9
  %346 = load i32, ptr %56, align 4, !tbaa !9
  %347 = load i32, ptr %45, align 4, !tbaa !9
  %348 = mul nsw i32 %346, %347
  %349 = add nsw i32 %345, %348
  store i32 %349, ptr %49, align 4, !tbaa !9
  %350 = load i32, ptr %55, align 4, !tbaa !9
  %351 = load i32, ptr %56, align 4, !tbaa !9
  %352 = load i32, ptr %45, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = add nsw i32 %350, %353
  store i32 %354, ptr %50, align 4, !tbaa !9
  %355 = load i32, ptr %55, align 4, !tbaa !9
  %356 = load i32, ptr %56, align 4, !tbaa !9
  %357 = load i32, ptr %37, align 4, !tbaa !9
  %358 = mul nsw i32 %356, %357
  %359 = add nsw i32 %355, %358
  store i32 %359, ptr %51, align 4, !tbaa !9
  %360 = load ptr, ptr %35, align 8, !tbaa !5
  %361 = load i32, ptr %50, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.complex, ptr %360, i64 %362
  %364 = getelementptr inbounds %struct.complex, ptr %363, i32 0, i32 0
  %365 = load float, ptr %364, align 4, !tbaa !11
  %366 = load ptr, ptr %31, align 8, !tbaa !5
  %367 = load i32, ptr %51, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %struct.complex, ptr %366, i64 %368
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 0
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = fadd float %365, %371
  %373 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %372, ptr %373, align 4, !tbaa !11
  %374 = load ptr, ptr %35, align 8, !tbaa !5
  %375 = load i32, ptr %50, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct.complex, ptr %374, i64 %376
  %378 = getelementptr inbounds %struct.complex, ptr %377, i32 0, i32 1
  %379 = load float, ptr %378, align 4, !tbaa !14
  %380 = load ptr, ptr %31, align 8, !tbaa !5
  %381 = load i32, ptr %51, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds %struct.complex, ptr %380, i64 %382
  %384 = getelementptr inbounds %struct.complex, ptr %383, i32 0, i32 1
  %385 = load float, ptr %384, align 4, !tbaa !14
  %386 = fadd float %379, %385
  %387 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %386, ptr %387, align 4, !tbaa !14
  %388 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %389 = load float, ptr %388, align 4, !tbaa !11
  %390 = load ptr, ptr %35, align 8, !tbaa !5
  %391 = load i32, ptr %49, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds %struct.complex, ptr %390, i64 %392
  %394 = getelementptr inbounds %struct.complex, ptr %393, i32 0, i32 0
  store float %389, ptr %394, align 4, !tbaa !11
  %395 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %396 = load float, ptr %395, align 4, !tbaa !14
  %397 = load ptr, ptr %35, align 8, !tbaa !5
  %398 = load i32, ptr %49, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.complex, ptr %397, i64 %399
  %401 = getelementptr inbounds %struct.complex, ptr %400, i32 0, i32 1
  store float %396, ptr %401, align 4, !tbaa !14
  br label %402

402:                                              ; preds = %344
  %403 = load i32, ptr %55, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %55, align 4, !tbaa !9
  br label %340, !llvm.loop !18

405:                                              ; preds = %340
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr %56, align 4, !tbaa !9
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr %56, align 4, !tbaa !9
  br label %333, !llvm.loop !19

409:                                              ; preds = %333
  %410 = load ptr, ptr %20, align 8, !tbaa !5
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = load i32, ptr %42, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds %struct.complex, ptr %413, i64 %415
  %417 = load ptr, ptr %30, align 8, !tbaa !5
  %418 = load ptr, ptr %35, align 8, !tbaa !5
  %419 = load i32, ptr %46, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds %struct.complex, ptr %418, i64 %420
  %422 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef %410, ptr noundef @.str.6, ptr noundef %411, ptr noundef %412, ptr noundef @c_b1, ptr noundef %416, ptr noundef %417, ptr noundef %421, ptr noundef %422)
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  store i32 %424, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %498, %409
  %426 = load i32, ptr %56, align 4, !tbaa !9
  %427 = load i32, ptr %47, align 4, !tbaa !9
  %428 = icmp sle i32 %426, %427
  br i1 %428, label %429, label %501

429:                                              ; preds = %425
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  store i32 %431, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %494, %429
  %433 = load i32, ptr %55, align 4, !tbaa !9
  %434 = load i32, ptr %48, align 4, !tbaa !9
  %435 = icmp sle i32 %433, %434
  br i1 %435, label %436, label %497

436:                                              ; preds = %432
  %437 = load i32, ptr %55, align 4, !tbaa !9
  %438 = load i32, ptr %56, align 4, !tbaa !9
  %439 = load i32, ptr %37, align 4, !tbaa !9
  %440 = mul nsw i32 %438, %439
  %441 = add nsw i32 %437, %440
  store i32 %441, ptr %49, align 4, !tbaa !9
  %442 = load i32, ptr %55, align 4, !tbaa !9
  %443 = load i32, ptr %56, align 4, !tbaa !9
  %444 = load i32, ptr %37, align 4, !tbaa !9
  %445 = mul nsw i32 %443, %444
  %446 = add nsw i32 %442, %445
  store i32 %446, ptr %50, align 4, !tbaa !9
  %447 = load i32, ptr %55, align 4, !tbaa !9
  %448 = load i32, ptr %56, align 4, !tbaa !9
  %449 = load i32, ptr %45, align 4, !tbaa !9
  %450 = mul nsw i32 %448, %449
  %451 = add nsw i32 %447, %450
  store i32 %451, ptr %51, align 4, !tbaa !9
  %452 = load ptr, ptr %31, align 8, !tbaa !5
  %453 = load i32, ptr %50, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds %struct.complex, ptr %452, i64 %454
  %456 = getelementptr inbounds %struct.complex, ptr %455, i32 0, i32 0
  %457 = load float, ptr %456, align 4, !tbaa !11
  %458 = load ptr, ptr %35, align 8, !tbaa !5
  %459 = load i32, ptr %51, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds %struct.complex, ptr %458, i64 %460
  %462 = getelementptr inbounds %struct.complex, ptr %461, i32 0, i32 0
  %463 = load float, ptr %462, align 4, !tbaa !11
  %464 = fsub float %457, %463
  %465 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %464, ptr %465, align 4, !tbaa !11
  %466 = load ptr, ptr %31, align 8, !tbaa !5
  %467 = load i32, ptr %50, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.complex, ptr %466, i64 %468
  %470 = getelementptr inbounds %struct.complex, ptr %469, i32 0, i32 1
  %471 = load float, ptr %470, align 4, !tbaa !14
  %472 = load ptr, ptr %35, align 8, !tbaa !5
  %473 = load i32, ptr %51, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %472, i64 %474
  %476 = getelementptr inbounds %struct.complex, ptr %475, i32 0, i32 1
  %477 = load float, ptr %476, align 4, !tbaa !14
  %478 = fsub float %471, %477
  %479 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %478, ptr %479, align 4, !tbaa !14
  %480 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %481 = load float, ptr %480, align 4, !tbaa !11
  %482 = load ptr, ptr %31, align 8, !tbaa !5
  %483 = load i32, ptr %49, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.complex, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.complex, ptr %485, i32 0, i32 0
  store float %481, ptr %486, align 4, !tbaa !11
  %487 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %488 = load float, ptr %487, align 4, !tbaa !14
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = load i32, ptr %49, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.complex, ptr %489, i64 %491
  %493 = getelementptr inbounds %struct.complex, ptr %492, i32 0, i32 1
  store float %488, ptr %493, align 4, !tbaa !14
  br label %494

494:                                              ; preds = %436
  %495 = load i32, ptr %55, align 4, !tbaa !9
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %55, align 4, !tbaa !9
  br label %432, !llvm.loop !20

497:                                              ; preds = %432
  br label %498

498:                                              ; preds = %497
  %499 = load i32, ptr %56, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %56, align 4, !tbaa !9
  br label %425, !llvm.loop !21

501:                                              ; preds = %425
  %502 = load ptr, ptr %23, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = load ptr, ptr %26, align 8, !tbaa !5
  %505 = load i32, ptr %504, align 4, !tbaa !9
  %506 = sub nsw i32 %503, %505
  store i32 %506, ptr %47, align 4, !tbaa !9
  %507 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %507, align 4, !tbaa !11
  %508 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %508, align 4, !tbaa !14
  %509 = load ptr, ptr %24, align 8, !tbaa !5
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = load ptr, ptr %27, align 8, !tbaa !5
  %512 = load i32, ptr %44, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.complex, ptr %511, i64 %513
  %515 = load ptr, ptr %28, align 8, !tbaa !5
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load i32, ptr %46, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.complex, ptr %516, i64 %518
  %520 = load ptr, ptr %36, align 8, !tbaa !5
  %521 = load ptr, ptr %33, align 8, !tbaa !5
  %522 = load i32, ptr %40, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds %struct.complex, ptr %521, i64 %523
  %525 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %47, ptr noundef %509, ptr noundef %510, ptr noundef %52, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %520, ptr noundef @c_b1, ptr noundef %524, ptr noundef %525)
  %526 = load ptr, ptr %25, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = load ptr, ptr %26, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = sub nsw i32 %527, %529
  store i32 %530, ptr %47, align 4, !tbaa !9
  %531 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %531, align 4, !tbaa !11
  %532 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %532, align 4, !tbaa !14
  %533 = load ptr, ptr %26, align 8, !tbaa !5
  %534 = load ptr, ptr %24, align 8, !tbaa !5
  %535 = load ptr, ptr %27, align 8, !tbaa !5
  %536 = load i32, ptr %59, align 4, !tbaa !9
  %537 = load i32, ptr %58, align 4, !tbaa !9
  %538 = load i32, ptr %43, align 4, !tbaa !9
  %539 = mul nsw i32 %537, %538
  %540 = add nsw i32 %536, %539
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.complex, ptr %535, i64 %541
  %543 = load ptr, ptr %28, align 8, !tbaa !5
  %544 = load ptr, ptr %35, align 8, !tbaa !5
  %545 = load i32, ptr %58, align 4, !tbaa !9
  %546 = load i32, ptr %45, align 4, !tbaa !9
  %547 = add nsw i32 %545, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.complex, ptr %544, i64 %548
  %550 = load ptr, ptr %36, align 8, !tbaa !5
  %551 = load ptr, ptr %33, align 8, !tbaa !5
  %552 = load i32, ptr %59, align 4, !tbaa !9
  %553 = load i32, ptr %39, align 4, !tbaa !9
  %554 = add nsw i32 %552, %553
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.complex, ptr %551, i64 %555
  %557 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %533, ptr noundef %534, ptr noundef %47, ptr noundef %52, ptr noundef %542, ptr noundef %543, ptr noundef %549, ptr noundef %550, ptr noundef @c_b1, ptr noundef %556, ptr noundef %557)
  %558 = load ptr, ptr %26, align 8, !tbaa !5
  %559 = load ptr, ptr %24, align 8, !tbaa !5
  %560 = load ptr, ptr %27, align 8, !tbaa !5
  %561 = load i32, ptr %59, align 4, !tbaa !9
  %562 = load i32, ptr %43, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.complex, ptr %560, i64 %564
  %566 = load ptr, ptr %28, align 8, !tbaa !5
  %567 = load ptr, ptr %35, align 8, !tbaa !5
  %568 = load i32, ptr %46, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds %struct.complex, ptr %567, i64 %569
  %571 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %558, ptr noundef %559, ptr noundef @c_b1, ptr noundef %565, ptr noundef %566, ptr noundef %570, ptr noundef %571)
  %572 = load ptr, ptr %24, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  store i32 %573, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %574

574:                                              ; preds = %659, %501
  %575 = load i32, ptr %56, align 4, !tbaa !9
  %576 = load i32, ptr %47, align 4, !tbaa !9
  %577 = icmp sle i32 %575, %576
  br i1 %577, label %578, label %662

578:                                              ; preds = %574
  %579 = load ptr, ptr %26, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  store i32 %580, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %581

581:                                              ; preds = %655, %578
  %582 = load i32, ptr %55, align 4, !tbaa !9
  %583 = load i32, ptr %48, align 4, !tbaa !9
  %584 = icmp sle i32 %582, %583
  br i1 %584, label %585, label %658

585:                                              ; preds = %581
  %586 = load ptr, ptr %23, align 8, !tbaa !5
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = sub nsw i32 %587, %589
  %591 = load i32, ptr %55, align 4, !tbaa !9
  %592 = add nsw i32 %590, %591
  %593 = load i32, ptr %56, align 4, !tbaa !9
  %594 = load i32, ptr %39, align 4, !tbaa !9
  %595 = mul nsw i32 %593, %594
  %596 = add nsw i32 %592, %595
  store i32 %596, ptr %49, align 4, !tbaa !9
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = load ptr, ptr %26, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = sub nsw i32 %598, %600
  %602 = load i32, ptr %55, align 4, !tbaa !9
  %603 = add nsw i32 %601, %602
  %604 = load i32, ptr %56, align 4, !tbaa !9
  %605 = load i32, ptr %39, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %603, %606
  store i32 %607, ptr %50, align 4, !tbaa !9
  %608 = load i32, ptr %55, align 4, !tbaa !9
  %609 = load i32, ptr %56, align 4, !tbaa !9
  %610 = load i32, ptr %45, align 4, !tbaa !9
  %611 = mul nsw i32 %609, %610
  %612 = add nsw i32 %608, %611
  store i32 %612, ptr %51, align 4, !tbaa !9
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = load i32, ptr %50, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.complex, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.complex, ptr %616, i32 0, i32 0
  %618 = load float, ptr %617, align 4, !tbaa !11
  %619 = load ptr, ptr %35, align 8, !tbaa !5
  %620 = load i32, ptr %51, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.complex, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.complex, ptr %622, i32 0, i32 0
  %624 = load float, ptr %623, align 4, !tbaa !11
  %625 = fsub float %618, %624
  %626 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %625, ptr %626, align 4, !tbaa !11
  %627 = load ptr, ptr %33, align 8, !tbaa !5
  %628 = load i32, ptr %50, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %struct.complex, ptr %627, i64 %629
  %631 = getelementptr inbounds %struct.complex, ptr %630, i32 0, i32 1
  %632 = load float, ptr %631, align 4, !tbaa !14
  %633 = load ptr, ptr %35, align 8, !tbaa !5
  %634 = load i32, ptr %51, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.complex, ptr %633, i64 %635
  %637 = getelementptr inbounds %struct.complex, ptr %636, i32 0, i32 1
  %638 = load float, ptr %637, align 4, !tbaa !14
  %639 = fsub float %632, %638
  %640 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %639, ptr %640, align 4, !tbaa !14
  %641 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %642 = load float, ptr %641, align 4, !tbaa !11
  %643 = load ptr, ptr %33, align 8, !tbaa !5
  %644 = load i32, ptr %49, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.complex, ptr %643, i64 %645
  %647 = getelementptr inbounds %struct.complex, ptr %646, i32 0, i32 0
  store float %642, ptr %647, align 4, !tbaa !11
  %648 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %649 = load float, ptr %648, align 4, !tbaa !14
  %650 = load ptr, ptr %33, align 8, !tbaa !5
  %651 = load i32, ptr %49, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.complex, ptr %650, i64 %652
  %654 = getelementptr inbounds %struct.complex, ptr %653, i32 0, i32 1
  store float %649, ptr %654, align 4, !tbaa !14
  br label %655

655:                                              ; preds = %585
  %656 = load i32, ptr %55, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr %55, align 4, !tbaa !9
  br label %581, !llvm.loop !22

658:                                              ; preds = %581
  br label %659

659:                                              ; preds = %658
  %660 = load i32, ptr %56, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %56, align 4, !tbaa !9
  br label %574, !llvm.loop !23

662:                                              ; preds = %574
  br label %4154

663:                                              ; preds = %173, %170, %167
  %664 = load i32, ptr %61, align 4, !tbaa !9
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %1162

666:                                              ; preds = %663
  %667 = load i32, ptr %63, align 4, !tbaa !9
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %1162

669:                                              ; preds = %666
  %670 = load i32, ptr %57, align 4, !tbaa !9
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %1162

672:                                              ; preds = %669
  %673 = load ptr, ptr %24, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = load ptr, ptr %26, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = sub nsw i32 %674, %676
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %47, align 4, !tbaa !9
  %679 = load i32, ptr %47, align 4, !tbaa !9
  %680 = load ptr, ptr %24, align 8, !tbaa !5
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = icmp sle i32 %679, %681
  br i1 %682, label %683, label %685

683:                                              ; preds = %672
  %684 = load i32, ptr %47, align 4, !tbaa !9
  br label %688

685:                                              ; preds = %672
  %686 = load ptr, ptr %24, align 8, !tbaa !5
  %687 = load i32, ptr %686, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %685, %683
  %689 = phi i32 [ %684, %683 ], [ %687, %685 ]
  store i32 %689, ptr %60, align 4, !tbaa !9
  %690 = load ptr, ptr %26, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !9
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %47, align 4, !tbaa !9
  %693 = load i32, ptr %47, align 4, !tbaa !9
  %694 = load ptr, ptr %25, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = icmp sle i32 %693, %695
  br i1 %696, label %697, label %699

697:                                              ; preds = %688
  %698 = load i32, ptr %47, align 4, !tbaa !9
  br label %702

699:                                              ; preds = %688
  %700 = load ptr, ptr %25, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  br label %702

702:                                              ; preds = %699, %697
  %703 = phi i32 [ %698, %697 ], [ %701, %699 ]
  store i32 %703, ptr %58, align 4, !tbaa !9
  %704 = load ptr, ptr %26, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  store i32 %705, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %706

706:                                              ; preds = %760, %702
  %707 = load i32, ptr %56, align 4, !tbaa !9
  %708 = load i32, ptr %47, align 4, !tbaa !9
  %709 = icmp sle i32 %707, %708
  br i1 %709, label %710, label %763

710:                                              ; preds = %706
  %711 = load ptr, ptr %23, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  store i32 %712, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %713

713:                                              ; preds = %756, %710
  %714 = load i32, ptr %55, align 4, !tbaa !9
  %715 = load i32, ptr %48, align 4, !tbaa !9
  %716 = icmp sle i32 %714, %715
  br i1 %716, label %717, label %759

717:                                              ; preds = %713
  %718 = load i32, ptr %55, align 4, !tbaa !9
  %719 = load i32, ptr %56, align 4, !tbaa !9
  %720 = load i32, ptr %45, align 4, !tbaa !9
  %721 = mul nsw i32 %719, %720
  %722 = add nsw i32 %718, %721
  store i32 %722, ptr %49, align 4, !tbaa !9
  %723 = load i32, ptr %55, align 4, !tbaa !9
  %724 = load ptr, ptr %24, align 8, !tbaa !5
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = load ptr, ptr %26, align 8, !tbaa !5
  %727 = load i32, ptr %726, align 4, !tbaa !9
  %728 = sub nsw i32 %725, %727
  %729 = load i32, ptr %56, align 4, !tbaa !9
  %730 = add nsw i32 %728, %729
  %731 = load i32, ptr %39, align 4, !tbaa !9
  %732 = mul nsw i32 %730, %731
  %733 = add nsw i32 %723, %732
  store i32 %733, ptr %50, align 4, !tbaa !9
  %734 = load ptr, ptr %33, align 8, !tbaa !5
  %735 = load i32, ptr %50, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %struct.complex, ptr %734, i64 %736
  %738 = getelementptr inbounds %struct.complex, ptr %737, i32 0, i32 0
  %739 = load float, ptr %738, align 4, !tbaa !11
  %740 = load ptr, ptr %35, align 8, !tbaa !5
  %741 = load i32, ptr %49, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.complex, ptr %740, i64 %742
  %744 = getelementptr inbounds %struct.complex, ptr %743, i32 0, i32 0
  store float %739, ptr %744, align 4, !tbaa !11
  %745 = load ptr, ptr %33, align 8, !tbaa !5
  %746 = load i32, ptr %50, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds %struct.complex, ptr %745, i64 %747
  %749 = getelementptr inbounds %struct.complex, ptr %748, i32 0, i32 1
  %750 = load float, ptr %749, align 4, !tbaa !14
  %751 = load ptr, ptr %35, align 8, !tbaa !5
  %752 = load i32, ptr %49, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds %struct.complex, ptr %751, i64 %753
  %755 = getelementptr inbounds %struct.complex, ptr %754, i32 0, i32 1
  store float %750, ptr %755, align 4, !tbaa !14
  br label %756

756:                                              ; preds = %717
  %757 = load i32, ptr %55, align 4, !tbaa !9
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %55, align 4, !tbaa !9
  br label %713, !llvm.loop !24

759:                                              ; preds = %713
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %56, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %56, align 4, !tbaa !9
  br label %706, !llvm.loop !25

763:                                              ; preds = %706
  %764 = load ptr, ptr %23, align 8, !tbaa !5
  %765 = load ptr, ptr %26, align 8, !tbaa !5
  %766 = load ptr, ptr %27, align 8, !tbaa !5
  %767 = load i32, ptr %60, align 4, !tbaa !9
  %768 = load i32, ptr %43, align 4, !tbaa !9
  %769 = add nsw i32 %767, %768
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds %struct.complex, ptr %766, i64 %770
  %772 = load ptr, ptr %28, align 8, !tbaa !5
  %773 = load ptr, ptr %35, align 8, !tbaa !5
  %774 = load i32, ptr %46, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds %struct.complex, ptr %773, i64 %775
  %777 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %764, ptr noundef %765, ptr noundef @c_b1, ptr noundef %771, ptr noundef %772, ptr noundef %776, ptr noundef %777)
  %778 = load ptr, ptr %24, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = load ptr, ptr %26, align 8, !tbaa !5
  %781 = load i32, ptr %780, align 4, !tbaa !9
  %782 = sub nsw i32 %779, %781
  store i32 %782, ptr %47, align 4, !tbaa !9
  %783 = load ptr, ptr %23, align 8, !tbaa !5
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = load ptr, ptr %33, align 8, !tbaa !5
  %786 = load i32, ptr %40, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.complex, ptr %785, i64 %787
  %789 = load ptr, ptr %34, align 8, !tbaa !5
  %790 = load ptr, ptr %27, align 8, !tbaa !5
  %791 = load i32, ptr %44, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %790, i64 %792
  %794 = load ptr, ptr %28, align 8, !tbaa !5
  %795 = load ptr, ptr %35, align 8, !tbaa !5
  %796 = load i32, ptr %46, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.complex, ptr %795, i64 %797
  %799 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %783, ptr noundef %784, ptr noundef %47, ptr noundef @c_b1, ptr noundef %788, ptr noundef %789, ptr noundef %793, ptr noundef %794, ptr noundef @c_b1, ptr noundef %798, ptr noundef %799)
  %800 = load ptr, ptr %25, align 8, !tbaa !5
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = load ptr, ptr %26, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = sub nsw i32 %801, %803
  store i32 %804, ptr %47, align 4, !tbaa !9
  %805 = load ptr, ptr %23, align 8, !tbaa !5
  %806 = load ptr, ptr %24, align 8, !tbaa !5
  %807 = load ptr, ptr %33, align 8, !tbaa !5
  %808 = load i32, ptr %40, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds %struct.complex, ptr %807, i64 %809
  %811 = load ptr, ptr %34, align 8, !tbaa !5
  %812 = load ptr, ptr %27, align 8, !tbaa !5
  %813 = load i32, ptr %58, align 4, !tbaa !9
  %814 = load i32, ptr %43, align 4, !tbaa !9
  %815 = mul nsw i32 %813, %814
  %816 = add nsw i32 %815, 1
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.complex, ptr %812, i64 %817
  %819 = load ptr, ptr %28, align 8, !tbaa !5
  %820 = load ptr, ptr %35, align 8, !tbaa !5
  %821 = load i32, ptr %58, align 4, !tbaa !9
  %822 = load i32, ptr %45, align 4, !tbaa !9
  %823 = mul nsw i32 %821, %822
  %824 = add nsw i32 %823, 1
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.complex, ptr %820, i64 %825
  %827 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %805, ptr noundef %47, ptr noundef %806, ptr noundef @c_b1, ptr noundef %810, ptr noundef %811, ptr noundef %818, ptr noundef %819, ptr noundef @c_b2, ptr noundef %826, ptr noundef %827)
  %828 = load ptr, ptr %25, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  store i32 %829, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %903, %763
  %831 = load i32, ptr %56, align 4, !tbaa !9
  %832 = load i32, ptr %47, align 4, !tbaa !9
  %833 = icmp sle i32 %831, %832
  br i1 %833, label %834, label %906

834:                                              ; preds = %830
  %835 = load ptr, ptr %23, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  store i32 %836, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %899, %834
  %838 = load i32, ptr %55, align 4, !tbaa !9
  %839 = load i32, ptr %48, align 4, !tbaa !9
  %840 = icmp sle i32 %838, %839
  br i1 %840, label %841, label %902

841:                                              ; preds = %837
  %842 = load i32, ptr %55, align 4, !tbaa !9
  %843 = load i32, ptr %56, align 4, !tbaa !9
  %844 = load i32, ptr %45, align 4, !tbaa !9
  %845 = mul nsw i32 %843, %844
  %846 = add nsw i32 %842, %845
  store i32 %846, ptr %49, align 4, !tbaa !9
  %847 = load i32, ptr %55, align 4, !tbaa !9
  %848 = load i32, ptr %56, align 4, !tbaa !9
  %849 = load i32, ptr %45, align 4, !tbaa !9
  %850 = mul nsw i32 %848, %849
  %851 = add nsw i32 %847, %850
  store i32 %851, ptr %50, align 4, !tbaa !9
  %852 = load i32, ptr %55, align 4, !tbaa !9
  %853 = load i32, ptr %56, align 4, !tbaa !9
  %854 = load i32, ptr %37, align 4, !tbaa !9
  %855 = mul nsw i32 %853, %854
  %856 = add nsw i32 %852, %855
  store i32 %856, ptr %51, align 4, !tbaa !9
  %857 = load ptr, ptr %35, align 8, !tbaa !5
  %858 = load i32, ptr %50, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds %struct.complex, ptr %857, i64 %859
  %861 = getelementptr inbounds %struct.complex, ptr %860, i32 0, i32 0
  %862 = load float, ptr %861, align 4, !tbaa !11
  %863 = load ptr, ptr %31, align 8, !tbaa !5
  %864 = load i32, ptr %51, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds %struct.complex, ptr %863, i64 %865
  %867 = getelementptr inbounds %struct.complex, ptr %866, i32 0, i32 0
  %868 = load float, ptr %867, align 4, !tbaa !11
  %869 = fadd float %862, %868
  %870 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %869, ptr %870, align 4, !tbaa !11
  %871 = load ptr, ptr %35, align 8, !tbaa !5
  %872 = load i32, ptr %50, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.complex, ptr %871, i64 %873
  %875 = getelementptr inbounds %struct.complex, ptr %874, i32 0, i32 1
  %876 = load float, ptr %875, align 4, !tbaa !14
  %877 = load ptr, ptr %31, align 8, !tbaa !5
  %878 = load i32, ptr %51, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds %struct.complex, ptr %877, i64 %879
  %881 = getelementptr inbounds %struct.complex, ptr %880, i32 0, i32 1
  %882 = load float, ptr %881, align 4, !tbaa !14
  %883 = fadd float %876, %882
  %884 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %883, ptr %884, align 4, !tbaa !14
  %885 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %886 = load float, ptr %885, align 4, !tbaa !11
  %887 = load ptr, ptr %35, align 8, !tbaa !5
  %888 = load i32, ptr %49, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct.complex, ptr %887, i64 %889
  %891 = getelementptr inbounds %struct.complex, ptr %890, i32 0, i32 0
  store float %886, ptr %891, align 4, !tbaa !11
  %892 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %893 = load float, ptr %892, align 4, !tbaa !14
  %894 = load ptr, ptr %35, align 8, !tbaa !5
  %895 = load i32, ptr %49, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds %struct.complex, ptr %894, i64 %896
  %898 = getelementptr inbounds %struct.complex, ptr %897, i32 0, i32 1
  store float %893, ptr %898, align 4, !tbaa !14
  br label %899

899:                                              ; preds = %841
  %900 = load i32, ptr %55, align 4, !tbaa !9
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %55, align 4, !tbaa !9
  br label %837, !llvm.loop !26

902:                                              ; preds = %837
  br label %903

903:                                              ; preds = %902
  %904 = load i32, ptr %56, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %56, align 4, !tbaa !9
  br label %830, !llvm.loop !27

906:                                              ; preds = %830
  %907 = load ptr, ptr %20, align 8, !tbaa !5
  %908 = load ptr, ptr %23, align 8, !tbaa !5
  %909 = load ptr, ptr %25, align 8, !tbaa !5
  %910 = load ptr, ptr %29, align 8, !tbaa !5
  %911 = load i32, ptr %42, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.complex, ptr %910, i64 %912
  %914 = load ptr, ptr %30, align 8, !tbaa !5
  %915 = load ptr, ptr %35, align 8, !tbaa !5
  %916 = load i32, ptr %46, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds %struct.complex, ptr %915, i64 %917
  %919 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef %907, ptr noundef @.str.6, ptr noundef %908, ptr noundef %909, ptr noundef @c_b1, ptr noundef %913, ptr noundef %914, ptr noundef %918, ptr noundef %919)
  %920 = load ptr, ptr %25, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  store i32 %921, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %922

922:                                              ; preds = %995, %906
  %923 = load i32, ptr %56, align 4, !tbaa !9
  %924 = load i32, ptr %47, align 4, !tbaa !9
  %925 = icmp sle i32 %923, %924
  br i1 %925, label %926, label %998

926:                                              ; preds = %922
  %927 = load ptr, ptr %23, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  store i32 %928, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %929

929:                                              ; preds = %991, %926
  %930 = load i32, ptr %55, align 4, !tbaa !9
  %931 = load i32, ptr %48, align 4, !tbaa !9
  %932 = icmp sle i32 %930, %931
  br i1 %932, label %933, label %994

933:                                              ; preds = %929
  %934 = load i32, ptr %55, align 4, !tbaa !9
  %935 = load i32, ptr %56, align 4, !tbaa !9
  %936 = load i32, ptr %37, align 4, !tbaa !9
  %937 = mul nsw i32 %935, %936
  %938 = add nsw i32 %934, %937
  store i32 %938, ptr %49, align 4, !tbaa !9
  %939 = load i32, ptr %55, align 4, !tbaa !9
  %940 = load i32, ptr %56, align 4, !tbaa !9
  %941 = load i32, ptr %37, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = add nsw i32 %939, %942
  store i32 %943, ptr %50, align 4, !tbaa !9
  %944 = load i32, ptr %55, align 4, !tbaa !9
  %945 = load i32, ptr %56, align 4, !tbaa !9
  %946 = load i32, ptr %45, align 4, !tbaa !9
  %947 = mul nsw i32 %945, %946
  %948 = add nsw i32 %944, %947
  store i32 %948, ptr %51, align 4, !tbaa !9
  %949 = load ptr, ptr %31, align 8, !tbaa !5
  %950 = load i32, ptr %50, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %struct.complex, ptr %949, i64 %951
  %953 = getelementptr inbounds %struct.complex, ptr %952, i32 0, i32 0
  %954 = load float, ptr %953, align 4, !tbaa !11
  %955 = load ptr, ptr %35, align 8, !tbaa !5
  %956 = load i32, ptr %51, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.complex, ptr %955, i64 %957
  %959 = getelementptr inbounds %struct.complex, ptr %958, i32 0, i32 0
  %960 = load float, ptr %959, align 4, !tbaa !11
  %961 = fsub float %954, %960
  %962 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %961, ptr %962, align 4, !tbaa !11
  %963 = load ptr, ptr %31, align 8, !tbaa !5
  %964 = load i32, ptr %50, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds %struct.complex, ptr %963, i64 %965
  %967 = getelementptr inbounds %struct.complex, ptr %966, i32 0, i32 1
  %968 = load float, ptr %967, align 4, !tbaa !14
  %969 = load ptr, ptr %35, align 8, !tbaa !5
  %970 = load i32, ptr %51, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.complex, ptr %969, i64 %971
  %973 = getelementptr inbounds %struct.complex, ptr %972, i32 0, i32 1
  %974 = load float, ptr %973, align 4, !tbaa !14
  %975 = fsub float %968, %974
  %976 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %975, ptr %976, align 4, !tbaa !14
  %977 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %978 = load float, ptr %977, align 4, !tbaa !11
  %979 = load ptr, ptr %31, align 8, !tbaa !5
  %980 = load i32, ptr %49, align 4, !tbaa !9
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds %struct.complex, ptr %979, i64 %981
  %983 = getelementptr inbounds %struct.complex, ptr %982, i32 0, i32 0
  store float %978, ptr %983, align 4, !tbaa !11
  %984 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %985 = load float, ptr %984, align 4, !tbaa !14
  %986 = load ptr, ptr %31, align 8, !tbaa !5
  %987 = load i32, ptr %49, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds %struct.complex, ptr %986, i64 %988
  %990 = getelementptr inbounds %struct.complex, ptr %989, i32 0, i32 1
  store float %985, ptr %990, align 4, !tbaa !14
  br label %991

991:                                              ; preds = %933
  %992 = load i32, ptr %55, align 4, !tbaa !9
  %993 = add nsw i32 %992, 1
  store i32 %993, ptr %55, align 4, !tbaa !9
  br label %929, !llvm.loop !28

994:                                              ; preds = %929
  br label %995

995:                                              ; preds = %994
  %996 = load i32, ptr %56, align 4, !tbaa !9
  %997 = add nsw i32 %996, 1
  store i32 %997, ptr %56, align 4, !tbaa !9
  br label %922, !llvm.loop !29

998:                                              ; preds = %922
  %999 = load ptr, ptr %24, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = load ptr, ptr %26, align 8, !tbaa !5
  %1002 = load i32, ptr %1001, align 4, !tbaa !9
  %1003 = sub nsw i32 %1000, %1002
  store i32 %1003, ptr %47, align 4, !tbaa !9
  %1004 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %1004, align 4, !tbaa !11
  %1005 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %1005, align 4, !tbaa !14
  %1006 = load ptr, ptr %23, align 8, !tbaa !5
  %1007 = load ptr, ptr %25, align 8, !tbaa !5
  %1008 = load ptr, ptr %35, align 8, !tbaa !5
  %1009 = load i32, ptr %46, align 4, !tbaa !9
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds %struct.complex, ptr %1008, i64 %1010
  %1012 = load ptr, ptr %36, align 8, !tbaa !5
  %1013 = load ptr, ptr %27, align 8, !tbaa !5
  %1014 = load i32, ptr %44, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds %struct.complex, ptr %1013, i64 %1015
  %1017 = load ptr, ptr %28, align 8, !tbaa !5
  %1018 = load ptr, ptr %33, align 8, !tbaa !5
  %1019 = load i32, ptr %40, align 4, !tbaa !9
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.complex, ptr %1018, i64 %1020
  %1022 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %1006, ptr noundef %47, ptr noundef %1007, ptr noundef %52, ptr noundef %1011, ptr noundef %1012, ptr noundef %1016, ptr noundef %1017, ptr noundef @c_b1, ptr noundef %1021, ptr noundef %1022)
  %1023 = load ptr, ptr %25, align 8, !tbaa !5
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = load ptr, ptr %26, align 8, !tbaa !5
  %1026 = load i32, ptr %1025, align 4, !tbaa !9
  %1027 = sub nsw i32 %1024, %1026
  store i32 %1027, ptr %47, align 4, !tbaa !9
  %1028 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %1028, align 4, !tbaa !11
  %1029 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %1029, align 4, !tbaa !14
  %1030 = load ptr, ptr %23, align 8, !tbaa !5
  %1031 = load ptr, ptr %26, align 8, !tbaa !5
  %1032 = load ptr, ptr %35, align 8, !tbaa !5
  %1033 = load i32, ptr %58, align 4, !tbaa !9
  %1034 = load i32, ptr %45, align 4, !tbaa !9
  %1035 = mul nsw i32 %1033, %1034
  %1036 = add nsw i32 %1035, 1
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1037
  %1039 = load ptr, ptr %36, align 8, !tbaa !5
  %1040 = load ptr, ptr %27, align 8, !tbaa !5
  %1041 = load i32, ptr %60, align 4, !tbaa !9
  %1042 = load i32, ptr %58, align 4, !tbaa !9
  %1043 = load i32, ptr %43, align 4, !tbaa !9
  %1044 = mul nsw i32 %1042, %1043
  %1045 = add nsw i32 %1041, %1044
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1046
  %1048 = load ptr, ptr %28, align 8, !tbaa !5
  %1049 = load ptr, ptr %33, align 8, !tbaa !5
  %1050 = load i32, ptr %60, align 4, !tbaa !9
  %1051 = load i32, ptr %39, align 4, !tbaa !9
  %1052 = mul nsw i32 %1050, %1051
  %1053 = add nsw i32 %1052, 1
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.complex, ptr %1049, i64 %1054
  %1056 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %1030, ptr noundef %1031, ptr noundef %47, ptr noundef %52, ptr noundef %1038, ptr noundef %1039, ptr noundef %1047, ptr noundef %1048, ptr noundef @c_b1, ptr noundef %1055, ptr noundef %1056)
  %1057 = load ptr, ptr %23, align 8, !tbaa !5
  %1058 = load ptr, ptr %26, align 8, !tbaa !5
  %1059 = load ptr, ptr %27, align 8, !tbaa !5
  %1060 = load i32, ptr %60, align 4, !tbaa !9
  %1061 = load i32, ptr %43, align 4, !tbaa !9
  %1062 = add nsw i32 %1060, %1061
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds %struct.complex, ptr %1059, i64 %1063
  %1065 = load ptr, ptr %28, align 8, !tbaa !5
  %1066 = load ptr, ptr %35, align 8, !tbaa !5
  %1067 = load i32, ptr %46, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds %struct.complex, ptr %1066, i64 %1068
  %1070 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %1057, ptr noundef %1058, ptr noundef @c_b1, ptr noundef %1064, ptr noundef %1065, ptr noundef %1069, ptr noundef %1070)
  %1071 = load ptr, ptr %26, align 8, !tbaa !5
  %1072 = load i32, ptr %1071, align 4, !tbaa !9
  store i32 %1072, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1073

1073:                                             ; preds = %1158, %998
  %1074 = load i32, ptr %56, align 4, !tbaa !9
  %1075 = load i32, ptr %47, align 4, !tbaa !9
  %1076 = icmp sle i32 %1074, %1075
  br i1 %1076, label %1077, label %1161

1077:                                             ; preds = %1073
  %1078 = load ptr, ptr %23, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  store i32 %1079, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1080

1080:                                             ; preds = %1154, %1077
  %1081 = load i32, ptr %55, align 4, !tbaa !9
  %1082 = load i32, ptr %48, align 4, !tbaa !9
  %1083 = icmp sle i32 %1081, %1082
  br i1 %1083, label %1084, label %1157

1084:                                             ; preds = %1080
  %1085 = load i32, ptr %55, align 4, !tbaa !9
  %1086 = load ptr, ptr %24, align 8, !tbaa !5
  %1087 = load i32, ptr %1086, align 4, !tbaa !9
  %1088 = load ptr, ptr %26, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = sub nsw i32 %1087, %1089
  %1091 = load i32, ptr %56, align 4, !tbaa !9
  %1092 = add nsw i32 %1090, %1091
  %1093 = load i32, ptr %39, align 4, !tbaa !9
  %1094 = mul nsw i32 %1092, %1093
  %1095 = add nsw i32 %1085, %1094
  store i32 %1095, ptr %49, align 4, !tbaa !9
  %1096 = load i32, ptr %55, align 4, !tbaa !9
  %1097 = load ptr, ptr %24, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  %1099 = load ptr, ptr %26, align 8, !tbaa !5
  %1100 = load i32, ptr %1099, align 4, !tbaa !9
  %1101 = sub nsw i32 %1098, %1100
  %1102 = load i32, ptr %56, align 4, !tbaa !9
  %1103 = add nsw i32 %1101, %1102
  %1104 = load i32, ptr %39, align 4, !tbaa !9
  %1105 = mul nsw i32 %1103, %1104
  %1106 = add nsw i32 %1096, %1105
  store i32 %1106, ptr %50, align 4, !tbaa !9
  %1107 = load i32, ptr %55, align 4, !tbaa !9
  %1108 = load i32, ptr %56, align 4, !tbaa !9
  %1109 = load i32, ptr %45, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = add nsw i32 %1107, %1110
  store i32 %1111, ptr %51, align 4, !tbaa !9
  %1112 = load ptr, ptr %33, align 8, !tbaa !5
  %1113 = load i32, ptr %50, align 4, !tbaa !9
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds %struct.complex, ptr %1112, i64 %1114
  %1116 = getelementptr inbounds %struct.complex, ptr %1115, i32 0, i32 0
  %1117 = load float, ptr %1116, align 4, !tbaa !11
  %1118 = load ptr, ptr %35, align 8, !tbaa !5
  %1119 = load i32, ptr %51, align 4, !tbaa !9
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds %struct.complex, ptr %1118, i64 %1120
  %1122 = getelementptr inbounds %struct.complex, ptr %1121, i32 0, i32 0
  %1123 = load float, ptr %1122, align 4, !tbaa !11
  %1124 = fsub float %1117, %1123
  %1125 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1124, ptr %1125, align 4, !tbaa !11
  %1126 = load ptr, ptr %33, align 8, !tbaa !5
  %1127 = load i32, ptr %50, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds %struct.complex, ptr %1126, i64 %1128
  %1130 = getelementptr inbounds %struct.complex, ptr %1129, i32 0, i32 1
  %1131 = load float, ptr %1130, align 4, !tbaa !14
  %1132 = load ptr, ptr %35, align 8, !tbaa !5
  %1133 = load i32, ptr %51, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds %struct.complex, ptr %1132, i64 %1134
  %1136 = getelementptr inbounds %struct.complex, ptr %1135, i32 0, i32 1
  %1137 = load float, ptr %1136, align 4, !tbaa !14
  %1138 = fsub float %1131, %1137
  %1139 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1138, ptr %1139, align 4, !tbaa !14
  %1140 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1141 = load float, ptr %1140, align 4, !tbaa !11
  %1142 = load ptr, ptr %33, align 8, !tbaa !5
  %1143 = load i32, ptr %49, align 4, !tbaa !9
  %1144 = sext i32 %1143 to i64
  %1145 = getelementptr inbounds %struct.complex, ptr %1142, i64 %1144
  %1146 = getelementptr inbounds %struct.complex, ptr %1145, i32 0, i32 0
  store float %1141, ptr %1146, align 4, !tbaa !11
  %1147 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1148 = load float, ptr %1147, align 4, !tbaa !14
  %1149 = load ptr, ptr %33, align 8, !tbaa !5
  %1150 = load i32, ptr %49, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds %struct.complex, ptr %1149, i64 %1151
  %1153 = getelementptr inbounds %struct.complex, ptr %1152, i32 0, i32 1
  store float %1148, ptr %1153, align 4, !tbaa !14
  br label %1154

1154:                                             ; preds = %1084
  %1155 = load i32, ptr %55, align 4, !tbaa !9
  %1156 = add nsw i32 %1155, 1
  store i32 %1156, ptr %55, align 4, !tbaa !9
  br label %1080, !llvm.loop !30

1157:                                             ; preds = %1080
  br label %1158

1158:                                             ; preds = %1157
  %1159 = load i32, ptr %56, align 4, !tbaa !9
  %1160 = add nsw i32 %1159, 1
  store i32 %1160, ptr %56, align 4, !tbaa !9
  br label %1073, !llvm.loop !31

1161:                                             ; preds = %1073
  br label %4153

1162:                                             ; preds = %669, %666, %663
  %1163 = load i32, ptr %61, align 4, !tbaa !9
  %1164 = icmp ne i32 %1163, 0
  br i1 %1164, label %1165, label %1657

1165:                                             ; preds = %1162
  %1166 = load i32, ptr %54, align 4, !tbaa !9
  %1167 = icmp ne i32 %1166, 0
  br i1 %1167, label %1168, label %1657

1168:                                             ; preds = %1165
  %1169 = load i32, ptr %53, align 4, !tbaa !9
  %1170 = icmp ne i32 %1169, 0
  br i1 %1170, label %1171, label %1657

1171:                                             ; preds = %1168
  %1172 = load ptr, ptr %26, align 8, !tbaa !5
  %1173 = load i32, ptr %1172, align 4, !tbaa !9
  %1174 = add nsw i32 %1173, 1
  store i32 %1174, ptr %47, align 4, !tbaa !9
  %1175 = load i32, ptr %47, align 4, !tbaa !9
  %1176 = load ptr, ptr %23, align 8, !tbaa !5
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = icmp sle i32 %1175, %1177
  br i1 %1178, label %1179, label %1181

1179:                                             ; preds = %1171
  %1180 = load i32, ptr %47, align 4, !tbaa !9
  br label %1184

1181:                                             ; preds = %1171
  %1182 = load ptr, ptr %23, align 8, !tbaa !5
  %1183 = load i32, ptr %1182, align 4, !tbaa !9
  br label %1184

1184:                                             ; preds = %1181, %1179
  %1185 = phi i32 [ %1180, %1179 ], [ %1183, %1181 ]
  store i32 %1185, ptr %59, align 4, !tbaa !9
  %1186 = load ptr, ptr %25, align 8, !tbaa !5
  %1187 = load i32, ptr %1186, align 4, !tbaa !9
  %1188 = load ptr, ptr %26, align 8, !tbaa !5
  %1189 = load i32, ptr %1188, align 4, !tbaa !9
  %1190 = sub nsw i32 %1187, %1189
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr %47, align 4, !tbaa !9
  %1192 = load i32, ptr %47, align 4, !tbaa !9
  %1193 = load ptr, ptr %25, align 8, !tbaa !5
  %1194 = load i32, ptr %1193, align 4, !tbaa !9
  %1195 = icmp sle i32 %1192, %1194
  br i1 %1195, label %1196, label %1198

1196:                                             ; preds = %1184
  %1197 = load i32, ptr %47, align 4, !tbaa !9
  br label %1201

1198:                                             ; preds = %1184
  %1199 = load ptr, ptr %25, align 8, !tbaa !5
  %1200 = load i32, ptr %1199, align 4, !tbaa !9
  br label %1201

1201:                                             ; preds = %1198, %1196
  %1202 = phi i32 [ %1197, %1196 ], [ %1200, %1198 ]
  store i32 %1202, ptr %58, align 4, !tbaa !9
  %1203 = load ptr, ptr %24, align 8, !tbaa !5
  %1204 = load i32, ptr %1203, align 4, !tbaa !9
  store i32 %1204, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1205

1205:                                             ; preds = %1259, %1201
  %1206 = load i32, ptr %56, align 4, !tbaa !9
  %1207 = load i32, ptr %47, align 4, !tbaa !9
  %1208 = icmp sle i32 %1206, %1207
  br i1 %1208, label %1209, label %1262

1209:                                             ; preds = %1205
  %1210 = load ptr, ptr %26, align 8, !tbaa !5
  %1211 = load i32, ptr %1210, align 4, !tbaa !9
  store i32 %1211, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1212

1212:                                             ; preds = %1255, %1209
  %1213 = load i32, ptr %55, align 4, !tbaa !9
  %1214 = load i32, ptr %48, align 4, !tbaa !9
  %1215 = icmp sle i32 %1213, %1214
  br i1 %1215, label %1216, label %1258

1216:                                             ; preds = %1212
  %1217 = load ptr, ptr %25, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = load ptr, ptr %26, align 8, !tbaa !5
  %1220 = load i32, ptr %1219, align 4, !tbaa !9
  %1221 = sub nsw i32 %1218, %1220
  %1222 = load i32, ptr %55, align 4, !tbaa !9
  %1223 = add nsw i32 %1221, %1222
  %1224 = load i32, ptr %56, align 4, !tbaa !9
  %1225 = load i32, ptr %45, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1223, %1226
  store i32 %1227, ptr %49, align 4, !tbaa !9
  %1228 = load i32, ptr %55, align 4, !tbaa !9
  %1229 = load i32, ptr %56, align 4, !tbaa !9
  %1230 = load i32, ptr %39, align 4, !tbaa !9
  %1231 = mul nsw i32 %1229, %1230
  %1232 = add nsw i32 %1228, %1231
  store i32 %1232, ptr %50, align 4, !tbaa !9
  %1233 = load ptr, ptr %33, align 8, !tbaa !5
  %1234 = load i32, ptr %50, align 4, !tbaa !9
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds %struct.complex, ptr %1233, i64 %1235
  %1237 = getelementptr inbounds %struct.complex, ptr %1236, i32 0, i32 0
  %1238 = load float, ptr %1237, align 4, !tbaa !11
  %1239 = load ptr, ptr %35, align 8, !tbaa !5
  %1240 = load i32, ptr %49, align 4, !tbaa !9
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds %struct.complex, ptr %1239, i64 %1241
  %1243 = getelementptr inbounds %struct.complex, ptr %1242, i32 0, i32 0
  store float %1238, ptr %1243, align 4, !tbaa !11
  %1244 = load ptr, ptr %33, align 8, !tbaa !5
  %1245 = load i32, ptr %50, align 4, !tbaa !9
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds %struct.complex, ptr %1244, i64 %1246
  %1248 = getelementptr inbounds %struct.complex, ptr %1247, i32 0, i32 1
  %1249 = load float, ptr %1248, align 4, !tbaa !14
  %1250 = load ptr, ptr %35, align 8, !tbaa !5
  %1251 = load i32, ptr %49, align 4, !tbaa !9
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds %struct.complex, ptr %1250, i64 %1252
  %1254 = getelementptr inbounds %struct.complex, ptr %1253, i32 0, i32 1
  store float %1249, ptr %1254, align 4, !tbaa !14
  br label %1255

1255:                                             ; preds = %1216
  %1256 = load i32, ptr %55, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %55, align 4, !tbaa !9
  br label %1212, !llvm.loop !32

1258:                                             ; preds = %1212
  br label %1259

1259:                                             ; preds = %1258
  %1260 = load i32, ptr %56, align 4, !tbaa !9
  %1261 = add nsw i32 %1260, 1
  store i32 %1261, ptr %56, align 4, !tbaa !9
  br label %1205, !llvm.loop !33

1262:                                             ; preds = %1205
  %1263 = load ptr, ptr %26, align 8, !tbaa !5
  %1264 = load ptr, ptr %24, align 8, !tbaa !5
  %1265 = load ptr, ptr %27, align 8, !tbaa !5
  %1266 = load i32, ptr %58, align 4, !tbaa !9
  %1267 = load i32, ptr %43, align 4, !tbaa !9
  %1268 = mul nsw i32 %1266, %1267
  %1269 = add nsw i32 %1268, 1
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds %struct.complex, ptr %1265, i64 %1270
  %1272 = load ptr, ptr %28, align 8, !tbaa !5
  %1273 = load ptr, ptr %35, align 8, !tbaa !5
  %1274 = load i32, ptr %58, align 4, !tbaa !9
  %1275 = load i32, ptr %45, align 4, !tbaa !9
  %1276 = add nsw i32 %1274, %1275
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds %struct.complex, ptr %1273, i64 %1277
  %1279 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %1263, ptr noundef %1264, ptr noundef @c_b1, ptr noundef %1271, ptr noundef %1272, ptr noundef %1278, ptr noundef %1279)
  %1280 = load ptr, ptr %23, align 8, !tbaa !5
  %1281 = load i32, ptr %1280, align 4, !tbaa !9
  %1282 = load ptr, ptr %26, align 8, !tbaa !5
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = sub nsw i32 %1281, %1283
  store i32 %1284, ptr %47, align 4, !tbaa !9
  %1285 = load ptr, ptr %26, align 8, !tbaa !5
  %1286 = load ptr, ptr %24, align 8, !tbaa !5
  %1287 = load ptr, ptr %27, align 8, !tbaa !5
  %1288 = load i32, ptr %59, align 4, !tbaa !9
  %1289 = load i32, ptr %58, align 4, !tbaa !9
  %1290 = load i32, ptr %43, align 4, !tbaa !9
  %1291 = mul nsw i32 %1289, %1290
  %1292 = add nsw i32 %1288, %1291
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds %struct.complex, ptr %1287, i64 %1293
  %1295 = load ptr, ptr %28, align 8, !tbaa !5
  %1296 = load ptr, ptr %33, align 8, !tbaa !5
  %1297 = load i32, ptr %59, align 4, !tbaa !9
  %1298 = load i32, ptr %39, align 4, !tbaa !9
  %1299 = add nsw i32 %1297, %1298
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds %struct.complex, ptr %1296, i64 %1300
  %1302 = load ptr, ptr %34, align 8, !tbaa !5
  %1303 = load ptr, ptr %35, align 8, !tbaa !5
  %1304 = load i32, ptr %58, align 4, !tbaa !9
  %1305 = load i32, ptr %45, align 4, !tbaa !9
  %1306 = add nsw i32 %1304, %1305
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds %struct.complex, ptr %1303, i64 %1307
  %1309 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %1285, ptr noundef %1286, ptr noundef %47, ptr noundef @c_b1, ptr noundef %1294, ptr noundef %1295, ptr noundef %1301, ptr noundef %1302, ptr noundef @c_b1, ptr noundef %1308, ptr noundef %1309)
  %1310 = load ptr, ptr %25, align 8, !tbaa !5
  %1311 = load i32, ptr %1310, align 4, !tbaa !9
  %1312 = load ptr, ptr %26, align 8, !tbaa !5
  %1313 = load i32, ptr %1312, align 4, !tbaa !9
  %1314 = sub nsw i32 %1311, %1313
  store i32 %1314, ptr %47, align 4, !tbaa !9
  %1315 = load ptr, ptr %24, align 8, !tbaa !5
  %1316 = load ptr, ptr %23, align 8, !tbaa !5
  %1317 = load ptr, ptr %27, align 8, !tbaa !5
  %1318 = load i32, ptr %44, align 4, !tbaa !9
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds %struct.complex, ptr %1317, i64 %1319
  %1321 = load ptr, ptr %28, align 8, !tbaa !5
  %1322 = load ptr, ptr %33, align 8, !tbaa !5
  %1323 = load i32, ptr %40, align 4, !tbaa !9
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds %struct.complex, ptr %1322, i64 %1324
  %1326 = load ptr, ptr %34, align 8, !tbaa !5
  %1327 = load ptr, ptr %35, align 8, !tbaa !5
  %1328 = load i32, ptr %46, align 4, !tbaa !9
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds %struct.complex, ptr %1327, i64 %1329
  %1331 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %47, ptr noundef %1315, ptr noundef %1316, ptr noundef @c_b1, ptr noundef %1320, ptr noundef %1321, ptr noundef %1325, ptr noundef %1326, ptr noundef @c_b2, ptr noundef %1330, ptr noundef %1331)
  %1332 = load ptr, ptr %24, align 8, !tbaa !5
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  store i32 %1333, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1334

1334:                                             ; preds = %1407, %1262
  %1335 = load i32, ptr %56, align 4, !tbaa !9
  %1336 = load i32, ptr %47, align 4, !tbaa !9
  %1337 = icmp sle i32 %1335, %1336
  br i1 %1337, label %1338, label %1410

1338:                                             ; preds = %1334
  %1339 = load ptr, ptr %25, align 8, !tbaa !5
  %1340 = load i32, ptr %1339, align 4, !tbaa !9
  store i32 %1340, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1341

1341:                                             ; preds = %1403, %1338
  %1342 = load i32, ptr %55, align 4, !tbaa !9
  %1343 = load i32, ptr %48, align 4, !tbaa !9
  %1344 = icmp sle i32 %1342, %1343
  br i1 %1344, label %1345, label %1406

1345:                                             ; preds = %1341
  %1346 = load i32, ptr %55, align 4, !tbaa !9
  %1347 = load i32, ptr %56, align 4, !tbaa !9
  %1348 = load i32, ptr %45, align 4, !tbaa !9
  %1349 = mul nsw i32 %1347, %1348
  %1350 = add nsw i32 %1346, %1349
  store i32 %1350, ptr %49, align 4, !tbaa !9
  %1351 = load i32, ptr %55, align 4, !tbaa !9
  %1352 = load i32, ptr %56, align 4, !tbaa !9
  %1353 = load i32, ptr %45, align 4, !tbaa !9
  %1354 = mul nsw i32 %1352, %1353
  %1355 = add nsw i32 %1351, %1354
  store i32 %1355, ptr %50, align 4, !tbaa !9
  %1356 = load i32, ptr %55, align 4, !tbaa !9
  %1357 = load i32, ptr %56, align 4, !tbaa !9
  %1358 = load i32, ptr %37, align 4, !tbaa !9
  %1359 = mul nsw i32 %1357, %1358
  %1360 = add nsw i32 %1356, %1359
  store i32 %1360, ptr %51, align 4, !tbaa !9
  %1361 = load ptr, ptr %35, align 8, !tbaa !5
  %1362 = load i32, ptr %50, align 4, !tbaa !9
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1363
  %1365 = getelementptr inbounds %struct.complex, ptr %1364, i32 0, i32 0
  %1366 = load float, ptr %1365, align 4, !tbaa !11
  %1367 = load ptr, ptr %31, align 8, !tbaa !5
  %1368 = load i32, ptr %51, align 4, !tbaa !9
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds %struct.complex, ptr %1367, i64 %1369
  %1371 = getelementptr inbounds %struct.complex, ptr %1370, i32 0, i32 0
  %1372 = load float, ptr %1371, align 4, !tbaa !11
  %1373 = fadd float %1366, %1372
  %1374 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1373, ptr %1374, align 4, !tbaa !11
  %1375 = load ptr, ptr %35, align 8, !tbaa !5
  %1376 = load i32, ptr %50, align 4, !tbaa !9
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds %struct.complex, ptr %1375, i64 %1377
  %1379 = getelementptr inbounds %struct.complex, ptr %1378, i32 0, i32 1
  %1380 = load float, ptr %1379, align 4, !tbaa !14
  %1381 = load ptr, ptr %31, align 8, !tbaa !5
  %1382 = load i32, ptr %51, align 4, !tbaa !9
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds %struct.complex, ptr %1381, i64 %1383
  %1385 = getelementptr inbounds %struct.complex, ptr %1384, i32 0, i32 1
  %1386 = load float, ptr %1385, align 4, !tbaa !14
  %1387 = fadd float %1380, %1386
  %1388 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1387, ptr %1388, align 4, !tbaa !14
  %1389 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1390 = load float, ptr %1389, align 4, !tbaa !11
  %1391 = load ptr, ptr %35, align 8, !tbaa !5
  %1392 = load i32, ptr %49, align 4, !tbaa !9
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds %struct.complex, ptr %1391, i64 %1393
  %1395 = getelementptr inbounds %struct.complex, ptr %1394, i32 0, i32 0
  store float %1390, ptr %1395, align 4, !tbaa !11
  %1396 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1397 = load float, ptr %1396, align 4, !tbaa !14
  %1398 = load ptr, ptr %35, align 8, !tbaa !5
  %1399 = load i32, ptr %49, align 4, !tbaa !9
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds %struct.complex, ptr %1398, i64 %1400
  %1402 = getelementptr inbounds %struct.complex, ptr %1401, i32 0, i32 1
  store float %1397, ptr %1402, align 4, !tbaa !14
  br label %1403

1403:                                             ; preds = %1345
  %1404 = load i32, ptr %55, align 4, !tbaa !9
  %1405 = add nsw i32 %1404, 1
  store i32 %1405, ptr %55, align 4, !tbaa !9
  br label %1341, !llvm.loop !34

1406:                                             ; preds = %1341
  br label %1407

1407:                                             ; preds = %1406
  %1408 = load i32, ptr %56, align 4, !tbaa !9
  %1409 = add nsw i32 %1408, 1
  store i32 %1409, ptr %56, align 4, !tbaa !9
  br label %1334, !llvm.loop !35

1410:                                             ; preds = %1334
  %1411 = load ptr, ptr %20, align 8, !tbaa !5
  %1412 = load ptr, ptr %25, align 8, !tbaa !5
  %1413 = load ptr, ptr %24, align 8, !tbaa !5
  %1414 = load ptr, ptr %29, align 8, !tbaa !5
  %1415 = load i32, ptr %42, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds %struct.complex, ptr %1414, i64 %1416
  %1418 = load ptr, ptr %30, align 8, !tbaa !5
  %1419 = load ptr, ptr %35, align 8, !tbaa !5
  %1420 = load i32, ptr %46, align 4, !tbaa !9
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds %struct.complex, ptr %1419, i64 %1421
  %1423 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef %1411, ptr noundef @.str.6, ptr noundef %1412, ptr noundef %1413, ptr noundef @c_b1, ptr noundef %1417, ptr noundef %1418, ptr noundef %1422, ptr noundef %1423)
  %1424 = load ptr, ptr %24, align 8, !tbaa !5
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  store i32 %1425, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1426

1426:                                             ; preds = %1499, %1410
  %1427 = load i32, ptr %56, align 4, !tbaa !9
  %1428 = load i32, ptr %47, align 4, !tbaa !9
  %1429 = icmp sle i32 %1427, %1428
  br i1 %1429, label %1430, label %1502

1430:                                             ; preds = %1426
  %1431 = load ptr, ptr %25, align 8, !tbaa !5
  %1432 = load i32, ptr %1431, align 4, !tbaa !9
  store i32 %1432, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1433

1433:                                             ; preds = %1495, %1430
  %1434 = load i32, ptr %55, align 4, !tbaa !9
  %1435 = load i32, ptr %48, align 4, !tbaa !9
  %1436 = icmp sle i32 %1434, %1435
  br i1 %1436, label %1437, label %1498

1437:                                             ; preds = %1433
  %1438 = load i32, ptr %55, align 4, !tbaa !9
  %1439 = load i32, ptr %56, align 4, !tbaa !9
  %1440 = load i32, ptr %37, align 4, !tbaa !9
  %1441 = mul nsw i32 %1439, %1440
  %1442 = add nsw i32 %1438, %1441
  store i32 %1442, ptr %49, align 4, !tbaa !9
  %1443 = load i32, ptr %55, align 4, !tbaa !9
  %1444 = load i32, ptr %56, align 4, !tbaa !9
  %1445 = load i32, ptr %37, align 4, !tbaa !9
  %1446 = mul nsw i32 %1444, %1445
  %1447 = add nsw i32 %1443, %1446
  store i32 %1447, ptr %50, align 4, !tbaa !9
  %1448 = load i32, ptr %55, align 4, !tbaa !9
  %1449 = load i32, ptr %56, align 4, !tbaa !9
  %1450 = load i32, ptr %45, align 4, !tbaa !9
  %1451 = mul nsw i32 %1449, %1450
  %1452 = add nsw i32 %1448, %1451
  store i32 %1452, ptr %51, align 4, !tbaa !9
  %1453 = load ptr, ptr %31, align 8, !tbaa !5
  %1454 = load i32, ptr %50, align 4, !tbaa !9
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds %struct.complex, ptr %1453, i64 %1455
  %1457 = getelementptr inbounds %struct.complex, ptr %1456, i32 0, i32 0
  %1458 = load float, ptr %1457, align 4, !tbaa !11
  %1459 = load ptr, ptr %35, align 8, !tbaa !5
  %1460 = load i32, ptr %51, align 4, !tbaa !9
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds %struct.complex, ptr %1459, i64 %1461
  %1463 = getelementptr inbounds %struct.complex, ptr %1462, i32 0, i32 0
  %1464 = load float, ptr %1463, align 4, !tbaa !11
  %1465 = fsub float %1458, %1464
  %1466 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1465, ptr %1466, align 4, !tbaa !11
  %1467 = load ptr, ptr %31, align 8, !tbaa !5
  %1468 = load i32, ptr %50, align 4, !tbaa !9
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds %struct.complex, ptr %1467, i64 %1469
  %1471 = getelementptr inbounds %struct.complex, ptr %1470, i32 0, i32 1
  %1472 = load float, ptr %1471, align 4, !tbaa !14
  %1473 = load ptr, ptr %35, align 8, !tbaa !5
  %1474 = load i32, ptr %51, align 4, !tbaa !9
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds %struct.complex, ptr %1473, i64 %1475
  %1477 = getelementptr inbounds %struct.complex, ptr %1476, i32 0, i32 1
  %1478 = load float, ptr %1477, align 4, !tbaa !14
  %1479 = fsub float %1472, %1478
  %1480 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1479, ptr %1480, align 4, !tbaa !14
  %1481 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1482 = load float, ptr %1481, align 4, !tbaa !11
  %1483 = load ptr, ptr %31, align 8, !tbaa !5
  %1484 = load i32, ptr %49, align 4, !tbaa !9
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds %struct.complex, ptr %1483, i64 %1485
  %1487 = getelementptr inbounds %struct.complex, ptr %1486, i32 0, i32 0
  store float %1482, ptr %1487, align 4, !tbaa !11
  %1488 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1489 = load float, ptr %1488, align 4, !tbaa !14
  %1490 = load ptr, ptr %31, align 8, !tbaa !5
  %1491 = load i32, ptr %49, align 4, !tbaa !9
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds %struct.complex, ptr %1490, i64 %1492
  %1494 = getelementptr inbounds %struct.complex, ptr %1493, i32 0, i32 1
  store float %1489, ptr %1494, align 4, !tbaa !14
  br label %1495

1495:                                             ; preds = %1437
  %1496 = load i32, ptr %55, align 4, !tbaa !9
  %1497 = add nsw i32 %1496, 1
  store i32 %1497, ptr %55, align 4, !tbaa !9
  br label %1433, !llvm.loop !36

1498:                                             ; preds = %1433
  br label %1499

1499:                                             ; preds = %1498
  %1500 = load i32, ptr %56, align 4, !tbaa !9
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr %56, align 4, !tbaa !9
  br label %1426, !llvm.loop !37

1502:                                             ; preds = %1426
  %1503 = load ptr, ptr %23, align 8, !tbaa !5
  %1504 = load i32, ptr %1503, align 4, !tbaa !9
  %1505 = load ptr, ptr %26, align 8, !tbaa !5
  %1506 = load i32, ptr %1505, align 4, !tbaa !9
  %1507 = sub nsw i32 %1504, %1506
  store i32 %1507, ptr %47, align 4, !tbaa !9
  %1508 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %1508, align 4, !tbaa !11
  %1509 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %1509, align 4, !tbaa !14
  %1510 = load ptr, ptr %24, align 8, !tbaa !5
  %1511 = load ptr, ptr %25, align 8, !tbaa !5
  %1512 = load ptr, ptr %27, align 8, !tbaa !5
  %1513 = load i32, ptr %59, align 4, !tbaa !9
  %1514 = load i32, ptr %43, align 4, !tbaa !9
  %1515 = add nsw i32 %1513, %1514
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds %struct.complex, ptr %1512, i64 %1516
  %1518 = load ptr, ptr %28, align 8, !tbaa !5
  %1519 = load ptr, ptr %35, align 8, !tbaa !5
  %1520 = load i32, ptr %46, align 4, !tbaa !9
  %1521 = sext i32 %1520 to i64
  %1522 = getelementptr inbounds %struct.complex, ptr %1519, i64 %1521
  %1523 = load ptr, ptr %36, align 8, !tbaa !5
  %1524 = load ptr, ptr %33, align 8, !tbaa !5
  %1525 = load i32, ptr %59, align 4, !tbaa !9
  %1526 = load i32, ptr %39, align 4, !tbaa !9
  %1527 = add nsw i32 %1525, %1526
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds %struct.complex, ptr %1524, i64 %1528
  %1530 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %47, ptr noundef %1510, ptr noundef %1511, ptr noundef %52, ptr noundef %1517, ptr noundef %1518, ptr noundef %1522, ptr noundef %1523, ptr noundef @c_b1, ptr noundef %1529, ptr noundef %1530)
  %1531 = load ptr, ptr %25, align 8, !tbaa !5
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = load ptr, ptr %26, align 8, !tbaa !5
  %1534 = load i32, ptr %1533, align 4, !tbaa !9
  %1535 = sub nsw i32 %1532, %1534
  store i32 %1535, ptr %47, align 4, !tbaa !9
  %1536 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %1536, align 4, !tbaa !11
  %1537 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %1537, align 4, !tbaa !14
  %1538 = load ptr, ptr %26, align 8, !tbaa !5
  %1539 = load ptr, ptr %24, align 8, !tbaa !5
  %1540 = load ptr, ptr %27, align 8, !tbaa !5
  %1541 = load i32, ptr %44, align 4, !tbaa !9
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds %struct.complex, ptr %1540, i64 %1542
  %1544 = load ptr, ptr %28, align 8, !tbaa !5
  %1545 = load ptr, ptr %35, align 8, !tbaa !5
  %1546 = load i32, ptr %46, align 4, !tbaa !9
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds %struct.complex, ptr %1545, i64 %1547
  %1549 = load ptr, ptr %36, align 8, !tbaa !5
  %1550 = load ptr, ptr %33, align 8, !tbaa !5
  %1551 = load i32, ptr %40, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds %struct.complex, ptr %1550, i64 %1552
  %1554 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1538, ptr noundef %1539, ptr noundef %47, ptr noundef %52, ptr noundef %1543, ptr noundef %1544, ptr noundef %1548, ptr noundef %1549, ptr noundef @c_b1, ptr noundef %1553, ptr noundef %1554)
  %1555 = load ptr, ptr %26, align 8, !tbaa !5
  %1556 = load ptr, ptr %24, align 8, !tbaa !5
  %1557 = load ptr, ptr %27, align 8, !tbaa !5
  %1558 = load i32, ptr %58, align 4, !tbaa !9
  %1559 = load i32, ptr %43, align 4, !tbaa !9
  %1560 = mul nsw i32 %1558, %1559
  %1561 = add nsw i32 %1560, 1
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds %struct.complex, ptr %1557, i64 %1562
  %1564 = load ptr, ptr %28, align 8, !tbaa !5
  %1565 = load ptr, ptr %35, align 8, !tbaa !5
  %1566 = load i32, ptr %58, align 4, !tbaa !9
  %1567 = load i32, ptr %45, align 4, !tbaa !9
  %1568 = add nsw i32 %1566, %1567
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds %struct.complex, ptr %1565, i64 %1569
  %1571 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1555, ptr noundef %1556, ptr noundef @c_b1, ptr noundef %1563, ptr noundef %1564, ptr noundef %1570, ptr noundef %1571)
  %1572 = load ptr, ptr %24, align 8, !tbaa !5
  %1573 = load i32, ptr %1572, align 4, !tbaa !9
  store i32 %1573, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1574

1574:                                             ; preds = %1653, %1502
  %1575 = load i32, ptr %56, align 4, !tbaa !9
  %1576 = load i32, ptr %47, align 4, !tbaa !9
  %1577 = icmp sle i32 %1575, %1576
  br i1 %1577, label %1578, label %1656

1578:                                             ; preds = %1574
  %1579 = load ptr, ptr %26, align 8, !tbaa !5
  %1580 = load i32, ptr %1579, align 4, !tbaa !9
  store i32 %1580, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1581

1581:                                             ; preds = %1649, %1578
  %1582 = load i32, ptr %55, align 4, !tbaa !9
  %1583 = load i32, ptr %48, align 4, !tbaa !9
  %1584 = icmp sle i32 %1582, %1583
  br i1 %1584, label %1585, label %1652

1585:                                             ; preds = %1581
  %1586 = load i32, ptr %55, align 4, !tbaa !9
  %1587 = load i32, ptr %56, align 4, !tbaa !9
  %1588 = load i32, ptr %39, align 4, !tbaa !9
  %1589 = mul nsw i32 %1587, %1588
  %1590 = add nsw i32 %1586, %1589
  store i32 %1590, ptr %49, align 4, !tbaa !9
  %1591 = load i32, ptr %55, align 4, !tbaa !9
  %1592 = load i32, ptr %56, align 4, !tbaa !9
  %1593 = load i32, ptr %39, align 4, !tbaa !9
  %1594 = mul nsw i32 %1592, %1593
  %1595 = add nsw i32 %1591, %1594
  store i32 %1595, ptr %50, align 4, !tbaa !9
  %1596 = load ptr, ptr %25, align 8, !tbaa !5
  %1597 = load i32, ptr %1596, align 4, !tbaa !9
  %1598 = load ptr, ptr %26, align 8, !tbaa !5
  %1599 = load i32, ptr %1598, align 4, !tbaa !9
  %1600 = sub nsw i32 %1597, %1599
  %1601 = load i32, ptr %55, align 4, !tbaa !9
  %1602 = add nsw i32 %1600, %1601
  %1603 = load i32, ptr %56, align 4, !tbaa !9
  %1604 = load i32, ptr %45, align 4, !tbaa !9
  %1605 = mul nsw i32 %1603, %1604
  %1606 = add nsw i32 %1602, %1605
  store i32 %1606, ptr %51, align 4, !tbaa !9
  %1607 = load ptr, ptr %33, align 8, !tbaa !5
  %1608 = load i32, ptr %50, align 4, !tbaa !9
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds %struct.complex, ptr %1607, i64 %1609
  %1611 = getelementptr inbounds %struct.complex, ptr %1610, i32 0, i32 0
  %1612 = load float, ptr %1611, align 4, !tbaa !11
  %1613 = load ptr, ptr %35, align 8, !tbaa !5
  %1614 = load i32, ptr %51, align 4, !tbaa !9
  %1615 = sext i32 %1614 to i64
  %1616 = getelementptr inbounds %struct.complex, ptr %1613, i64 %1615
  %1617 = getelementptr inbounds %struct.complex, ptr %1616, i32 0, i32 0
  %1618 = load float, ptr %1617, align 4, !tbaa !11
  %1619 = fsub float %1612, %1618
  %1620 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1619, ptr %1620, align 4, !tbaa !11
  %1621 = load ptr, ptr %33, align 8, !tbaa !5
  %1622 = load i32, ptr %50, align 4, !tbaa !9
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds %struct.complex, ptr %1621, i64 %1623
  %1625 = getelementptr inbounds %struct.complex, ptr %1624, i32 0, i32 1
  %1626 = load float, ptr %1625, align 4, !tbaa !14
  %1627 = load ptr, ptr %35, align 8, !tbaa !5
  %1628 = load i32, ptr %51, align 4, !tbaa !9
  %1629 = sext i32 %1628 to i64
  %1630 = getelementptr inbounds %struct.complex, ptr %1627, i64 %1629
  %1631 = getelementptr inbounds %struct.complex, ptr %1630, i32 0, i32 1
  %1632 = load float, ptr %1631, align 4, !tbaa !14
  %1633 = fsub float %1626, %1632
  %1634 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1633, ptr %1634, align 4, !tbaa !14
  %1635 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1636 = load float, ptr %1635, align 4, !tbaa !11
  %1637 = load ptr, ptr %33, align 8, !tbaa !5
  %1638 = load i32, ptr %49, align 4, !tbaa !9
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds %struct.complex, ptr %1637, i64 %1639
  %1641 = getelementptr inbounds %struct.complex, ptr %1640, i32 0, i32 0
  store float %1636, ptr %1641, align 4, !tbaa !11
  %1642 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1643 = load float, ptr %1642, align 4, !tbaa !14
  %1644 = load ptr, ptr %33, align 8, !tbaa !5
  %1645 = load i32, ptr %49, align 4, !tbaa !9
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds %struct.complex, ptr %1644, i64 %1646
  %1648 = getelementptr inbounds %struct.complex, ptr %1647, i32 0, i32 1
  store float %1643, ptr %1648, align 4, !tbaa !14
  br label %1649

1649:                                             ; preds = %1585
  %1650 = load i32, ptr %55, align 4, !tbaa !9
  %1651 = add nsw i32 %1650, 1
  store i32 %1651, ptr %55, align 4, !tbaa !9
  br label %1581, !llvm.loop !38

1652:                                             ; preds = %1581
  br label %1653

1653:                                             ; preds = %1652
  %1654 = load i32, ptr %56, align 4, !tbaa !9
  %1655 = add nsw i32 %1654, 1
  store i32 %1655, ptr %56, align 4, !tbaa !9
  br label %1574, !llvm.loop !39

1656:                                             ; preds = %1574
  br label %4152

1657:                                             ; preds = %1168, %1165, %1162
  %1658 = load i32, ptr %61, align 4, !tbaa !9
  %1659 = icmp ne i32 %1658, 0
  br i1 %1659, label %1660, label %2157

1660:                                             ; preds = %1657
  %1661 = load i32, ptr %54, align 4, !tbaa !9
  %1662 = icmp ne i32 %1661, 0
  br i1 %1662, label %1663, label %2157

1663:                                             ; preds = %1660
  %1664 = load i32, ptr %57, align 4, !tbaa !9
  %1665 = icmp ne i32 %1664, 0
  br i1 %1665, label %1666, label %2157

1666:                                             ; preds = %1663
  %1667 = load ptr, ptr %26, align 8, !tbaa !5
  %1668 = load i32, ptr %1667, align 4, !tbaa !9
  %1669 = add nsw i32 %1668, 1
  store i32 %1669, ptr %47, align 4, !tbaa !9
  %1670 = load i32, ptr %47, align 4, !tbaa !9
  %1671 = load ptr, ptr %24, align 8, !tbaa !5
  %1672 = load i32, ptr %1671, align 4, !tbaa !9
  %1673 = icmp sle i32 %1670, %1672
  br i1 %1673, label %1674, label %1676

1674:                                             ; preds = %1666
  %1675 = load i32, ptr %47, align 4, !tbaa !9
  br label %1679

1676:                                             ; preds = %1666
  %1677 = load ptr, ptr %24, align 8, !tbaa !5
  %1678 = load i32, ptr %1677, align 4, !tbaa !9
  br label %1679

1679:                                             ; preds = %1676, %1674
  %1680 = phi i32 [ %1675, %1674 ], [ %1678, %1676 ]
  store i32 %1680, ptr %60, align 4, !tbaa !9
  %1681 = load ptr, ptr %25, align 8, !tbaa !5
  %1682 = load i32, ptr %1681, align 4, !tbaa !9
  %1683 = load ptr, ptr %26, align 8, !tbaa !5
  %1684 = load i32, ptr %1683, align 4, !tbaa !9
  %1685 = sub nsw i32 %1682, %1684
  %1686 = add nsw i32 %1685, 1
  store i32 %1686, ptr %47, align 4, !tbaa !9
  %1687 = load i32, ptr %47, align 4, !tbaa !9
  %1688 = load ptr, ptr %25, align 8, !tbaa !5
  %1689 = load i32, ptr %1688, align 4, !tbaa !9
  %1690 = icmp sle i32 %1687, %1689
  br i1 %1690, label %1691, label %1693

1691:                                             ; preds = %1679
  %1692 = load i32, ptr %47, align 4, !tbaa !9
  br label %1696

1693:                                             ; preds = %1679
  %1694 = load ptr, ptr %25, align 8, !tbaa !5
  %1695 = load i32, ptr %1694, align 4, !tbaa !9
  br label %1696

1696:                                             ; preds = %1693, %1691
  %1697 = phi i32 [ %1692, %1691 ], [ %1695, %1693 ]
  store i32 %1697, ptr %58, align 4, !tbaa !9
  %1698 = load ptr, ptr %26, align 8, !tbaa !5
  %1699 = load i32, ptr %1698, align 4, !tbaa !9
  store i32 %1699, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1700

1700:                                             ; preds = %1754, %1696
  %1701 = load i32, ptr %56, align 4, !tbaa !9
  %1702 = load i32, ptr %47, align 4, !tbaa !9
  %1703 = icmp sle i32 %1701, %1702
  br i1 %1703, label %1704, label %1757

1704:                                             ; preds = %1700
  %1705 = load ptr, ptr %23, align 8, !tbaa !5
  %1706 = load i32, ptr %1705, align 4, !tbaa !9
  store i32 %1706, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1707

1707:                                             ; preds = %1750, %1704
  %1708 = load i32, ptr %55, align 4, !tbaa !9
  %1709 = load i32, ptr %48, align 4, !tbaa !9
  %1710 = icmp sle i32 %1708, %1709
  br i1 %1710, label %1711, label %1753

1711:                                             ; preds = %1707
  %1712 = load i32, ptr %55, align 4, !tbaa !9
  %1713 = load ptr, ptr %25, align 8, !tbaa !5
  %1714 = load i32, ptr %1713, align 4, !tbaa !9
  %1715 = load ptr, ptr %26, align 8, !tbaa !5
  %1716 = load i32, ptr %1715, align 4, !tbaa !9
  %1717 = sub nsw i32 %1714, %1716
  %1718 = load i32, ptr %56, align 4, !tbaa !9
  %1719 = add nsw i32 %1717, %1718
  %1720 = load i32, ptr %45, align 4, !tbaa !9
  %1721 = mul nsw i32 %1719, %1720
  %1722 = add nsw i32 %1712, %1721
  store i32 %1722, ptr %49, align 4, !tbaa !9
  %1723 = load i32, ptr %55, align 4, !tbaa !9
  %1724 = load i32, ptr %56, align 4, !tbaa !9
  %1725 = load i32, ptr %39, align 4, !tbaa !9
  %1726 = mul nsw i32 %1724, %1725
  %1727 = add nsw i32 %1723, %1726
  store i32 %1727, ptr %50, align 4, !tbaa !9
  %1728 = load ptr, ptr %33, align 8, !tbaa !5
  %1729 = load i32, ptr %50, align 4, !tbaa !9
  %1730 = sext i32 %1729 to i64
  %1731 = getelementptr inbounds %struct.complex, ptr %1728, i64 %1730
  %1732 = getelementptr inbounds %struct.complex, ptr %1731, i32 0, i32 0
  %1733 = load float, ptr %1732, align 4, !tbaa !11
  %1734 = load ptr, ptr %35, align 8, !tbaa !5
  %1735 = load i32, ptr %49, align 4, !tbaa !9
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds %struct.complex, ptr %1734, i64 %1736
  %1738 = getelementptr inbounds %struct.complex, ptr %1737, i32 0, i32 0
  store float %1733, ptr %1738, align 4, !tbaa !11
  %1739 = load ptr, ptr %33, align 8, !tbaa !5
  %1740 = load i32, ptr %50, align 4, !tbaa !9
  %1741 = sext i32 %1740 to i64
  %1742 = getelementptr inbounds %struct.complex, ptr %1739, i64 %1741
  %1743 = getelementptr inbounds %struct.complex, ptr %1742, i32 0, i32 1
  %1744 = load float, ptr %1743, align 4, !tbaa !14
  %1745 = load ptr, ptr %35, align 8, !tbaa !5
  %1746 = load i32, ptr %49, align 4, !tbaa !9
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds %struct.complex, ptr %1745, i64 %1747
  %1749 = getelementptr inbounds %struct.complex, ptr %1748, i32 0, i32 1
  store float %1744, ptr %1749, align 4, !tbaa !14
  br label %1750

1750:                                             ; preds = %1711
  %1751 = load i32, ptr %55, align 4, !tbaa !9
  %1752 = add nsw i32 %1751, 1
  store i32 %1752, ptr %55, align 4, !tbaa !9
  br label %1707, !llvm.loop !40

1753:                                             ; preds = %1707
  br label %1754

1754:                                             ; preds = %1753
  %1755 = load i32, ptr %56, align 4, !tbaa !9
  %1756 = add nsw i32 %1755, 1
  store i32 %1756, ptr %56, align 4, !tbaa !9
  br label %1700, !llvm.loop !41

1757:                                             ; preds = %1700
  %1758 = load ptr, ptr %23, align 8, !tbaa !5
  %1759 = load ptr, ptr %26, align 8, !tbaa !5
  %1760 = load ptr, ptr %27, align 8, !tbaa !5
  %1761 = load i32, ptr %58, align 4, !tbaa !9
  %1762 = load i32, ptr %43, align 4, !tbaa !9
  %1763 = mul nsw i32 %1761, %1762
  %1764 = add nsw i32 %1763, 1
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds %struct.complex, ptr %1760, i64 %1765
  %1767 = load ptr, ptr %28, align 8, !tbaa !5
  %1768 = load ptr, ptr %35, align 8, !tbaa !5
  %1769 = load i32, ptr %58, align 4, !tbaa !9
  %1770 = load i32, ptr %45, align 4, !tbaa !9
  %1771 = mul nsw i32 %1769, %1770
  %1772 = add nsw i32 %1771, 1
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds %struct.complex, ptr %1768, i64 %1773
  %1775 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1758, ptr noundef %1759, ptr noundef @c_b1, ptr noundef %1766, ptr noundef %1767, ptr noundef %1774, ptr noundef %1775)
  %1776 = load ptr, ptr %24, align 8, !tbaa !5
  %1777 = load i32, ptr %1776, align 4, !tbaa !9
  %1778 = load ptr, ptr %26, align 8, !tbaa !5
  %1779 = load i32, ptr %1778, align 4, !tbaa !9
  %1780 = sub nsw i32 %1777, %1779
  store i32 %1780, ptr %47, align 4, !tbaa !9
  %1781 = load ptr, ptr %23, align 8, !tbaa !5
  %1782 = load ptr, ptr %26, align 8, !tbaa !5
  %1783 = load ptr, ptr %33, align 8, !tbaa !5
  %1784 = load i32, ptr %60, align 4, !tbaa !9
  %1785 = load i32, ptr %39, align 4, !tbaa !9
  %1786 = mul nsw i32 %1784, %1785
  %1787 = add nsw i32 %1786, 1
  %1788 = sext i32 %1787 to i64
  %1789 = getelementptr inbounds %struct.complex, ptr %1783, i64 %1788
  %1790 = load ptr, ptr %34, align 8, !tbaa !5
  %1791 = load ptr, ptr %27, align 8, !tbaa !5
  %1792 = load i32, ptr %60, align 4, !tbaa !9
  %1793 = load i32, ptr %58, align 4, !tbaa !9
  %1794 = load i32, ptr %43, align 4, !tbaa !9
  %1795 = mul nsw i32 %1793, %1794
  %1796 = add nsw i32 %1792, %1795
  %1797 = sext i32 %1796 to i64
  %1798 = getelementptr inbounds %struct.complex, ptr %1791, i64 %1797
  %1799 = load ptr, ptr %28, align 8, !tbaa !5
  %1800 = load ptr, ptr %35, align 8, !tbaa !5
  %1801 = load i32, ptr %58, align 4, !tbaa !9
  %1802 = load i32, ptr %45, align 4, !tbaa !9
  %1803 = mul nsw i32 %1801, %1802
  %1804 = add nsw i32 %1803, 1
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds %struct.complex, ptr %1800, i64 %1805
  %1807 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1781, ptr noundef %1782, ptr noundef %47, ptr noundef @c_b1, ptr noundef %1789, ptr noundef %1790, ptr noundef %1798, ptr noundef %1799, ptr noundef @c_b1, ptr noundef %1806, ptr noundef %1807)
  %1808 = load ptr, ptr %25, align 8, !tbaa !5
  %1809 = load i32, ptr %1808, align 4, !tbaa !9
  %1810 = load ptr, ptr %26, align 8, !tbaa !5
  %1811 = load i32, ptr %1810, align 4, !tbaa !9
  %1812 = sub nsw i32 %1809, %1811
  store i32 %1812, ptr %47, align 4, !tbaa !9
  %1813 = load ptr, ptr %23, align 8, !tbaa !5
  %1814 = load ptr, ptr %24, align 8, !tbaa !5
  %1815 = load ptr, ptr %33, align 8, !tbaa !5
  %1816 = load i32, ptr %40, align 4, !tbaa !9
  %1817 = sext i32 %1816 to i64
  %1818 = getelementptr inbounds %struct.complex, ptr %1815, i64 %1817
  %1819 = load ptr, ptr %34, align 8, !tbaa !5
  %1820 = load ptr, ptr %27, align 8, !tbaa !5
  %1821 = load i32, ptr %44, align 4, !tbaa !9
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds %struct.complex, ptr %1820, i64 %1822
  %1824 = load ptr, ptr %28, align 8, !tbaa !5
  %1825 = load ptr, ptr %35, align 8, !tbaa !5
  %1826 = load i32, ptr %46, align 4, !tbaa !9
  %1827 = sext i32 %1826 to i64
  %1828 = getelementptr inbounds %struct.complex, ptr %1825, i64 %1827
  %1829 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1813, ptr noundef %47, ptr noundef %1814, ptr noundef @c_b1, ptr noundef %1818, ptr noundef %1819, ptr noundef %1823, ptr noundef %1824, ptr noundef @c_b2, ptr noundef %1828, ptr noundef %1829)
  %1830 = load ptr, ptr %25, align 8, !tbaa !5
  %1831 = load i32, ptr %1830, align 4, !tbaa !9
  store i32 %1831, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1832

1832:                                             ; preds = %1905, %1757
  %1833 = load i32, ptr %56, align 4, !tbaa !9
  %1834 = load i32, ptr %47, align 4, !tbaa !9
  %1835 = icmp sle i32 %1833, %1834
  br i1 %1835, label %1836, label %1908

1836:                                             ; preds = %1832
  %1837 = load ptr, ptr %23, align 8, !tbaa !5
  %1838 = load i32, ptr %1837, align 4, !tbaa !9
  store i32 %1838, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1839

1839:                                             ; preds = %1901, %1836
  %1840 = load i32, ptr %55, align 4, !tbaa !9
  %1841 = load i32, ptr %48, align 4, !tbaa !9
  %1842 = icmp sle i32 %1840, %1841
  br i1 %1842, label %1843, label %1904

1843:                                             ; preds = %1839
  %1844 = load i32, ptr %55, align 4, !tbaa !9
  %1845 = load i32, ptr %56, align 4, !tbaa !9
  %1846 = load i32, ptr %45, align 4, !tbaa !9
  %1847 = mul nsw i32 %1845, %1846
  %1848 = add nsw i32 %1844, %1847
  store i32 %1848, ptr %49, align 4, !tbaa !9
  %1849 = load i32, ptr %55, align 4, !tbaa !9
  %1850 = load i32, ptr %56, align 4, !tbaa !9
  %1851 = load i32, ptr %45, align 4, !tbaa !9
  %1852 = mul nsw i32 %1850, %1851
  %1853 = add nsw i32 %1849, %1852
  store i32 %1853, ptr %50, align 4, !tbaa !9
  %1854 = load i32, ptr %55, align 4, !tbaa !9
  %1855 = load i32, ptr %56, align 4, !tbaa !9
  %1856 = load i32, ptr %37, align 4, !tbaa !9
  %1857 = mul nsw i32 %1855, %1856
  %1858 = add nsw i32 %1854, %1857
  store i32 %1858, ptr %51, align 4, !tbaa !9
  %1859 = load ptr, ptr %35, align 8, !tbaa !5
  %1860 = load i32, ptr %50, align 4, !tbaa !9
  %1861 = sext i32 %1860 to i64
  %1862 = getelementptr inbounds %struct.complex, ptr %1859, i64 %1861
  %1863 = getelementptr inbounds %struct.complex, ptr %1862, i32 0, i32 0
  %1864 = load float, ptr %1863, align 4, !tbaa !11
  %1865 = load ptr, ptr %31, align 8, !tbaa !5
  %1866 = load i32, ptr %51, align 4, !tbaa !9
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds %struct.complex, ptr %1865, i64 %1867
  %1869 = getelementptr inbounds %struct.complex, ptr %1868, i32 0, i32 0
  %1870 = load float, ptr %1869, align 4, !tbaa !11
  %1871 = fadd float %1864, %1870
  %1872 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1871, ptr %1872, align 4, !tbaa !11
  %1873 = load ptr, ptr %35, align 8, !tbaa !5
  %1874 = load i32, ptr %50, align 4, !tbaa !9
  %1875 = sext i32 %1874 to i64
  %1876 = getelementptr inbounds %struct.complex, ptr %1873, i64 %1875
  %1877 = getelementptr inbounds %struct.complex, ptr %1876, i32 0, i32 1
  %1878 = load float, ptr %1877, align 4, !tbaa !14
  %1879 = load ptr, ptr %31, align 8, !tbaa !5
  %1880 = load i32, ptr %51, align 4, !tbaa !9
  %1881 = sext i32 %1880 to i64
  %1882 = getelementptr inbounds %struct.complex, ptr %1879, i64 %1881
  %1883 = getelementptr inbounds %struct.complex, ptr %1882, i32 0, i32 1
  %1884 = load float, ptr %1883, align 4, !tbaa !14
  %1885 = fadd float %1878, %1884
  %1886 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1885, ptr %1886, align 4, !tbaa !14
  %1887 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1888 = load float, ptr %1887, align 4, !tbaa !11
  %1889 = load ptr, ptr %35, align 8, !tbaa !5
  %1890 = load i32, ptr %49, align 4, !tbaa !9
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds %struct.complex, ptr %1889, i64 %1891
  %1893 = getelementptr inbounds %struct.complex, ptr %1892, i32 0, i32 0
  store float %1888, ptr %1893, align 4, !tbaa !11
  %1894 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1895 = load float, ptr %1894, align 4, !tbaa !14
  %1896 = load ptr, ptr %35, align 8, !tbaa !5
  %1897 = load i32, ptr %49, align 4, !tbaa !9
  %1898 = sext i32 %1897 to i64
  %1899 = getelementptr inbounds %struct.complex, ptr %1896, i64 %1898
  %1900 = getelementptr inbounds %struct.complex, ptr %1899, i32 0, i32 1
  store float %1895, ptr %1900, align 4, !tbaa !14
  br label %1901

1901:                                             ; preds = %1843
  %1902 = load i32, ptr %55, align 4, !tbaa !9
  %1903 = add nsw i32 %1902, 1
  store i32 %1903, ptr %55, align 4, !tbaa !9
  br label %1839, !llvm.loop !42

1904:                                             ; preds = %1839
  br label %1905

1905:                                             ; preds = %1904
  %1906 = load i32, ptr %56, align 4, !tbaa !9
  %1907 = add nsw i32 %1906, 1
  store i32 %1907, ptr %56, align 4, !tbaa !9
  br label %1832, !llvm.loop !43

1908:                                             ; preds = %1832
  %1909 = load ptr, ptr %20, align 8, !tbaa !5
  %1910 = load ptr, ptr %23, align 8, !tbaa !5
  %1911 = load ptr, ptr %25, align 8, !tbaa !5
  %1912 = load ptr, ptr %29, align 8, !tbaa !5
  %1913 = load i32, ptr %42, align 4, !tbaa !9
  %1914 = sext i32 %1913 to i64
  %1915 = getelementptr inbounds %struct.complex, ptr %1912, i64 %1914
  %1916 = load ptr, ptr %30, align 8, !tbaa !5
  %1917 = load ptr, ptr %35, align 8, !tbaa !5
  %1918 = load i32, ptr %46, align 4, !tbaa !9
  %1919 = sext i32 %1918 to i64
  %1920 = getelementptr inbounds %struct.complex, ptr %1917, i64 %1919
  %1921 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %1909, ptr noundef @.str.6, ptr noundef %1910, ptr noundef %1911, ptr noundef @c_b1, ptr noundef %1915, ptr noundef %1916, ptr noundef %1920, ptr noundef %1921)
  %1922 = load ptr, ptr %25, align 8, !tbaa !5
  %1923 = load i32, ptr %1922, align 4, !tbaa !9
  store i32 %1923, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %1924

1924:                                             ; preds = %1997, %1908
  %1925 = load i32, ptr %56, align 4, !tbaa !9
  %1926 = load i32, ptr %47, align 4, !tbaa !9
  %1927 = icmp sle i32 %1925, %1926
  br i1 %1927, label %1928, label %2000

1928:                                             ; preds = %1924
  %1929 = load ptr, ptr %23, align 8, !tbaa !5
  %1930 = load i32, ptr %1929, align 4, !tbaa !9
  store i32 %1930, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1931

1931:                                             ; preds = %1993, %1928
  %1932 = load i32, ptr %55, align 4, !tbaa !9
  %1933 = load i32, ptr %48, align 4, !tbaa !9
  %1934 = icmp sle i32 %1932, %1933
  br i1 %1934, label %1935, label %1996

1935:                                             ; preds = %1931
  %1936 = load i32, ptr %55, align 4, !tbaa !9
  %1937 = load i32, ptr %56, align 4, !tbaa !9
  %1938 = load i32, ptr %37, align 4, !tbaa !9
  %1939 = mul nsw i32 %1937, %1938
  %1940 = add nsw i32 %1936, %1939
  store i32 %1940, ptr %49, align 4, !tbaa !9
  %1941 = load i32, ptr %55, align 4, !tbaa !9
  %1942 = load i32, ptr %56, align 4, !tbaa !9
  %1943 = load i32, ptr %37, align 4, !tbaa !9
  %1944 = mul nsw i32 %1942, %1943
  %1945 = add nsw i32 %1941, %1944
  store i32 %1945, ptr %50, align 4, !tbaa !9
  %1946 = load i32, ptr %55, align 4, !tbaa !9
  %1947 = load i32, ptr %56, align 4, !tbaa !9
  %1948 = load i32, ptr %45, align 4, !tbaa !9
  %1949 = mul nsw i32 %1947, %1948
  %1950 = add nsw i32 %1946, %1949
  store i32 %1950, ptr %51, align 4, !tbaa !9
  %1951 = load ptr, ptr %31, align 8, !tbaa !5
  %1952 = load i32, ptr %50, align 4, !tbaa !9
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds %struct.complex, ptr %1951, i64 %1953
  %1955 = getelementptr inbounds %struct.complex, ptr %1954, i32 0, i32 0
  %1956 = load float, ptr %1955, align 4, !tbaa !11
  %1957 = load ptr, ptr %35, align 8, !tbaa !5
  %1958 = load i32, ptr %51, align 4, !tbaa !9
  %1959 = sext i32 %1958 to i64
  %1960 = getelementptr inbounds %struct.complex, ptr %1957, i64 %1959
  %1961 = getelementptr inbounds %struct.complex, ptr %1960, i32 0, i32 0
  %1962 = load float, ptr %1961, align 4, !tbaa !11
  %1963 = fsub float %1956, %1962
  %1964 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1963, ptr %1964, align 4, !tbaa !11
  %1965 = load ptr, ptr %31, align 8, !tbaa !5
  %1966 = load i32, ptr %50, align 4, !tbaa !9
  %1967 = sext i32 %1966 to i64
  %1968 = getelementptr inbounds %struct.complex, ptr %1965, i64 %1967
  %1969 = getelementptr inbounds %struct.complex, ptr %1968, i32 0, i32 1
  %1970 = load float, ptr %1969, align 4, !tbaa !14
  %1971 = load ptr, ptr %35, align 8, !tbaa !5
  %1972 = load i32, ptr %51, align 4, !tbaa !9
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds %struct.complex, ptr %1971, i64 %1973
  %1975 = getelementptr inbounds %struct.complex, ptr %1974, i32 0, i32 1
  %1976 = load float, ptr %1975, align 4, !tbaa !14
  %1977 = fsub float %1970, %1976
  %1978 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1977, ptr %1978, align 4, !tbaa !14
  %1979 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1980 = load float, ptr %1979, align 4, !tbaa !11
  %1981 = load ptr, ptr %31, align 8, !tbaa !5
  %1982 = load i32, ptr %49, align 4, !tbaa !9
  %1983 = sext i32 %1982 to i64
  %1984 = getelementptr inbounds %struct.complex, ptr %1981, i64 %1983
  %1985 = getelementptr inbounds %struct.complex, ptr %1984, i32 0, i32 0
  store float %1980, ptr %1985, align 4, !tbaa !11
  %1986 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1987 = load float, ptr %1986, align 4, !tbaa !14
  %1988 = load ptr, ptr %31, align 8, !tbaa !5
  %1989 = load i32, ptr %49, align 4, !tbaa !9
  %1990 = sext i32 %1989 to i64
  %1991 = getelementptr inbounds %struct.complex, ptr %1988, i64 %1990
  %1992 = getelementptr inbounds %struct.complex, ptr %1991, i32 0, i32 1
  store float %1987, ptr %1992, align 4, !tbaa !14
  br label %1993

1993:                                             ; preds = %1935
  %1994 = load i32, ptr %55, align 4, !tbaa !9
  %1995 = add nsw i32 %1994, 1
  store i32 %1995, ptr %55, align 4, !tbaa !9
  br label %1931, !llvm.loop !44

1996:                                             ; preds = %1931
  br label %1997

1997:                                             ; preds = %1996
  %1998 = load i32, ptr %56, align 4, !tbaa !9
  %1999 = add nsw i32 %1998, 1
  store i32 %1999, ptr %56, align 4, !tbaa !9
  br label %1924, !llvm.loop !45

2000:                                             ; preds = %1924
  %2001 = load ptr, ptr %24, align 8, !tbaa !5
  %2002 = load i32, ptr %2001, align 4, !tbaa !9
  %2003 = load ptr, ptr %26, align 8, !tbaa !5
  %2004 = load i32, ptr %2003, align 4, !tbaa !9
  %2005 = sub nsw i32 %2002, %2004
  store i32 %2005, ptr %47, align 4, !tbaa !9
  %2006 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %2006, align 4, !tbaa !11
  %2007 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %2007, align 4, !tbaa !14
  %2008 = load ptr, ptr %23, align 8, !tbaa !5
  %2009 = load ptr, ptr %25, align 8, !tbaa !5
  %2010 = load ptr, ptr %35, align 8, !tbaa !5
  %2011 = load i32, ptr %46, align 4, !tbaa !9
  %2012 = sext i32 %2011 to i64
  %2013 = getelementptr inbounds %struct.complex, ptr %2010, i64 %2012
  %2014 = load ptr, ptr %36, align 8, !tbaa !5
  %2015 = load ptr, ptr %27, align 8, !tbaa !5
  %2016 = load i32, ptr %60, align 4, !tbaa !9
  %2017 = load i32, ptr %43, align 4, !tbaa !9
  %2018 = add nsw i32 %2016, %2017
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds %struct.complex, ptr %2015, i64 %2019
  %2021 = load ptr, ptr %28, align 8, !tbaa !5
  %2022 = load ptr, ptr %33, align 8, !tbaa !5
  %2023 = load i32, ptr %60, align 4, !tbaa !9
  %2024 = load i32, ptr %39, align 4, !tbaa !9
  %2025 = mul nsw i32 %2023, %2024
  %2026 = add nsw i32 %2025, 1
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds %struct.complex, ptr %2022, i64 %2027
  %2029 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %2008, ptr noundef %47, ptr noundef %2009, ptr noundef %52, ptr noundef %2013, ptr noundef %2014, ptr noundef %2020, ptr noundef %2021, ptr noundef @c_b1, ptr noundef %2028, ptr noundef %2029)
  %2030 = load ptr, ptr %25, align 8, !tbaa !5
  %2031 = load i32, ptr %2030, align 4, !tbaa !9
  %2032 = load ptr, ptr %26, align 8, !tbaa !5
  %2033 = load i32, ptr %2032, align 4, !tbaa !9
  %2034 = sub nsw i32 %2031, %2033
  store i32 %2034, ptr %47, align 4, !tbaa !9
  %2035 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %2035, align 4, !tbaa !11
  %2036 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %2036, align 4, !tbaa !14
  %2037 = load ptr, ptr %23, align 8, !tbaa !5
  %2038 = load ptr, ptr %26, align 8, !tbaa !5
  %2039 = load ptr, ptr %35, align 8, !tbaa !5
  %2040 = load i32, ptr %46, align 4, !tbaa !9
  %2041 = sext i32 %2040 to i64
  %2042 = getelementptr inbounds %struct.complex, ptr %2039, i64 %2041
  %2043 = load ptr, ptr %36, align 8, !tbaa !5
  %2044 = load ptr, ptr %27, align 8, !tbaa !5
  %2045 = load i32, ptr %44, align 4, !tbaa !9
  %2046 = sext i32 %2045 to i64
  %2047 = getelementptr inbounds %struct.complex, ptr %2044, i64 %2046
  %2048 = load ptr, ptr %28, align 8, !tbaa !5
  %2049 = load ptr, ptr %33, align 8, !tbaa !5
  %2050 = load i32, ptr %40, align 4, !tbaa !9
  %2051 = sext i32 %2050 to i64
  %2052 = getelementptr inbounds %struct.complex, ptr %2049, i64 %2051
  %2053 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %2037, ptr noundef %2038, ptr noundef %47, ptr noundef %52, ptr noundef %2042, ptr noundef %2043, ptr noundef %2047, ptr noundef %2048, ptr noundef @c_b1, ptr noundef %2052, ptr noundef %2053)
  %2054 = load ptr, ptr %23, align 8, !tbaa !5
  %2055 = load ptr, ptr %26, align 8, !tbaa !5
  %2056 = load ptr, ptr %27, align 8, !tbaa !5
  %2057 = load i32, ptr %58, align 4, !tbaa !9
  %2058 = load i32, ptr %43, align 4, !tbaa !9
  %2059 = mul nsw i32 %2057, %2058
  %2060 = add nsw i32 %2059, 1
  %2061 = sext i32 %2060 to i64
  %2062 = getelementptr inbounds %struct.complex, ptr %2056, i64 %2061
  %2063 = load ptr, ptr %28, align 8, !tbaa !5
  %2064 = load ptr, ptr %35, align 8, !tbaa !5
  %2065 = load i32, ptr %58, align 4, !tbaa !9
  %2066 = load i32, ptr %45, align 4, !tbaa !9
  %2067 = mul nsw i32 %2065, %2066
  %2068 = add nsw i32 %2067, 1
  %2069 = sext i32 %2068 to i64
  %2070 = getelementptr inbounds %struct.complex, ptr %2064, i64 %2069
  %2071 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %2054, ptr noundef %2055, ptr noundef @c_b1, ptr noundef %2062, ptr noundef %2063, ptr noundef %2070, ptr noundef %2071)
  %2072 = load ptr, ptr %26, align 8, !tbaa !5
  %2073 = load i32, ptr %2072, align 4, !tbaa !9
  store i32 %2073, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2074

2074:                                             ; preds = %2153, %2000
  %2075 = load i32, ptr %56, align 4, !tbaa !9
  %2076 = load i32, ptr %47, align 4, !tbaa !9
  %2077 = icmp sle i32 %2075, %2076
  br i1 %2077, label %2078, label %2156

2078:                                             ; preds = %2074
  %2079 = load ptr, ptr %23, align 8, !tbaa !5
  %2080 = load i32, ptr %2079, align 4, !tbaa !9
  store i32 %2080, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2081

2081:                                             ; preds = %2149, %2078
  %2082 = load i32, ptr %55, align 4, !tbaa !9
  %2083 = load i32, ptr %48, align 4, !tbaa !9
  %2084 = icmp sle i32 %2082, %2083
  br i1 %2084, label %2085, label %2152

2085:                                             ; preds = %2081
  %2086 = load i32, ptr %55, align 4, !tbaa !9
  %2087 = load i32, ptr %56, align 4, !tbaa !9
  %2088 = load i32, ptr %39, align 4, !tbaa !9
  %2089 = mul nsw i32 %2087, %2088
  %2090 = add nsw i32 %2086, %2089
  store i32 %2090, ptr %49, align 4, !tbaa !9
  %2091 = load i32, ptr %55, align 4, !tbaa !9
  %2092 = load i32, ptr %56, align 4, !tbaa !9
  %2093 = load i32, ptr %39, align 4, !tbaa !9
  %2094 = mul nsw i32 %2092, %2093
  %2095 = add nsw i32 %2091, %2094
  store i32 %2095, ptr %50, align 4, !tbaa !9
  %2096 = load i32, ptr %55, align 4, !tbaa !9
  %2097 = load ptr, ptr %25, align 8, !tbaa !5
  %2098 = load i32, ptr %2097, align 4, !tbaa !9
  %2099 = load ptr, ptr %26, align 8, !tbaa !5
  %2100 = load i32, ptr %2099, align 4, !tbaa !9
  %2101 = sub nsw i32 %2098, %2100
  %2102 = load i32, ptr %56, align 4, !tbaa !9
  %2103 = add nsw i32 %2101, %2102
  %2104 = load i32, ptr %45, align 4, !tbaa !9
  %2105 = mul nsw i32 %2103, %2104
  %2106 = add nsw i32 %2096, %2105
  store i32 %2106, ptr %51, align 4, !tbaa !9
  %2107 = load ptr, ptr %33, align 8, !tbaa !5
  %2108 = load i32, ptr %50, align 4, !tbaa !9
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds %struct.complex, ptr %2107, i64 %2109
  %2111 = getelementptr inbounds %struct.complex, ptr %2110, i32 0, i32 0
  %2112 = load float, ptr %2111, align 4, !tbaa !11
  %2113 = load ptr, ptr %35, align 8, !tbaa !5
  %2114 = load i32, ptr %51, align 4, !tbaa !9
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds %struct.complex, ptr %2113, i64 %2115
  %2117 = getelementptr inbounds %struct.complex, ptr %2116, i32 0, i32 0
  %2118 = load float, ptr %2117, align 4, !tbaa !11
  %2119 = fsub float %2112, %2118
  %2120 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2119, ptr %2120, align 4, !tbaa !11
  %2121 = load ptr, ptr %33, align 8, !tbaa !5
  %2122 = load i32, ptr %50, align 4, !tbaa !9
  %2123 = sext i32 %2122 to i64
  %2124 = getelementptr inbounds %struct.complex, ptr %2121, i64 %2123
  %2125 = getelementptr inbounds %struct.complex, ptr %2124, i32 0, i32 1
  %2126 = load float, ptr %2125, align 4, !tbaa !14
  %2127 = load ptr, ptr %35, align 8, !tbaa !5
  %2128 = load i32, ptr %51, align 4, !tbaa !9
  %2129 = sext i32 %2128 to i64
  %2130 = getelementptr inbounds %struct.complex, ptr %2127, i64 %2129
  %2131 = getelementptr inbounds %struct.complex, ptr %2130, i32 0, i32 1
  %2132 = load float, ptr %2131, align 4, !tbaa !14
  %2133 = fsub float %2126, %2132
  %2134 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2133, ptr %2134, align 4, !tbaa !14
  %2135 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2136 = load float, ptr %2135, align 4, !tbaa !11
  %2137 = load ptr, ptr %33, align 8, !tbaa !5
  %2138 = load i32, ptr %49, align 4, !tbaa !9
  %2139 = sext i32 %2138 to i64
  %2140 = getelementptr inbounds %struct.complex, ptr %2137, i64 %2139
  %2141 = getelementptr inbounds %struct.complex, ptr %2140, i32 0, i32 0
  store float %2136, ptr %2141, align 4, !tbaa !11
  %2142 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2143 = load float, ptr %2142, align 4, !tbaa !14
  %2144 = load ptr, ptr %33, align 8, !tbaa !5
  %2145 = load i32, ptr %49, align 4, !tbaa !9
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds %struct.complex, ptr %2144, i64 %2146
  %2148 = getelementptr inbounds %struct.complex, ptr %2147, i32 0, i32 1
  store float %2143, ptr %2148, align 4, !tbaa !14
  br label %2149

2149:                                             ; preds = %2085
  %2150 = load i32, ptr %55, align 4, !tbaa !9
  %2151 = add nsw i32 %2150, 1
  store i32 %2151, ptr %55, align 4, !tbaa !9
  br label %2081, !llvm.loop !46

2152:                                             ; preds = %2081
  br label %2153

2153:                                             ; preds = %2152
  %2154 = load i32, ptr %56, align 4, !tbaa !9
  %2155 = add nsw i32 %2154, 1
  store i32 %2155, ptr %56, align 4, !tbaa !9
  br label %2074, !llvm.loop !47

2156:                                             ; preds = %2074
  br label %4151

2157:                                             ; preds = %1663, %1660, %1657
  %2158 = load i32, ptr %62, align 4, !tbaa !9
  %2159 = icmp ne i32 %2158, 0
  br i1 %2159, label %2160, label %2654

2160:                                             ; preds = %2157
  %2161 = load i32, ptr %63, align 4, !tbaa !9
  %2162 = icmp ne i32 %2161, 0
  br i1 %2162, label %2163, label %2654

2163:                                             ; preds = %2160
  %2164 = load i32, ptr %53, align 4, !tbaa !9
  %2165 = icmp ne i32 %2164, 0
  br i1 %2165, label %2166, label %2654

2166:                                             ; preds = %2163
  %2167 = load ptr, ptr %23, align 8, !tbaa !5
  %2168 = load i32, ptr %2167, align 4, !tbaa !9
  %2169 = load ptr, ptr %26, align 8, !tbaa !5
  %2170 = load i32, ptr %2169, align 4, !tbaa !9
  %2171 = sub nsw i32 %2168, %2170
  %2172 = add nsw i32 %2171, 1
  store i32 %2172, ptr %47, align 4, !tbaa !9
  %2173 = load i32, ptr %47, align 4, !tbaa !9
  %2174 = load ptr, ptr %23, align 8, !tbaa !5
  %2175 = load i32, ptr %2174, align 4, !tbaa !9
  %2176 = icmp sle i32 %2173, %2175
  br i1 %2176, label %2177, label %2179

2177:                                             ; preds = %2166
  %2178 = load i32, ptr %47, align 4, !tbaa !9
  br label %2182

2179:                                             ; preds = %2166
  %2180 = load ptr, ptr %23, align 8, !tbaa !5
  %2181 = load i32, ptr %2180, align 4, !tbaa !9
  br label %2182

2182:                                             ; preds = %2179, %2177
  %2183 = phi i32 [ %2178, %2177 ], [ %2181, %2179 ]
  store i32 %2183, ptr %59, align 4, !tbaa !9
  %2184 = load ptr, ptr %26, align 8, !tbaa !5
  %2185 = load i32, ptr %2184, align 4, !tbaa !9
  %2186 = add nsw i32 %2185, 1
  store i32 %2186, ptr %47, align 4, !tbaa !9
  %2187 = load i32, ptr %47, align 4, !tbaa !9
  %2188 = load ptr, ptr %25, align 8, !tbaa !5
  %2189 = load i32, ptr %2188, align 4, !tbaa !9
  %2190 = icmp sle i32 %2187, %2189
  br i1 %2190, label %2191, label %2193

2191:                                             ; preds = %2182
  %2192 = load i32, ptr %47, align 4, !tbaa !9
  br label %2196

2193:                                             ; preds = %2182
  %2194 = load ptr, ptr %25, align 8, !tbaa !5
  %2195 = load i32, ptr %2194, align 4, !tbaa !9
  br label %2196

2196:                                             ; preds = %2193, %2191
  %2197 = phi i32 [ %2192, %2191 ], [ %2195, %2193 ]
  store i32 %2197, ptr %58, align 4, !tbaa !9
  %2198 = load ptr, ptr %24, align 8, !tbaa !5
  %2199 = load i32, ptr %2198, align 4, !tbaa !9
  store i32 %2199, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2200

2200:                                             ; preds = %2254, %2196
  %2201 = load i32, ptr %56, align 4, !tbaa !9
  %2202 = load i32, ptr %47, align 4, !tbaa !9
  %2203 = icmp sle i32 %2201, %2202
  br i1 %2203, label %2204, label %2257

2204:                                             ; preds = %2200
  %2205 = load ptr, ptr %26, align 8, !tbaa !5
  %2206 = load i32, ptr %2205, align 4, !tbaa !9
  store i32 %2206, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2207

2207:                                             ; preds = %2250, %2204
  %2208 = load i32, ptr %55, align 4, !tbaa !9
  %2209 = load i32, ptr %48, align 4, !tbaa !9
  %2210 = icmp sle i32 %2208, %2209
  br i1 %2210, label %2211, label %2253

2211:                                             ; preds = %2207
  %2212 = load i32, ptr %55, align 4, !tbaa !9
  %2213 = load i32, ptr %56, align 4, !tbaa !9
  %2214 = load i32, ptr %45, align 4, !tbaa !9
  %2215 = mul nsw i32 %2213, %2214
  %2216 = add nsw i32 %2212, %2215
  store i32 %2216, ptr %49, align 4, !tbaa !9
  %2217 = load ptr, ptr %23, align 8, !tbaa !5
  %2218 = load i32, ptr %2217, align 4, !tbaa !9
  %2219 = load ptr, ptr %26, align 8, !tbaa !5
  %2220 = load i32, ptr %2219, align 4, !tbaa !9
  %2221 = sub nsw i32 %2218, %2220
  %2222 = load i32, ptr %55, align 4, !tbaa !9
  %2223 = add nsw i32 %2221, %2222
  %2224 = load i32, ptr %56, align 4, !tbaa !9
  %2225 = load i32, ptr %39, align 4, !tbaa !9
  %2226 = mul nsw i32 %2224, %2225
  %2227 = add nsw i32 %2223, %2226
  store i32 %2227, ptr %50, align 4, !tbaa !9
  %2228 = load ptr, ptr %33, align 8, !tbaa !5
  %2229 = load i32, ptr %50, align 4, !tbaa !9
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds %struct.complex, ptr %2228, i64 %2230
  %2232 = getelementptr inbounds %struct.complex, ptr %2231, i32 0, i32 0
  %2233 = load float, ptr %2232, align 4, !tbaa !11
  %2234 = load ptr, ptr %35, align 8, !tbaa !5
  %2235 = load i32, ptr %49, align 4, !tbaa !9
  %2236 = sext i32 %2235 to i64
  %2237 = getelementptr inbounds %struct.complex, ptr %2234, i64 %2236
  %2238 = getelementptr inbounds %struct.complex, ptr %2237, i32 0, i32 0
  store float %2233, ptr %2238, align 4, !tbaa !11
  %2239 = load ptr, ptr %33, align 8, !tbaa !5
  %2240 = load i32, ptr %50, align 4, !tbaa !9
  %2241 = sext i32 %2240 to i64
  %2242 = getelementptr inbounds %struct.complex, ptr %2239, i64 %2241
  %2243 = getelementptr inbounds %struct.complex, ptr %2242, i32 0, i32 1
  %2244 = load float, ptr %2243, align 4, !tbaa !14
  %2245 = load ptr, ptr %35, align 8, !tbaa !5
  %2246 = load i32, ptr %49, align 4, !tbaa !9
  %2247 = sext i32 %2246 to i64
  %2248 = getelementptr inbounds %struct.complex, ptr %2245, i64 %2247
  %2249 = getelementptr inbounds %struct.complex, ptr %2248, i32 0, i32 1
  store float %2244, ptr %2249, align 4, !tbaa !14
  br label %2250

2250:                                             ; preds = %2211
  %2251 = load i32, ptr %55, align 4, !tbaa !9
  %2252 = add nsw i32 %2251, 1
  store i32 %2252, ptr %55, align 4, !tbaa !9
  br label %2207, !llvm.loop !48

2253:                                             ; preds = %2207
  br label %2254

2254:                                             ; preds = %2253
  %2255 = load i32, ptr %56, align 4, !tbaa !9
  %2256 = add nsw i32 %2255, 1
  store i32 %2256, ptr %56, align 4, !tbaa !9
  br label %2200, !llvm.loop !49

2257:                                             ; preds = %2200
  %2258 = load ptr, ptr %26, align 8, !tbaa !5
  %2259 = load ptr, ptr %24, align 8, !tbaa !5
  %2260 = load ptr, ptr %27, align 8, !tbaa !5
  %2261 = load i32, ptr %59, align 4, !tbaa !9
  %2262 = load i32, ptr %43, align 4, !tbaa !9
  %2263 = mul nsw i32 %2261, %2262
  %2264 = add nsw i32 %2263, 1
  %2265 = sext i32 %2264 to i64
  %2266 = getelementptr inbounds %struct.complex, ptr %2260, i64 %2265
  %2267 = load ptr, ptr %28, align 8, !tbaa !5
  %2268 = load ptr, ptr %35, align 8, !tbaa !5
  %2269 = load i32, ptr %46, align 4, !tbaa !9
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds %struct.complex, ptr %2268, i64 %2270
  %2272 = load ptr, ptr %34, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %2258, ptr noundef %2259, ptr noundef @c_b1, ptr noundef %2266, ptr noundef %2267, ptr noundef %2271, ptr noundef %2272)
  %2273 = load ptr, ptr %23, align 8, !tbaa !5
  %2274 = load i32, ptr %2273, align 4, !tbaa !9
  %2275 = load ptr, ptr %26, align 8, !tbaa !5
  %2276 = load i32, ptr %2275, align 4, !tbaa !9
  %2277 = sub nsw i32 %2274, %2276
  store i32 %2277, ptr %47, align 4, !tbaa !9
  %2278 = load ptr, ptr %26, align 8, !tbaa !5
  %2279 = load ptr, ptr %24, align 8, !tbaa !5
  %2280 = load ptr, ptr %27, align 8, !tbaa !5
  %2281 = load i32, ptr %44, align 4, !tbaa !9
  %2282 = sext i32 %2281 to i64
  %2283 = getelementptr inbounds %struct.complex, ptr %2280, i64 %2282
  %2284 = load ptr, ptr %28, align 8, !tbaa !5
  %2285 = load ptr, ptr %33, align 8, !tbaa !5
  %2286 = load i32, ptr %40, align 4, !tbaa !9
  %2287 = sext i32 %2286 to i64
  %2288 = getelementptr inbounds %struct.complex, ptr %2285, i64 %2287
  %2289 = load ptr, ptr %34, align 8, !tbaa !5
  %2290 = load ptr, ptr %35, align 8, !tbaa !5
  %2291 = load i32, ptr %46, align 4, !tbaa !9
  %2292 = sext i32 %2291 to i64
  %2293 = getelementptr inbounds %struct.complex, ptr %2290, i64 %2292
  %2294 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %2278, ptr noundef %2279, ptr noundef %47, ptr noundef @c_b1, ptr noundef %2283, ptr noundef %2284, ptr noundef %2288, ptr noundef %2289, ptr noundef @c_b1, ptr noundef %2293, ptr noundef %2294)
  %2295 = load ptr, ptr %25, align 8, !tbaa !5
  %2296 = load i32, ptr %2295, align 4, !tbaa !9
  %2297 = load ptr, ptr %26, align 8, !tbaa !5
  %2298 = load i32, ptr %2297, align 4, !tbaa !9
  %2299 = sub nsw i32 %2296, %2298
  store i32 %2299, ptr %47, align 4, !tbaa !9
  %2300 = load ptr, ptr %24, align 8, !tbaa !5
  %2301 = load ptr, ptr %23, align 8, !tbaa !5
  %2302 = load ptr, ptr %27, align 8, !tbaa !5
  %2303 = load i32, ptr %58, align 4, !tbaa !9
  %2304 = load i32, ptr %43, align 4, !tbaa !9
  %2305 = add nsw i32 %2303, %2304
  %2306 = sext i32 %2305 to i64
  %2307 = getelementptr inbounds %struct.complex, ptr %2302, i64 %2306
  %2308 = load ptr, ptr %28, align 8, !tbaa !5
  %2309 = load ptr, ptr %33, align 8, !tbaa !5
  %2310 = load i32, ptr %40, align 4, !tbaa !9
  %2311 = sext i32 %2310 to i64
  %2312 = getelementptr inbounds %struct.complex, ptr %2309, i64 %2311
  %2313 = load ptr, ptr %34, align 8, !tbaa !5
  %2314 = load ptr, ptr %35, align 8, !tbaa !5
  %2315 = load i32, ptr %58, align 4, !tbaa !9
  %2316 = load i32, ptr %45, align 4, !tbaa !9
  %2317 = add nsw i32 %2315, %2316
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds %struct.complex, ptr %2314, i64 %2318
  %2320 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %47, ptr noundef %2300, ptr noundef %2301, ptr noundef @c_b1, ptr noundef %2307, ptr noundef %2308, ptr noundef %2312, ptr noundef %2313, ptr noundef @c_b2, ptr noundef %2319, ptr noundef %2320)
  %2321 = load ptr, ptr %24, align 8, !tbaa !5
  %2322 = load i32, ptr %2321, align 4, !tbaa !9
  store i32 %2322, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2323

2323:                                             ; preds = %2396, %2257
  %2324 = load i32, ptr %56, align 4, !tbaa !9
  %2325 = load i32, ptr %47, align 4, !tbaa !9
  %2326 = icmp sle i32 %2324, %2325
  br i1 %2326, label %2327, label %2399

2327:                                             ; preds = %2323
  %2328 = load ptr, ptr %25, align 8, !tbaa !5
  %2329 = load i32, ptr %2328, align 4, !tbaa !9
  store i32 %2329, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2330

2330:                                             ; preds = %2392, %2327
  %2331 = load i32, ptr %55, align 4, !tbaa !9
  %2332 = load i32, ptr %48, align 4, !tbaa !9
  %2333 = icmp sle i32 %2331, %2332
  br i1 %2333, label %2334, label %2395

2334:                                             ; preds = %2330
  %2335 = load i32, ptr %55, align 4, !tbaa !9
  %2336 = load i32, ptr %56, align 4, !tbaa !9
  %2337 = load i32, ptr %45, align 4, !tbaa !9
  %2338 = mul nsw i32 %2336, %2337
  %2339 = add nsw i32 %2335, %2338
  store i32 %2339, ptr %49, align 4, !tbaa !9
  %2340 = load i32, ptr %55, align 4, !tbaa !9
  %2341 = load i32, ptr %56, align 4, !tbaa !9
  %2342 = load i32, ptr %45, align 4, !tbaa !9
  %2343 = mul nsw i32 %2341, %2342
  %2344 = add nsw i32 %2340, %2343
  store i32 %2344, ptr %50, align 4, !tbaa !9
  %2345 = load i32, ptr %55, align 4, !tbaa !9
  %2346 = load i32, ptr %56, align 4, !tbaa !9
  %2347 = load i32, ptr %37, align 4, !tbaa !9
  %2348 = mul nsw i32 %2346, %2347
  %2349 = add nsw i32 %2345, %2348
  store i32 %2349, ptr %51, align 4, !tbaa !9
  %2350 = load ptr, ptr %35, align 8, !tbaa !5
  %2351 = load i32, ptr %50, align 4, !tbaa !9
  %2352 = sext i32 %2351 to i64
  %2353 = getelementptr inbounds %struct.complex, ptr %2350, i64 %2352
  %2354 = getelementptr inbounds %struct.complex, ptr %2353, i32 0, i32 0
  %2355 = load float, ptr %2354, align 4, !tbaa !11
  %2356 = load ptr, ptr %31, align 8, !tbaa !5
  %2357 = load i32, ptr %51, align 4, !tbaa !9
  %2358 = sext i32 %2357 to i64
  %2359 = getelementptr inbounds %struct.complex, ptr %2356, i64 %2358
  %2360 = getelementptr inbounds %struct.complex, ptr %2359, i32 0, i32 0
  %2361 = load float, ptr %2360, align 4, !tbaa !11
  %2362 = fadd float %2355, %2361
  %2363 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2362, ptr %2363, align 4, !tbaa !11
  %2364 = load ptr, ptr %35, align 8, !tbaa !5
  %2365 = load i32, ptr %50, align 4, !tbaa !9
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds %struct.complex, ptr %2364, i64 %2366
  %2368 = getelementptr inbounds %struct.complex, ptr %2367, i32 0, i32 1
  %2369 = load float, ptr %2368, align 4, !tbaa !14
  %2370 = load ptr, ptr %31, align 8, !tbaa !5
  %2371 = load i32, ptr %51, align 4, !tbaa !9
  %2372 = sext i32 %2371 to i64
  %2373 = getelementptr inbounds %struct.complex, ptr %2370, i64 %2372
  %2374 = getelementptr inbounds %struct.complex, ptr %2373, i32 0, i32 1
  %2375 = load float, ptr %2374, align 4, !tbaa !14
  %2376 = fadd float %2369, %2375
  %2377 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2376, ptr %2377, align 4, !tbaa !14
  %2378 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2379 = load float, ptr %2378, align 4, !tbaa !11
  %2380 = load ptr, ptr %35, align 8, !tbaa !5
  %2381 = load i32, ptr %49, align 4, !tbaa !9
  %2382 = sext i32 %2381 to i64
  %2383 = getelementptr inbounds %struct.complex, ptr %2380, i64 %2382
  %2384 = getelementptr inbounds %struct.complex, ptr %2383, i32 0, i32 0
  store float %2379, ptr %2384, align 4, !tbaa !11
  %2385 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2386 = load float, ptr %2385, align 4, !tbaa !14
  %2387 = load ptr, ptr %35, align 8, !tbaa !5
  %2388 = load i32, ptr %49, align 4, !tbaa !9
  %2389 = sext i32 %2388 to i64
  %2390 = getelementptr inbounds %struct.complex, ptr %2387, i64 %2389
  %2391 = getelementptr inbounds %struct.complex, ptr %2390, i32 0, i32 1
  store float %2386, ptr %2391, align 4, !tbaa !14
  br label %2392

2392:                                             ; preds = %2334
  %2393 = load i32, ptr %55, align 4, !tbaa !9
  %2394 = add nsw i32 %2393, 1
  store i32 %2394, ptr %55, align 4, !tbaa !9
  br label %2330, !llvm.loop !50

2395:                                             ; preds = %2330
  br label %2396

2396:                                             ; preds = %2395
  %2397 = load i32, ptr %56, align 4, !tbaa !9
  %2398 = add nsw i32 %2397, 1
  store i32 %2398, ptr %56, align 4, !tbaa !9
  br label %2323, !llvm.loop !51

2399:                                             ; preds = %2323
  %2400 = load ptr, ptr %20, align 8, !tbaa !5
  %2401 = load ptr, ptr %25, align 8, !tbaa !5
  %2402 = load ptr, ptr %24, align 8, !tbaa !5
  %2403 = load ptr, ptr %29, align 8, !tbaa !5
  %2404 = load i32, ptr %42, align 4, !tbaa !9
  %2405 = sext i32 %2404 to i64
  %2406 = getelementptr inbounds %struct.complex, ptr %2403, i64 %2405
  %2407 = load ptr, ptr %30, align 8, !tbaa !5
  %2408 = load ptr, ptr %35, align 8, !tbaa !5
  %2409 = load i32, ptr %46, align 4, !tbaa !9
  %2410 = sext i32 %2409 to i64
  %2411 = getelementptr inbounds %struct.complex, ptr %2408, i64 %2410
  %2412 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef %2400, ptr noundef @.str.6, ptr noundef %2401, ptr noundef %2402, ptr noundef @c_b1, ptr noundef %2406, ptr noundef %2407, ptr noundef %2411, ptr noundef %2412)
  %2413 = load ptr, ptr %24, align 8, !tbaa !5
  %2414 = load i32, ptr %2413, align 4, !tbaa !9
  store i32 %2414, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2415

2415:                                             ; preds = %2488, %2399
  %2416 = load i32, ptr %56, align 4, !tbaa !9
  %2417 = load i32, ptr %47, align 4, !tbaa !9
  %2418 = icmp sle i32 %2416, %2417
  br i1 %2418, label %2419, label %2491

2419:                                             ; preds = %2415
  %2420 = load ptr, ptr %25, align 8, !tbaa !5
  %2421 = load i32, ptr %2420, align 4, !tbaa !9
  store i32 %2421, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2422

2422:                                             ; preds = %2484, %2419
  %2423 = load i32, ptr %55, align 4, !tbaa !9
  %2424 = load i32, ptr %48, align 4, !tbaa !9
  %2425 = icmp sle i32 %2423, %2424
  br i1 %2425, label %2426, label %2487

2426:                                             ; preds = %2422
  %2427 = load i32, ptr %55, align 4, !tbaa !9
  %2428 = load i32, ptr %56, align 4, !tbaa !9
  %2429 = load i32, ptr %37, align 4, !tbaa !9
  %2430 = mul nsw i32 %2428, %2429
  %2431 = add nsw i32 %2427, %2430
  store i32 %2431, ptr %49, align 4, !tbaa !9
  %2432 = load i32, ptr %55, align 4, !tbaa !9
  %2433 = load i32, ptr %56, align 4, !tbaa !9
  %2434 = load i32, ptr %37, align 4, !tbaa !9
  %2435 = mul nsw i32 %2433, %2434
  %2436 = add nsw i32 %2432, %2435
  store i32 %2436, ptr %50, align 4, !tbaa !9
  %2437 = load i32, ptr %55, align 4, !tbaa !9
  %2438 = load i32, ptr %56, align 4, !tbaa !9
  %2439 = load i32, ptr %45, align 4, !tbaa !9
  %2440 = mul nsw i32 %2438, %2439
  %2441 = add nsw i32 %2437, %2440
  store i32 %2441, ptr %51, align 4, !tbaa !9
  %2442 = load ptr, ptr %31, align 8, !tbaa !5
  %2443 = load i32, ptr %50, align 4, !tbaa !9
  %2444 = sext i32 %2443 to i64
  %2445 = getelementptr inbounds %struct.complex, ptr %2442, i64 %2444
  %2446 = getelementptr inbounds %struct.complex, ptr %2445, i32 0, i32 0
  %2447 = load float, ptr %2446, align 4, !tbaa !11
  %2448 = load ptr, ptr %35, align 8, !tbaa !5
  %2449 = load i32, ptr %51, align 4, !tbaa !9
  %2450 = sext i32 %2449 to i64
  %2451 = getelementptr inbounds %struct.complex, ptr %2448, i64 %2450
  %2452 = getelementptr inbounds %struct.complex, ptr %2451, i32 0, i32 0
  %2453 = load float, ptr %2452, align 4, !tbaa !11
  %2454 = fsub float %2447, %2453
  %2455 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2454, ptr %2455, align 4, !tbaa !11
  %2456 = load ptr, ptr %31, align 8, !tbaa !5
  %2457 = load i32, ptr %50, align 4, !tbaa !9
  %2458 = sext i32 %2457 to i64
  %2459 = getelementptr inbounds %struct.complex, ptr %2456, i64 %2458
  %2460 = getelementptr inbounds %struct.complex, ptr %2459, i32 0, i32 1
  %2461 = load float, ptr %2460, align 4, !tbaa !14
  %2462 = load ptr, ptr %35, align 8, !tbaa !5
  %2463 = load i32, ptr %51, align 4, !tbaa !9
  %2464 = sext i32 %2463 to i64
  %2465 = getelementptr inbounds %struct.complex, ptr %2462, i64 %2464
  %2466 = getelementptr inbounds %struct.complex, ptr %2465, i32 0, i32 1
  %2467 = load float, ptr %2466, align 4, !tbaa !14
  %2468 = fsub float %2461, %2467
  %2469 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2468, ptr %2469, align 4, !tbaa !14
  %2470 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2471 = load float, ptr %2470, align 4, !tbaa !11
  %2472 = load ptr, ptr %31, align 8, !tbaa !5
  %2473 = load i32, ptr %49, align 4, !tbaa !9
  %2474 = sext i32 %2473 to i64
  %2475 = getelementptr inbounds %struct.complex, ptr %2472, i64 %2474
  %2476 = getelementptr inbounds %struct.complex, ptr %2475, i32 0, i32 0
  store float %2471, ptr %2476, align 4, !tbaa !11
  %2477 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2478 = load float, ptr %2477, align 4, !tbaa !14
  %2479 = load ptr, ptr %31, align 8, !tbaa !5
  %2480 = load i32, ptr %49, align 4, !tbaa !9
  %2481 = sext i32 %2480 to i64
  %2482 = getelementptr inbounds %struct.complex, ptr %2479, i64 %2481
  %2483 = getelementptr inbounds %struct.complex, ptr %2482, i32 0, i32 1
  store float %2478, ptr %2483, align 4, !tbaa !14
  br label %2484

2484:                                             ; preds = %2426
  %2485 = load i32, ptr %55, align 4, !tbaa !9
  %2486 = add nsw i32 %2485, 1
  store i32 %2486, ptr %55, align 4, !tbaa !9
  br label %2422, !llvm.loop !52

2487:                                             ; preds = %2422
  br label %2488

2488:                                             ; preds = %2487
  %2489 = load i32, ptr %56, align 4, !tbaa !9
  %2490 = add nsw i32 %2489, 1
  store i32 %2490, ptr %56, align 4, !tbaa !9
  br label %2415, !llvm.loop !53

2491:                                             ; preds = %2415
  %2492 = load ptr, ptr %23, align 8, !tbaa !5
  %2493 = load i32, ptr %2492, align 4, !tbaa !9
  %2494 = load ptr, ptr %26, align 8, !tbaa !5
  %2495 = load i32, ptr %2494, align 4, !tbaa !9
  %2496 = sub nsw i32 %2493, %2495
  store i32 %2496, ptr %47, align 4, !tbaa !9
  %2497 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %2497, align 4, !tbaa !11
  %2498 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %2498, align 4, !tbaa !14
  %2499 = load ptr, ptr %24, align 8, !tbaa !5
  %2500 = load ptr, ptr %25, align 8, !tbaa !5
  %2501 = load ptr, ptr %27, align 8, !tbaa !5
  %2502 = load i32, ptr %44, align 4, !tbaa !9
  %2503 = sext i32 %2502 to i64
  %2504 = getelementptr inbounds %struct.complex, ptr %2501, i64 %2503
  %2505 = load ptr, ptr %28, align 8, !tbaa !5
  %2506 = load ptr, ptr %35, align 8, !tbaa !5
  %2507 = load i32, ptr %46, align 4, !tbaa !9
  %2508 = sext i32 %2507 to i64
  %2509 = getelementptr inbounds %struct.complex, ptr %2506, i64 %2508
  %2510 = load ptr, ptr %36, align 8, !tbaa !5
  %2511 = load ptr, ptr %33, align 8, !tbaa !5
  %2512 = load i32, ptr %40, align 4, !tbaa !9
  %2513 = sext i32 %2512 to i64
  %2514 = getelementptr inbounds %struct.complex, ptr %2511, i64 %2513
  %2515 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %47, ptr noundef %2499, ptr noundef %2500, ptr noundef %52, ptr noundef %2504, ptr noundef %2505, ptr noundef %2509, ptr noundef %2510, ptr noundef @c_b1, ptr noundef %2514, ptr noundef %2515)
  %2516 = load ptr, ptr %25, align 8, !tbaa !5
  %2517 = load i32, ptr %2516, align 4, !tbaa !9
  %2518 = load ptr, ptr %26, align 8, !tbaa !5
  %2519 = load i32, ptr %2518, align 4, !tbaa !9
  %2520 = sub nsw i32 %2517, %2519
  store i32 %2520, ptr %47, align 4, !tbaa !9
  %2521 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %2521, align 4, !tbaa !11
  %2522 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %2522, align 4, !tbaa !14
  %2523 = load ptr, ptr %26, align 8, !tbaa !5
  %2524 = load ptr, ptr %24, align 8, !tbaa !5
  %2525 = load ptr, ptr %27, align 8, !tbaa !5
  %2526 = load i32, ptr %58, align 4, !tbaa !9
  %2527 = load i32, ptr %59, align 4, !tbaa !9
  %2528 = load i32, ptr %43, align 4, !tbaa !9
  %2529 = mul nsw i32 %2527, %2528
  %2530 = add nsw i32 %2526, %2529
  %2531 = sext i32 %2530 to i64
  %2532 = getelementptr inbounds %struct.complex, ptr %2525, i64 %2531
  %2533 = load ptr, ptr %28, align 8, !tbaa !5
  %2534 = load ptr, ptr %35, align 8, !tbaa !5
  %2535 = load i32, ptr %58, align 4, !tbaa !9
  %2536 = load i32, ptr %45, align 4, !tbaa !9
  %2537 = add nsw i32 %2535, %2536
  %2538 = sext i32 %2537 to i64
  %2539 = getelementptr inbounds %struct.complex, ptr %2534, i64 %2538
  %2540 = load ptr, ptr %36, align 8, !tbaa !5
  %2541 = load ptr, ptr %33, align 8, !tbaa !5
  %2542 = load i32, ptr %59, align 4, !tbaa !9
  %2543 = load i32, ptr %39, align 4, !tbaa !9
  %2544 = add nsw i32 %2542, %2543
  %2545 = sext i32 %2544 to i64
  %2546 = getelementptr inbounds %struct.complex, ptr %2541, i64 %2545
  %2547 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %2523, ptr noundef %2524, ptr noundef %47, ptr noundef %52, ptr noundef %2532, ptr noundef %2533, ptr noundef %2539, ptr noundef %2540, ptr noundef @c_b1, ptr noundef %2546, ptr noundef %2547)
  %2548 = load ptr, ptr %26, align 8, !tbaa !5
  %2549 = load ptr, ptr %24, align 8, !tbaa !5
  %2550 = load ptr, ptr %27, align 8, !tbaa !5
  %2551 = load i32, ptr %59, align 4, !tbaa !9
  %2552 = load i32, ptr %43, align 4, !tbaa !9
  %2553 = mul nsw i32 %2551, %2552
  %2554 = add nsw i32 %2553, 1
  %2555 = sext i32 %2554 to i64
  %2556 = getelementptr inbounds %struct.complex, ptr %2550, i64 %2555
  %2557 = load ptr, ptr %28, align 8, !tbaa !5
  %2558 = load ptr, ptr %35, align 8, !tbaa !5
  %2559 = load i32, ptr %46, align 4, !tbaa !9
  %2560 = sext i32 %2559 to i64
  %2561 = getelementptr inbounds %struct.complex, ptr %2558, i64 %2560
  %2562 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %2548, ptr noundef %2549, ptr noundef @c_b1, ptr noundef %2556, ptr noundef %2557, ptr noundef %2561, ptr noundef %2562)
  %2563 = load ptr, ptr %24, align 8, !tbaa !5
  %2564 = load i32, ptr %2563, align 4, !tbaa !9
  store i32 %2564, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2565

2565:                                             ; preds = %2650, %2491
  %2566 = load i32, ptr %56, align 4, !tbaa !9
  %2567 = load i32, ptr %47, align 4, !tbaa !9
  %2568 = icmp sle i32 %2566, %2567
  br i1 %2568, label %2569, label %2653

2569:                                             ; preds = %2565
  %2570 = load ptr, ptr %26, align 8, !tbaa !5
  %2571 = load i32, ptr %2570, align 4, !tbaa !9
  store i32 %2571, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2572

2572:                                             ; preds = %2646, %2569
  %2573 = load i32, ptr %55, align 4, !tbaa !9
  %2574 = load i32, ptr %48, align 4, !tbaa !9
  %2575 = icmp sle i32 %2573, %2574
  br i1 %2575, label %2576, label %2649

2576:                                             ; preds = %2572
  %2577 = load ptr, ptr %23, align 8, !tbaa !5
  %2578 = load i32, ptr %2577, align 4, !tbaa !9
  %2579 = load ptr, ptr %26, align 8, !tbaa !5
  %2580 = load i32, ptr %2579, align 4, !tbaa !9
  %2581 = sub nsw i32 %2578, %2580
  %2582 = load i32, ptr %55, align 4, !tbaa !9
  %2583 = add nsw i32 %2581, %2582
  %2584 = load i32, ptr %56, align 4, !tbaa !9
  %2585 = load i32, ptr %39, align 4, !tbaa !9
  %2586 = mul nsw i32 %2584, %2585
  %2587 = add nsw i32 %2583, %2586
  store i32 %2587, ptr %49, align 4, !tbaa !9
  %2588 = load ptr, ptr %23, align 8, !tbaa !5
  %2589 = load i32, ptr %2588, align 4, !tbaa !9
  %2590 = load ptr, ptr %26, align 8, !tbaa !5
  %2591 = load i32, ptr %2590, align 4, !tbaa !9
  %2592 = sub nsw i32 %2589, %2591
  %2593 = load i32, ptr %55, align 4, !tbaa !9
  %2594 = add nsw i32 %2592, %2593
  %2595 = load i32, ptr %56, align 4, !tbaa !9
  %2596 = load i32, ptr %39, align 4, !tbaa !9
  %2597 = mul nsw i32 %2595, %2596
  %2598 = add nsw i32 %2594, %2597
  store i32 %2598, ptr %50, align 4, !tbaa !9
  %2599 = load i32, ptr %55, align 4, !tbaa !9
  %2600 = load i32, ptr %56, align 4, !tbaa !9
  %2601 = load i32, ptr %45, align 4, !tbaa !9
  %2602 = mul nsw i32 %2600, %2601
  %2603 = add nsw i32 %2599, %2602
  store i32 %2603, ptr %51, align 4, !tbaa !9
  %2604 = load ptr, ptr %33, align 8, !tbaa !5
  %2605 = load i32, ptr %50, align 4, !tbaa !9
  %2606 = sext i32 %2605 to i64
  %2607 = getelementptr inbounds %struct.complex, ptr %2604, i64 %2606
  %2608 = getelementptr inbounds %struct.complex, ptr %2607, i32 0, i32 0
  %2609 = load float, ptr %2608, align 4, !tbaa !11
  %2610 = load ptr, ptr %35, align 8, !tbaa !5
  %2611 = load i32, ptr %51, align 4, !tbaa !9
  %2612 = sext i32 %2611 to i64
  %2613 = getelementptr inbounds %struct.complex, ptr %2610, i64 %2612
  %2614 = getelementptr inbounds %struct.complex, ptr %2613, i32 0, i32 0
  %2615 = load float, ptr %2614, align 4, !tbaa !11
  %2616 = fsub float %2609, %2615
  %2617 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2616, ptr %2617, align 4, !tbaa !11
  %2618 = load ptr, ptr %33, align 8, !tbaa !5
  %2619 = load i32, ptr %50, align 4, !tbaa !9
  %2620 = sext i32 %2619 to i64
  %2621 = getelementptr inbounds %struct.complex, ptr %2618, i64 %2620
  %2622 = getelementptr inbounds %struct.complex, ptr %2621, i32 0, i32 1
  %2623 = load float, ptr %2622, align 4, !tbaa !14
  %2624 = load ptr, ptr %35, align 8, !tbaa !5
  %2625 = load i32, ptr %51, align 4, !tbaa !9
  %2626 = sext i32 %2625 to i64
  %2627 = getelementptr inbounds %struct.complex, ptr %2624, i64 %2626
  %2628 = getelementptr inbounds %struct.complex, ptr %2627, i32 0, i32 1
  %2629 = load float, ptr %2628, align 4, !tbaa !14
  %2630 = fsub float %2623, %2629
  %2631 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2630, ptr %2631, align 4, !tbaa !14
  %2632 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2633 = load float, ptr %2632, align 4, !tbaa !11
  %2634 = load ptr, ptr %33, align 8, !tbaa !5
  %2635 = load i32, ptr %49, align 4, !tbaa !9
  %2636 = sext i32 %2635 to i64
  %2637 = getelementptr inbounds %struct.complex, ptr %2634, i64 %2636
  %2638 = getelementptr inbounds %struct.complex, ptr %2637, i32 0, i32 0
  store float %2633, ptr %2638, align 4, !tbaa !11
  %2639 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2640 = load float, ptr %2639, align 4, !tbaa !14
  %2641 = load ptr, ptr %33, align 8, !tbaa !5
  %2642 = load i32, ptr %49, align 4, !tbaa !9
  %2643 = sext i32 %2642 to i64
  %2644 = getelementptr inbounds %struct.complex, ptr %2641, i64 %2643
  %2645 = getelementptr inbounds %struct.complex, ptr %2644, i32 0, i32 1
  store float %2640, ptr %2645, align 4, !tbaa !14
  br label %2646

2646:                                             ; preds = %2576
  %2647 = load i32, ptr %55, align 4, !tbaa !9
  %2648 = add nsw i32 %2647, 1
  store i32 %2648, ptr %55, align 4, !tbaa !9
  br label %2572, !llvm.loop !54

2649:                                             ; preds = %2572
  br label %2650

2650:                                             ; preds = %2649
  %2651 = load i32, ptr %56, align 4, !tbaa !9
  %2652 = add nsw i32 %2651, 1
  store i32 %2652, ptr %56, align 4, !tbaa !9
  br label %2565, !llvm.loop !55

2653:                                             ; preds = %2565
  br label %4150

2654:                                             ; preds = %2163, %2160, %2157
  %2655 = load i32, ptr %62, align 4, !tbaa !9
  %2656 = icmp ne i32 %2655, 0
  br i1 %2656, label %2657, label %3154

2657:                                             ; preds = %2654
  %2658 = load i32, ptr %63, align 4, !tbaa !9
  %2659 = icmp ne i32 %2658, 0
  br i1 %2659, label %2660, label %3154

2660:                                             ; preds = %2657
  %2661 = load i32, ptr %57, align 4, !tbaa !9
  %2662 = icmp ne i32 %2661, 0
  br i1 %2662, label %2663, label %3154

2663:                                             ; preds = %2660
  %2664 = load ptr, ptr %24, align 8, !tbaa !5
  %2665 = load i32, ptr %2664, align 4, !tbaa !9
  %2666 = load ptr, ptr %26, align 8, !tbaa !5
  %2667 = load i32, ptr %2666, align 4, !tbaa !9
  %2668 = sub nsw i32 %2665, %2667
  %2669 = add nsw i32 %2668, 1
  store i32 %2669, ptr %47, align 4, !tbaa !9
  %2670 = load i32, ptr %47, align 4, !tbaa !9
  %2671 = load ptr, ptr %24, align 8, !tbaa !5
  %2672 = load i32, ptr %2671, align 4, !tbaa !9
  %2673 = icmp sle i32 %2670, %2672
  br i1 %2673, label %2674, label %2676

2674:                                             ; preds = %2663
  %2675 = load i32, ptr %47, align 4, !tbaa !9
  br label %2679

2676:                                             ; preds = %2663
  %2677 = load ptr, ptr %24, align 8, !tbaa !5
  %2678 = load i32, ptr %2677, align 4, !tbaa !9
  br label %2679

2679:                                             ; preds = %2676, %2674
  %2680 = phi i32 [ %2675, %2674 ], [ %2678, %2676 ]
  store i32 %2680, ptr %60, align 4, !tbaa !9
  %2681 = load ptr, ptr %26, align 8, !tbaa !5
  %2682 = load i32, ptr %2681, align 4, !tbaa !9
  %2683 = add nsw i32 %2682, 1
  store i32 %2683, ptr %47, align 4, !tbaa !9
  %2684 = load i32, ptr %47, align 4, !tbaa !9
  %2685 = load ptr, ptr %25, align 8, !tbaa !5
  %2686 = load i32, ptr %2685, align 4, !tbaa !9
  %2687 = icmp sle i32 %2684, %2686
  br i1 %2687, label %2688, label %2690

2688:                                             ; preds = %2679
  %2689 = load i32, ptr %47, align 4, !tbaa !9
  br label %2693

2690:                                             ; preds = %2679
  %2691 = load ptr, ptr %25, align 8, !tbaa !5
  %2692 = load i32, ptr %2691, align 4, !tbaa !9
  br label %2693

2693:                                             ; preds = %2690, %2688
  %2694 = phi i32 [ %2689, %2688 ], [ %2692, %2690 ]
  store i32 %2694, ptr %58, align 4, !tbaa !9
  %2695 = load ptr, ptr %26, align 8, !tbaa !5
  %2696 = load i32, ptr %2695, align 4, !tbaa !9
  store i32 %2696, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2697

2697:                                             ; preds = %2751, %2693
  %2698 = load i32, ptr %56, align 4, !tbaa !9
  %2699 = load i32, ptr %47, align 4, !tbaa !9
  %2700 = icmp sle i32 %2698, %2699
  br i1 %2700, label %2701, label %2754

2701:                                             ; preds = %2697
  %2702 = load ptr, ptr %23, align 8, !tbaa !5
  %2703 = load i32, ptr %2702, align 4, !tbaa !9
  store i32 %2703, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2704

2704:                                             ; preds = %2747, %2701
  %2705 = load i32, ptr %55, align 4, !tbaa !9
  %2706 = load i32, ptr %48, align 4, !tbaa !9
  %2707 = icmp sle i32 %2705, %2706
  br i1 %2707, label %2708, label %2750

2708:                                             ; preds = %2704
  %2709 = load i32, ptr %55, align 4, !tbaa !9
  %2710 = load i32, ptr %56, align 4, !tbaa !9
  %2711 = load i32, ptr %45, align 4, !tbaa !9
  %2712 = mul nsw i32 %2710, %2711
  %2713 = add nsw i32 %2709, %2712
  store i32 %2713, ptr %49, align 4, !tbaa !9
  %2714 = load i32, ptr %55, align 4, !tbaa !9
  %2715 = load ptr, ptr %24, align 8, !tbaa !5
  %2716 = load i32, ptr %2715, align 4, !tbaa !9
  %2717 = load ptr, ptr %26, align 8, !tbaa !5
  %2718 = load i32, ptr %2717, align 4, !tbaa !9
  %2719 = sub nsw i32 %2716, %2718
  %2720 = load i32, ptr %56, align 4, !tbaa !9
  %2721 = add nsw i32 %2719, %2720
  %2722 = load i32, ptr %39, align 4, !tbaa !9
  %2723 = mul nsw i32 %2721, %2722
  %2724 = add nsw i32 %2714, %2723
  store i32 %2724, ptr %50, align 4, !tbaa !9
  %2725 = load ptr, ptr %33, align 8, !tbaa !5
  %2726 = load i32, ptr %50, align 4, !tbaa !9
  %2727 = sext i32 %2726 to i64
  %2728 = getelementptr inbounds %struct.complex, ptr %2725, i64 %2727
  %2729 = getelementptr inbounds %struct.complex, ptr %2728, i32 0, i32 0
  %2730 = load float, ptr %2729, align 4, !tbaa !11
  %2731 = load ptr, ptr %35, align 8, !tbaa !5
  %2732 = load i32, ptr %49, align 4, !tbaa !9
  %2733 = sext i32 %2732 to i64
  %2734 = getelementptr inbounds %struct.complex, ptr %2731, i64 %2733
  %2735 = getelementptr inbounds %struct.complex, ptr %2734, i32 0, i32 0
  store float %2730, ptr %2735, align 4, !tbaa !11
  %2736 = load ptr, ptr %33, align 8, !tbaa !5
  %2737 = load i32, ptr %50, align 4, !tbaa !9
  %2738 = sext i32 %2737 to i64
  %2739 = getelementptr inbounds %struct.complex, ptr %2736, i64 %2738
  %2740 = getelementptr inbounds %struct.complex, ptr %2739, i32 0, i32 1
  %2741 = load float, ptr %2740, align 4, !tbaa !14
  %2742 = load ptr, ptr %35, align 8, !tbaa !5
  %2743 = load i32, ptr %49, align 4, !tbaa !9
  %2744 = sext i32 %2743 to i64
  %2745 = getelementptr inbounds %struct.complex, ptr %2742, i64 %2744
  %2746 = getelementptr inbounds %struct.complex, ptr %2745, i32 0, i32 1
  store float %2741, ptr %2746, align 4, !tbaa !14
  br label %2747

2747:                                             ; preds = %2708
  %2748 = load i32, ptr %55, align 4, !tbaa !9
  %2749 = add nsw i32 %2748, 1
  store i32 %2749, ptr %55, align 4, !tbaa !9
  br label %2704, !llvm.loop !56

2750:                                             ; preds = %2704
  br label %2751

2751:                                             ; preds = %2750
  %2752 = load i32, ptr %56, align 4, !tbaa !9
  %2753 = add nsw i32 %2752, 1
  store i32 %2753, ptr %56, align 4, !tbaa !9
  br label %2697, !llvm.loop !57

2754:                                             ; preds = %2697
  %2755 = load ptr, ptr %23, align 8, !tbaa !5
  %2756 = load ptr, ptr %26, align 8, !tbaa !5
  %2757 = load ptr, ptr %27, align 8, !tbaa !5
  %2758 = load i32, ptr %60, align 4, !tbaa !9
  %2759 = load i32, ptr %43, align 4, !tbaa !9
  %2760 = mul nsw i32 %2758, %2759
  %2761 = add nsw i32 %2760, 1
  %2762 = sext i32 %2761 to i64
  %2763 = getelementptr inbounds %struct.complex, ptr %2757, i64 %2762
  %2764 = load ptr, ptr %28, align 8, !tbaa !5
  %2765 = load ptr, ptr %35, align 8, !tbaa !5
  %2766 = load i32, ptr %46, align 4, !tbaa !9
  %2767 = sext i32 %2766 to i64
  %2768 = getelementptr inbounds %struct.complex, ptr %2765, i64 %2767
  %2769 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %2755, ptr noundef %2756, ptr noundef @c_b1, ptr noundef %2763, ptr noundef %2764, ptr noundef %2768, ptr noundef %2769)
  %2770 = load ptr, ptr %24, align 8, !tbaa !5
  %2771 = load i32, ptr %2770, align 4, !tbaa !9
  %2772 = load ptr, ptr %26, align 8, !tbaa !5
  %2773 = load i32, ptr %2772, align 4, !tbaa !9
  %2774 = sub nsw i32 %2771, %2773
  store i32 %2774, ptr %47, align 4, !tbaa !9
  %2775 = load ptr, ptr %23, align 8, !tbaa !5
  %2776 = load ptr, ptr %26, align 8, !tbaa !5
  %2777 = load ptr, ptr %33, align 8, !tbaa !5
  %2778 = load i32, ptr %40, align 4, !tbaa !9
  %2779 = sext i32 %2778 to i64
  %2780 = getelementptr inbounds %struct.complex, ptr %2777, i64 %2779
  %2781 = load ptr, ptr %34, align 8, !tbaa !5
  %2782 = load ptr, ptr %27, align 8, !tbaa !5
  %2783 = load i32, ptr %44, align 4, !tbaa !9
  %2784 = sext i32 %2783 to i64
  %2785 = getelementptr inbounds %struct.complex, ptr %2782, i64 %2784
  %2786 = load ptr, ptr %28, align 8, !tbaa !5
  %2787 = load ptr, ptr %35, align 8, !tbaa !5
  %2788 = load i32, ptr %46, align 4, !tbaa !9
  %2789 = sext i32 %2788 to i64
  %2790 = getelementptr inbounds %struct.complex, ptr %2787, i64 %2789
  %2791 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %2775, ptr noundef %2776, ptr noundef %47, ptr noundef @c_b1, ptr noundef %2780, ptr noundef %2781, ptr noundef %2785, ptr noundef %2786, ptr noundef @c_b1, ptr noundef %2790, ptr noundef %2791)
  %2792 = load ptr, ptr %25, align 8, !tbaa !5
  %2793 = load i32, ptr %2792, align 4, !tbaa !9
  %2794 = load ptr, ptr %26, align 8, !tbaa !5
  %2795 = load i32, ptr %2794, align 4, !tbaa !9
  %2796 = sub nsw i32 %2793, %2795
  store i32 %2796, ptr %47, align 4, !tbaa !9
  %2797 = load ptr, ptr %23, align 8, !tbaa !5
  %2798 = load ptr, ptr %24, align 8, !tbaa !5
  %2799 = load ptr, ptr %33, align 8, !tbaa !5
  %2800 = load i32, ptr %40, align 4, !tbaa !9
  %2801 = sext i32 %2800 to i64
  %2802 = getelementptr inbounds %struct.complex, ptr %2799, i64 %2801
  %2803 = load ptr, ptr %34, align 8, !tbaa !5
  %2804 = load ptr, ptr %27, align 8, !tbaa !5
  %2805 = load i32, ptr %58, align 4, !tbaa !9
  %2806 = load i32, ptr %43, align 4, !tbaa !9
  %2807 = add nsw i32 %2805, %2806
  %2808 = sext i32 %2807 to i64
  %2809 = getelementptr inbounds %struct.complex, ptr %2804, i64 %2808
  %2810 = load ptr, ptr %28, align 8, !tbaa !5
  %2811 = load ptr, ptr %35, align 8, !tbaa !5
  %2812 = load i32, ptr %58, align 4, !tbaa !9
  %2813 = load i32, ptr %45, align 4, !tbaa !9
  %2814 = mul nsw i32 %2812, %2813
  %2815 = add nsw i32 %2814, 1
  %2816 = sext i32 %2815 to i64
  %2817 = getelementptr inbounds %struct.complex, ptr %2811, i64 %2816
  %2818 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %2797, ptr noundef %47, ptr noundef %2798, ptr noundef @c_b1, ptr noundef %2802, ptr noundef %2803, ptr noundef %2809, ptr noundef %2810, ptr noundef @c_b2, ptr noundef %2817, ptr noundef %2818)
  %2819 = load ptr, ptr %25, align 8, !tbaa !5
  %2820 = load i32, ptr %2819, align 4, !tbaa !9
  store i32 %2820, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2821

2821:                                             ; preds = %2894, %2754
  %2822 = load i32, ptr %56, align 4, !tbaa !9
  %2823 = load i32, ptr %47, align 4, !tbaa !9
  %2824 = icmp sle i32 %2822, %2823
  br i1 %2824, label %2825, label %2897

2825:                                             ; preds = %2821
  %2826 = load ptr, ptr %23, align 8, !tbaa !5
  %2827 = load i32, ptr %2826, align 4, !tbaa !9
  store i32 %2827, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2828

2828:                                             ; preds = %2890, %2825
  %2829 = load i32, ptr %55, align 4, !tbaa !9
  %2830 = load i32, ptr %48, align 4, !tbaa !9
  %2831 = icmp sle i32 %2829, %2830
  br i1 %2831, label %2832, label %2893

2832:                                             ; preds = %2828
  %2833 = load i32, ptr %55, align 4, !tbaa !9
  %2834 = load i32, ptr %56, align 4, !tbaa !9
  %2835 = load i32, ptr %45, align 4, !tbaa !9
  %2836 = mul nsw i32 %2834, %2835
  %2837 = add nsw i32 %2833, %2836
  store i32 %2837, ptr %49, align 4, !tbaa !9
  %2838 = load i32, ptr %55, align 4, !tbaa !9
  %2839 = load i32, ptr %56, align 4, !tbaa !9
  %2840 = load i32, ptr %45, align 4, !tbaa !9
  %2841 = mul nsw i32 %2839, %2840
  %2842 = add nsw i32 %2838, %2841
  store i32 %2842, ptr %50, align 4, !tbaa !9
  %2843 = load i32, ptr %55, align 4, !tbaa !9
  %2844 = load i32, ptr %56, align 4, !tbaa !9
  %2845 = load i32, ptr %37, align 4, !tbaa !9
  %2846 = mul nsw i32 %2844, %2845
  %2847 = add nsw i32 %2843, %2846
  store i32 %2847, ptr %51, align 4, !tbaa !9
  %2848 = load ptr, ptr %35, align 8, !tbaa !5
  %2849 = load i32, ptr %50, align 4, !tbaa !9
  %2850 = sext i32 %2849 to i64
  %2851 = getelementptr inbounds %struct.complex, ptr %2848, i64 %2850
  %2852 = getelementptr inbounds %struct.complex, ptr %2851, i32 0, i32 0
  %2853 = load float, ptr %2852, align 4, !tbaa !11
  %2854 = load ptr, ptr %31, align 8, !tbaa !5
  %2855 = load i32, ptr %51, align 4, !tbaa !9
  %2856 = sext i32 %2855 to i64
  %2857 = getelementptr inbounds %struct.complex, ptr %2854, i64 %2856
  %2858 = getelementptr inbounds %struct.complex, ptr %2857, i32 0, i32 0
  %2859 = load float, ptr %2858, align 4, !tbaa !11
  %2860 = fadd float %2853, %2859
  %2861 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2860, ptr %2861, align 4, !tbaa !11
  %2862 = load ptr, ptr %35, align 8, !tbaa !5
  %2863 = load i32, ptr %50, align 4, !tbaa !9
  %2864 = sext i32 %2863 to i64
  %2865 = getelementptr inbounds %struct.complex, ptr %2862, i64 %2864
  %2866 = getelementptr inbounds %struct.complex, ptr %2865, i32 0, i32 1
  %2867 = load float, ptr %2866, align 4, !tbaa !14
  %2868 = load ptr, ptr %31, align 8, !tbaa !5
  %2869 = load i32, ptr %51, align 4, !tbaa !9
  %2870 = sext i32 %2869 to i64
  %2871 = getelementptr inbounds %struct.complex, ptr %2868, i64 %2870
  %2872 = getelementptr inbounds %struct.complex, ptr %2871, i32 0, i32 1
  %2873 = load float, ptr %2872, align 4, !tbaa !14
  %2874 = fadd float %2867, %2873
  %2875 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2874, ptr %2875, align 4, !tbaa !14
  %2876 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2877 = load float, ptr %2876, align 4, !tbaa !11
  %2878 = load ptr, ptr %35, align 8, !tbaa !5
  %2879 = load i32, ptr %49, align 4, !tbaa !9
  %2880 = sext i32 %2879 to i64
  %2881 = getelementptr inbounds %struct.complex, ptr %2878, i64 %2880
  %2882 = getelementptr inbounds %struct.complex, ptr %2881, i32 0, i32 0
  store float %2877, ptr %2882, align 4, !tbaa !11
  %2883 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2884 = load float, ptr %2883, align 4, !tbaa !14
  %2885 = load ptr, ptr %35, align 8, !tbaa !5
  %2886 = load i32, ptr %49, align 4, !tbaa !9
  %2887 = sext i32 %2886 to i64
  %2888 = getelementptr inbounds %struct.complex, ptr %2885, i64 %2887
  %2889 = getelementptr inbounds %struct.complex, ptr %2888, i32 0, i32 1
  store float %2884, ptr %2889, align 4, !tbaa !14
  br label %2890

2890:                                             ; preds = %2832
  %2891 = load i32, ptr %55, align 4, !tbaa !9
  %2892 = add nsw i32 %2891, 1
  store i32 %2892, ptr %55, align 4, !tbaa !9
  br label %2828, !llvm.loop !58

2893:                                             ; preds = %2828
  br label %2894

2894:                                             ; preds = %2893
  %2895 = load i32, ptr %56, align 4, !tbaa !9
  %2896 = add nsw i32 %2895, 1
  store i32 %2896, ptr %56, align 4, !tbaa !9
  br label %2821, !llvm.loop !59

2897:                                             ; preds = %2821
  %2898 = load ptr, ptr %20, align 8, !tbaa !5
  %2899 = load ptr, ptr %23, align 8, !tbaa !5
  %2900 = load ptr, ptr %25, align 8, !tbaa !5
  %2901 = load ptr, ptr %29, align 8, !tbaa !5
  %2902 = load i32, ptr %42, align 4, !tbaa !9
  %2903 = sext i32 %2902 to i64
  %2904 = getelementptr inbounds %struct.complex, ptr %2901, i64 %2903
  %2905 = load ptr, ptr %30, align 8, !tbaa !5
  %2906 = load ptr, ptr %35, align 8, !tbaa !5
  %2907 = load i32, ptr %46, align 4, !tbaa !9
  %2908 = sext i32 %2907 to i64
  %2909 = getelementptr inbounds %struct.complex, ptr %2906, i64 %2908
  %2910 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef %2898, ptr noundef @.str.6, ptr noundef %2899, ptr noundef %2900, ptr noundef @c_b1, ptr noundef %2904, ptr noundef %2905, ptr noundef %2909, ptr noundef %2910)
  %2911 = load ptr, ptr %25, align 8, !tbaa !5
  %2912 = load i32, ptr %2911, align 4, !tbaa !9
  store i32 %2912, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %2913

2913:                                             ; preds = %2986, %2897
  %2914 = load i32, ptr %56, align 4, !tbaa !9
  %2915 = load i32, ptr %47, align 4, !tbaa !9
  %2916 = icmp sle i32 %2914, %2915
  br i1 %2916, label %2917, label %2989

2917:                                             ; preds = %2913
  %2918 = load ptr, ptr %23, align 8, !tbaa !5
  %2919 = load i32, ptr %2918, align 4, !tbaa !9
  store i32 %2919, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2920

2920:                                             ; preds = %2982, %2917
  %2921 = load i32, ptr %55, align 4, !tbaa !9
  %2922 = load i32, ptr %48, align 4, !tbaa !9
  %2923 = icmp sle i32 %2921, %2922
  br i1 %2923, label %2924, label %2985

2924:                                             ; preds = %2920
  %2925 = load i32, ptr %55, align 4, !tbaa !9
  %2926 = load i32, ptr %56, align 4, !tbaa !9
  %2927 = load i32, ptr %37, align 4, !tbaa !9
  %2928 = mul nsw i32 %2926, %2927
  %2929 = add nsw i32 %2925, %2928
  store i32 %2929, ptr %49, align 4, !tbaa !9
  %2930 = load i32, ptr %55, align 4, !tbaa !9
  %2931 = load i32, ptr %56, align 4, !tbaa !9
  %2932 = load i32, ptr %37, align 4, !tbaa !9
  %2933 = mul nsw i32 %2931, %2932
  %2934 = add nsw i32 %2930, %2933
  store i32 %2934, ptr %50, align 4, !tbaa !9
  %2935 = load i32, ptr %55, align 4, !tbaa !9
  %2936 = load i32, ptr %56, align 4, !tbaa !9
  %2937 = load i32, ptr %45, align 4, !tbaa !9
  %2938 = mul nsw i32 %2936, %2937
  %2939 = add nsw i32 %2935, %2938
  store i32 %2939, ptr %51, align 4, !tbaa !9
  %2940 = load ptr, ptr %31, align 8, !tbaa !5
  %2941 = load i32, ptr %50, align 4, !tbaa !9
  %2942 = sext i32 %2941 to i64
  %2943 = getelementptr inbounds %struct.complex, ptr %2940, i64 %2942
  %2944 = getelementptr inbounds %struct.complex, ptr %2943, i32 0, i32 0
  %2945 = load float, ptr %2944, align 4, !tbaa !11
  %2946 = load ptr, ptr %35, align 8, !tbaa !5
  %2947 = load i32, ptr %51, align 4, !tbaa !9
  %2948 = sext i32 %2947 to i64
  %2949 = getelementptr inbounds %struct.complex, ptr %2946, i64 %2948
  %2950 = getelementptr inbounds %struct.complex, ptr %2949, i32 0, i32 0
  %2951 = load float, ptr %2950, align 4, !tbaa !11
  %2952 = fsub float %2945, %2951
  %2953 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %2952, ptr %2953, align 4, !tbaa !11
  %2954 = load ptr, ptr %31, align 8, !tbaa !5
  %2955 = load i32, ptr %50, align 4, !tbaa !9
  %2956 = sext i32 %2955 to i64
  %2957 = getelementptr inbounds %struct.complex, ptr %2954, i64 %2956
  %2958 = getelementptr inbounds %struct.complex, ptr %2957, i32 0, i32 1
  %2959 = load float, ptr %2958, align 4, !tbaa !14
  %2960 = load ptr, ptr %35, align 8, !tbaa !5
  %2961 = load i32, ptr %51, align 4, !tbaa !9
  %2962 = sext i32 %2961 to i64
  %2963 = getelementptr inbounds %struct.complex, ptr %2960, i64 %2962
  %2964 = getelementptr inbounds %struct.complex, ptr %2963, i32 0, i32 1
  %2965 = load float, ptr %2964, align 4, !tbaa !14
  %2966 = fsub float %2959, %2965
  %2967 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %2966, ptr %2967, align 4, !tbaa !14
  %2968 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %2969 = load float, ptr %2968, align 4, !tbaa !11
  %2970 = load ptr, ptr %31, align 8, !tbaa !5
  %2971 = load i32, ptr %49, align 4, !tbaa !9
  %2972 = sext i32 %2971 to i64
  %2973 = getelementptr inbounds %struct.complex, ptr %2970, i64 %2972
  %2974 = getelementptr inbounds %struct.complex, ptr %2973, i32 0, i32 0
  store float %2969, ptr %2974, align 4, !tbaa !11
  %2975 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %2976 = load float, ptr %2975, align 4, !tbaa !14
  %2977 = load ptr, ptr %31, align 8, !tbaa !5
  %2978 = load i32, ptr %49, align 4, !tbaa !9
  %2979 = sext i32 %2978 to i64
  %2980 = getelementptr inbounds %struct.complex, ptr %2977, i64 %2979
  %2981 = getelementptr inbounds %struct.complex, ptr %2980, i32 0, i32 1
  store float %2976, ptr %2981, align 4, !tbaa !14
  br label %2982

2982:                                             ; preds = %2924
  %2983 = load i32, ptr %55, align 4, !tbaa !9
  %2984 = add nsw i32 %2983, 1
  store i32 %2984, ptr %55, align 4, !tbaa !9
  br label %2920, !llvm.loop !60

2985:                                             ; preds = %2920
  br label %2986

2986:                                             ; preds = %2985
  %2987 = load i32, ptr %56, align 4, !tbaa !9
  %2988 = add nsw i32 %2987, 1
  store i32 %2988, ptr %56, align 4, !tbaa !9
  br label %2913, !llvm.loop !61

2989:                                             ; preds = %2913
  %2990 = load ptr, ptr %24, align 8, !tbaa !5
  %2991 = load i32, ptr %2990, align 4, !tbaa !9
  %2992 = load ptr, ptr %26, align 8, !tbaa !5
  %2993 = load i32, ptr %2992, align 4, !tbaa !9
  %2994 = sub nsw i32 %2991, %2993
  store i32 %2994, ptr %47, align 4, !tbaa !9
  %2995 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %2995, align 4, !tbaa !11
  %2996 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %2996, align 4, !tbaa !14
  %2997 = load ptr, ptr %23, align 8, !tbaa !5
  %2998 = load ptr, ptr %25, align 8, !tbaa !5
  %2999 = load ptr, ptr %35, align 8, !tbaa !5
  %3000 = load i32, ptr %46, align 4, !tbaa !9
  %3001 = sext i32 %3000 to i64
  %3002 = getelementptr inbounds %struct.complex, ptr %2999, i64 %3001
  %3003 = load ptr, ptr %36, align 8, !tbaa !5
  %3004 = load ptr, ptr %27, align 8, !tbaa !5
  %3005 = load i32, ptr %44, align 4, !tbaa !9
  %3006 = sext i32 %3005 to i64
  %3007 = getelementptr inbounds %struct.complex, ptr %3004, i64 %3006
  %3008 = load ptr, ptr %28, align 8, !tbaa !5
  %3009 = load ptr, ptr %33, align 8, !tbaa !5
  %3010 = load i32, ptr %40, align 4, !tbaa !9
  %3011 = sext i32 %3010 to i64
  %3012 = getelementptr inbounds %struct.complex, ptr %3009, i64 %3011
  %3013 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %2997, ptr noundef %47, ptr noundef %2998, ptr noundef %52, ptr noundef %3002, ptr noundef %3003, ptr noundef %3007, ptr noundef %3008, ptr noundef @c_b1, ptr noundef %3012, ptr noundef %3013)
  %3014 = load ptr, ptr %25, align 8, !tbaa !5
  %3015 = load i32, ptr %3014, align 4, !tbaa !9
  %3016 = load ptr, ptr %26, align 8, !tbaa !5
  %3017 = load i32, ptr %3016, align 4, !tbaa !9
  %3018 = sub nsw i32 %3015, %3017
  store i32 %3018, ptr %47, align 4, !tbaa !9
  %3019 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %3019, align 4, !tbaa !11
  %3020 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %3020, align 4, !tbaa !14
  %3021 = load ptr, ptr %23, align 8, !tbaa !5
  %3022 = load ptr, ptr %26, align 8, !tbaa !5
  %3023 = load ptr, ptr %35, align 8, !tbaa !5
  %3024 = load i32, ptr %58, align 4, !tbaa !9
  %3025 = load i32, ptr %45, align 4, !tbaa !9
  %3026 = mul nsw i32 %3024, %3025
  %3027 = add nsw i32 %3026, 1
  %3028 = sext i32 %3027 to i64
  %3029 = getelementptr inbounds %struct.complex, ptr %3023, i64 %3028
  %3030 = load ptr, ptr %36, align 8, !tbaa !5
  %3031 = load ptr, ptr %27, align 8, !tbaa !5
  %3032 = load i32, ptr %58, align 4, !tbaa !9
  %3033 = load i32, ptr %60, align 4, !tbaa !9
  %3034 = load i32, ptr %43, align 4, !tbaa !9
  %3035 = mul nsw i32 %3033, %3034
  %3036 = add nsw i32 %3032, %3035
  %3037 = sext i32 %3036 to i64
  %3038 = getelementptr inbounds %struct.complex, ptr %3031, i64 %3037
  %3039 = load ptr, ptr %28, align 8, !tbaa !5
  %3040 = load ptr, ptr %33, align 8, !tbaa !5
  %3041 = load i32, ptr %60, align 4, !tbaa !9
  %3042 = load i32, ptr %39, align 4, !tbaa !9
  %3043 = mul nsw i32 %3041, %3042
  %3044 = add nsw i32 %3043, 1
  %3045 = sext i32 %3044 to i64
  %3046 = getelementptr inbounds %struct.complex, ptr %3040, i64 %3045
  %3047 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %3021, ptr noundef %3022, ptr noundef %47, ptr noundef %52, ptr noundef %3029, ptr noundef %3030, ptr noundef %3038, ptr noundef %3039, ptr noundef @c_b1, ptr noundef %3046, ptr noundef %3047)
  %3048 = load ptr, ptr %23, align 8, !tbaa !5
  %3049 = load ptr, ptr %26, align 8, !tbaa !5
  %3050 = load ptr, ptr %27, align 8, !tbaa !5
  %3051 = load i32, ptr %60, align 4, !tbaa !9
  %3052 = load i32, ptr %43, align 4, !tbaa !9
  %3053 = mul nsw i32 %3051, %3052
  %3054 = add nsw i32 %3053, 1
  %3055 = sext i32 %3054 to i64
  %3056 = getelementptr inbounds %struct.complex, ptr %3050, i64 %3055
  %3057 = load ptr, ptr %28, align 8, !tbaa !5
  %3058 = load ptr, ptr %35, align 8, !tbaa !5
  %3059 = load i32, ptr %46, align 4, !tbaa !9
  %3060 = sext i32 %3059 to i64
  %3061 = getelementptr inbounds %struct.complex, ptr %3058, i64 %3060
  %3062 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %3048, ptr noundef %3049, ptr noundef @c_b1, ptr noundef %3056, ptr noundef %3057, ptr noundef %3061, ptr noundef %3062)
  %3063 = load ptr, ptr %26, align 8, !tbaa !5
  %3064 = load i32, ptr %3063, align 4, !tbaa !9
  store i32 %3064, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3065

3065:                                             ; preds = %3150, %2989
  %3066 = load i32, ptr %56, align 4, !tbaa !9
  %3067 = load i32, ptr %47, align 4, !tbaa !9
  %3068 = icmp sle i32 %3066, %3067
  br i1 %3068, label %3069, label %3153

3069:                                             ; preds = %3065
  %3070 = load ptr, ptr %23, align 8, !tbaa !5
  %3071 = load i32, ptr %3070, align 4, !tbaa !9
  store i32 %3071, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3072

3072:                                             ; preds = %3146, %3069
  %3073 = load i32, ptr %55, align 4, !tbaa !9
  %3074 = load i32, ptr %48, align 4, !tbaa !9
  %3075 = icmp sle i32 %3073, %3074
  br i1 %3075, label %3076, label %3149

3076:                                             ; preds = %3072
  %3077 = load i32, ptr %55, align 4, !tbaa !9
  %3078 = load ptr, ptr %24, align 8, !tbaa !5
  %3079 = load i32, ptr %3078, align 4, !tbaa !9
  %3080 = load ptr, ptr %26, align 8, !tbaa !5
  %3081 = load i32, ptr %3080, align 4, !tbaa !9
  %3082 = sub nsw i32 %3079, %3081
  %3083 = load i32, ptr %56, align 4, !tbaa !9
  %3084 = add nsw i32 %3082, %3083
  %3085 = load i32, ptr %39, align 4, !tbaa !9
  %3086 = mul nsw i32 %3084, %3085
  %3087 = add nsw i32 %3077, %3086
  store i32 %3087, ptr %49, align 4, !tbaa !9
  %3088 = load i32, ptr %55, align 4, !tbaa !9
  %3089 = load ptr, ptr %24, align 8, !tbaa !5
  %3090 = load i32, ptr %3089, align 4, !tbaa !9
  %3091 = load ptr, ptr %26, align 8, !tbaa !5
  %3092 = load i32, ptr %3091, align 4, !tbaa !9
  %3093 = sub nsw i32 %3090, %3092
  %3094 = load i32, ptr %56, align 4, !tbaa !9
  %3095 = add nsw i32 %3093, %3094
  %3096 = load i32, ptr %39, align 4, !tbaa !9
  %3097 = mul nsw i32 %3095, %3096
  %3098 = add nsw i32 %3088, %3097
  store i32 %3098, ptr %50, align 4, !tbaa !9
  %3099 = load i32, ptr %55, align 4, !tbaa !9
  %3100 = load i32, ptr %56, align 4, !tbaa !9
  %3101 = load i32, ptr %45, align 4, !tbaa !9
  %3102 = mul nsw i32 %3100, %3101
  %3103 = add nsw i32 %3099, %3102
  store i32 %3103, ptr %51, align 4, !tbaa !9
  %3104 = load ptr, ptr %33, align 8, !tbaa !5
  %3105 = load i32, ptr %50, align 4, !tbaa !9
  %3106 = sext i32 %3105 to i64
  %3107 = getelementptr inbounds %struct.complex, ptr %3104, i64 %3106
  %3108 = getelementptr inbounds %struct.complex, ptr %3107, i32 0, i32 0
  %3109 = load float, ptr %3108, align 4, !tbaa !11
  %3110 = load ptr, ptr %35, align 8, !tbaa !5
  %3111 = load i32, ptr %51, align 4, !tbaa !9
  %3112 = sext i32 %3111 to i64
  %3113 = getelementptr inbounds %struct.complex, ptr %3110, i64 %3112
  %3114 = getelementptr inbounds %struct.complex, ptr %3113, i32 0, i32 0
  %3115 = load float, ptr %3114, align 4, !tbaa !11
  %3116 = fsub float %3109, %3115
  %3117 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3116, ptr %3117, align 4, !tbaa !11
  %3118 = load ptr, ptr %33, align 8, !tbaa !5
  %3119 = load i32, ptr %50, align 4, !tbaa !9
  %3120 = sext i32 %3119 to i64
  %3121 = getelementptr inbounds %struct.complex, ptr %3118, i64 %3120
  %3122 = getelementptr inbounds %struct.complex, ptr %3121, i32 0, i32 1
  %3123 = load float, ptr %3122, align 4, !tbaa !14
  %3124 = load ptr, ptr %35, align 8, !tbaa !5
  %3125 = load i32, ptr %51, align 4, !tbaa !9
  %3126 = sext i32 %3125 to i64
  %3127 = getelementptr inbounds %struct.complex, ptr %3124, i64 %3126
  %3128 = getelementptr inbounds %struct.complex, ptr %3127, i32 0, i32 1
  %3129 = load float, ptr %3128, align 4, !tbaa !14
  %3130 = fsub float %3123, %3129
  %3131 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3130, ptr %3131, align 4, !tbaa !14
  %3132 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3133 = load float, ptr %3132, align 4, !tbaa !11
  %3134 = load ptr, ptr %33, align 8, !tbaa !5
  %3135 = load i32, ptr %49, align 4, !tbaa !9
  %3136 = sext i32 %3135 to i64
  %3137 = getelementptr inbounds %struct.complex, ptr %3134, i64 %3136
  %3138 = getelementptr inbounds %struct.complex, ptr %3137, i32 0, i32 0
  store float %3133, ptr %3138, align 4, !tbaa !11
  %3139 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3140 = load float, ptr %3139, align 4, !tbaa !14
  %3141 = load ptr, ptr %33, align 8, !tbaa !5
  %3142 = load i32, ptr %49, align 4, !tbaa !9
  %3143 = sext i32 %3142 to i64
  %3144 = getelementptr inbounds %struct.complex, ptr %3141, i64 %3143
  %3145 = getelementptr inbounds %struct.complex, ptr %3144, i32 0, i32 1
  store float %3140, ptr %3145, align 4, !tbaa !14
  br label %3146

3146:                                             ; preds = %3076
  %3147 = load i32, ptr %55, align 4, !tbaa !9
  %3148 = add nsw i32 %3147, 1
  store i32 %3148, ptr %55, align 4, !tbaa !9
  br label %3072, !llvm.loop !62

3149:                                             ; preds = %3072
  br label %3150

3150:                                             ; preds = %3149
  %3151 = load i32, ptr %56, align 4, !tbaa !9
  %3152 = add nsw i32 %3151, 1
  store i32 %3152, ptr %56, align 4, !tbaa !9
  br label %3065, !llvm.loop !63

3153:                                             ; preds = %3065
  br label %4149

3154:                                             ; preds = %2660, %2657, %2654
  %3155 = load i32, ptr %62, align 4, !tbaa !9
  %3156 = icmp ne i32 %3155, 0
  br i1 %3156, label %3157, label %3648

3157:                                             ; preds = %3154
  %3158 = load i32, ptr %54, align 4, !tbaa !9
  %3159 = icmp ne i32 %3158, 0
  br i1 %3159, label %3160, label %3648

3160:                                             ; preds = %3157
  %3161 = load i32, ptr %53, align 4, !tbaa !9
  %3162 = icmp ne i32 %3161, 0
  br i1 %3162, label %3163, label %3648

3163:                                             ; preds = %3160
  %3164 = load ptr, ptr %26, align 8, !tbaa !5
  %3165 = load i32, ptr %3164, align 4, !tbaa !9
  %3166 = add nsw i32 %3165, 1
  store i32 %3166, ptr %47, align 4, !tbaa !9
  %3167 = load i32, ptr %47, align 4, !tbaa !9
  %3168 = load ptr, ptr %23, align 8, !tbaa !5
  %3169 = load i32, ptr %3168, align 4, !tbaa !9
  %3170 = icmp sle i32 %3167, %3169
  br i1 %3170, label %3171, label %3173

3171:                                             ; preds = %3163
  %3172 = load i32, ptr %47, align 4, !tbaa !9
  br label %3176

3173:                                             ; preds = %3163
  %3174 = load ptr, ptr %23, align 8, !tbaa !5
  %3175 = load i32, ptr %3174, align 4, !tbaa !9
  br label %3176

3176:                                             ; preds = %3173, %3171
  %3177 = phi i32 [ %3172, %3171 ], [ %3175, %3173 ]
  store i32 %3177, ptr %59, align 4, !tbaa !9
  %3178 = load ptr, ptr %25, align 8, !tbaa !5
  %3179 = load i32, ptr %3178, align 4, !tbaa !9
  %3180 = load ptr, ptr %26, align 8, !tbaa !5
  %3181 = load i32, ptr %3180, align 4, !tbaa !9
  %3182 = sub nsw i32 %3179, %3181
  %3183 = add nsw i32 %3182, 1
  store i32 %3183, ptr %47, align 4, !tbaa !9
  %3184 = load i32, ptr %47, align 4, !tbaa !9
  %3185 = load ptr, ptr %25, align 8, !tbaa !5
  %3186 = load i32, ptr %3185, align 4, !tbaa !9
  %3187 = icmp sle i32 %3184, %3186
  br i1 %3187, label %3188, label %3190

3188:                                             ; preds = %3176
  %3189 = load i32, ptr %47, align 4, !tbaa !9
  br label %3193

3190:                                             ; preds = %3176
  %3191 = load ptr, ptr %25, align 8, !tbaa !5
  %3192 = load i32, ptr %3191, align 4, !tbaa !9
  br label %3193

3193:                                             ; preds = %3190, %3188
  %3194 = phi i32 [ %3189, %3188 ], [ %3192, %3190 ]
  store i32 %3194, ptr %58, align 4, !tbaa !9
  %3195 = load ptr, ptr %24, align 8, !tbaa !5
  %3196 = load i32, ptr %3195, align 4, !tbaa !9
  store i32 %3196, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3197

3197:                                             ; preds = %3251, %3193
  %3198 = load i32, ptr %56, align 4, !tbaa !9
  %3199 = load i32, ptr %47, align 4, !tbaa !9
  %3200 = icmp sle i32 %3198, %3199
  br i1 %3200, label %3201, label %3254

3201:                                             ; preds = %3197
  %3202 = load ptr, ptr %26, align 8, !tbaa !5
  %3203 = load i32, ptr %3202, align 4, !tbaa !9
  store i32 %3203, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3204

3204:                                             ; preds = %3247, %3201
  %3205 = load i32, ptr %55, align 4, !tbaa !9
  %3206 = load i32, ptr %48, align 4, !tbaa !9
  %3207 = icmp sle i32 %3205, %3206
  br i1 %3207, label %3208, label %3250

3208:                                             ; preds = %3204
  %3209 = load ptr, ptr %25, align 8, !tbaa !5
  %3210 = load i32, ptr %3209, align 4, !tbaa !9
  %3211 = load ptr, ptr %26, align 8, !tbaa !5
  %3212 = load i32, ptr %3211, align 4, !tbaa !9
  %3213 = sub nsw i32 %3210, %3212
  %3214 = load i32, ptr %55, align 4, !tbaa !9
  %3215 = add nsw i32 %3213, %3214
  %3216 = load i32, ptr %56, align 4, !tbaa !9
  %3217 = load i32, ptr %45, align 4, !tbaa !9
  %3218 = mul nsw i32 %3216, %3217
  %3219 = add nsw i32 %3215, %3218
  store i32 %3219, ptr %49, align 4, !tbaa !9
  %3220 = load i32, ptr %55, align 4, !tbaa !9
  %3221 = load i32, ptr %56, align 4, !tbaa !9
  %3222 = load i32, ptr %39, align 4, !tbaa !9
  %3223 = mul nsw i32 %3221, %3222
  %3224 = add nsw i32 %3220, %3223
  store i32 %3224, ptr %50, align 4, !tbaa !9
  %3225 = load ptr, ptr %33, align 8, !tbaa !5
  %3226 = load i32, ptr %50, align 4, !tbaa !9
  %3227 = sext i32 %3226 to i64
  %3228 = getelementptr inbounds %struct.complex, ptr %3225, i64 %3227
  %3229 = getelementptr inbounds %struct.complex, ptr %3228, i32 0, i32 0
  %3230 = load float, ptr %3229, align 4, !tbaa !11
  %3231 = load ptr, ptr %35, align 8, !tbaa !5
  %3232 = load i32, ptr %49, align 4, !tbaa !9
  %3233 = sext i32 %3232 to i64
  %3234 = getelementptr inbounds %struct.complex, ptr %3231, i64 %3233
  %3235 = getelementptr inbounds %struct.complex, ptr %3234, i32 0, i32 0
  store float %3230, ptr %3235, align 4, !tbaa !11
  %3236 = load ptr, ptr %33, align 8, !tbaa !5
  %3237 = load i32, ptr %50, align 4, !tbaa !9
  %3238 = sext i32 %3237 to i64
  %3239 = getelementptr inbounds %struct.complex, ptr %3236, i64 %3238
  %3240 = getelementptr inbounds %struct.complex, ptr %3239, i32 0, i32 1
  %3241 = load float, ptr %3240, align 4, !tbaa !14
  %3242 = load ptr, ptr %35, align 8, !tbaa !5
  %3243 = load i32, ptr %49, align 4, !tbaa !9
  %3244 = sext i32 %3243 to i64
  %3245 = getelementptr inbounds %struct.complex, ptr %3242, i64 %3244
  %3246 = getelementptr inbounds %struct.complex, ptr %3245, i32 0, i32 1
  store float %3241, ptr %3246, align 4, !tbaa !14
  br label %3247

3247:                                             ; preds = %3208
  %3248 = load i32, ptr %55, align 4, !tbaa !9
  %3249 = add nsw i32 %3248, 1
  store i32 %3249, ptr %55, align 4, !tbaa !9
  br label %3204, !llvm.loop !64

3250:                                             ; preds = %3204
  br label %3251

3251:                                             ; preds = %3250
  %3252 = load i32, ptr %56, align 4, !tbaa !9
  %3253 = add nsw i32 %3252, 1
  store i32 %3253, ptr %56, align 4, !tbaa !9
  br label %3197, !llvm.loop !65

3254:                                             ; preds = %3197
  %3255 = load ptr, ptr %26, align 8, !tbaa !5
  %3256 = load ptr, ptr %24, align 8, !tbaa !5
  %3257 = load ptr, ptr %27, align 8, !tbaa !5
  %3258 = load i32, ptr %58, align 4, !tbaa !9
  %3259 = load i32, ptr %43, align 4, !tbaa !9
  %3260 = add nsw i32 %3258, %3259
  %3261 = sext i32 %3260 to i64
  %3262 = getelementptr inbounds %struct.complex, ptr %3257, i64 %3261
  %3263 = load ptr, ptr %28, align 8, !tbaa !5
  %3264 = load ptr, ptr %35, align 8, !tbaa !5
  %3265 = load i32, ptr %58, align 4, !tbaa !9
  %3266 = load i32, ptr %45, align 4, !tbaa !9
  %3267 = add nsw i32 %3265, %3266
  %3268 = sext i32 %3267 to i64
  %3269 = getelementptr inbounds %struct.complex, ptr %3264, i64 %3268
  %3270 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %3255, ptr noundef %3256, ptr noundef @c_b1, ptr noundef %3262, ptr noundef %3263, ptr noundef %3269, ptr noundef %3270)
  %3271 = load ptr, ptr %23, align 8, !tbaa !5
  %3272 = load i32, ptr %3271, align 4, !tbaa !9
  %3273 = load ptr, ptr %26, align 8, !tbaa !5
  %3274 = load i32, ptr %3273, align 4, !tbaa !9
  %3275 = sub nsw i32 %3272, %3274
  store i32 %3275, ptr %47, align 4, !tbaa !9
  %3276 = load ptr, ptr %26, align 8, !tbaa !5
  %3277 = load ptr, ptr %24, align 8, !tbaa !5
  %3278 = load ptr, ptr %27, align 8, !tbaa !5
  %3279 = load i32, ptr %58, align 4, !tbaa !9
  %3280 = load i32, ptr %59, align 4, !tbaa !9
  %3281 = load i32, ptr %43, align 4, !tbaa !9
  %3282 = mul nsw i32 %3280, %3281
  %3283 = add nsw i32 %3279, %3282
  %3284 = sext i32 %3283 to i64
  %3285 = getelementptr inbounds %struct.complex, ptr %3278, i64 %3284
  %3286 = load ptr, ptr %28, align 8, !tbaa !5
  %3287 = load ptr, ptr %33, align 8, !tbaa !5
  %3288 = load i32, ptr %59, align 4, !tbaa !9
  %3289 = load i32, ptr %39, align 4, !tbaa !9
  %3290 = add nsw i32 %3288, %3289
  %3291 = sext i32 %3290 to i64
  %3292 = getelementptr inbounds %struct.complex, ptr %3287, i64 %3291
  %3293 = load ptr, ptr %34, align 8, !tbaa !5
  %3294 = load ptr, ptr %35, align 8, !tbaa !5
  %3295 = load i32, ptr %58, align 4, !tbaa !9
  %3296 = load i32, ptr %45, align 4, !tbaa !9
  %3297 = add nsw i32 %3295, %3296
  %3298 = sext i32 %3297 to i64
  %3299 = getelementptr inbounds %struct.complex, ptr %3294, i64 %3298
  %3300 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %3276, ptr noundef %3277, ptr noundef %47, ptr noundef @c_b1, ptr noundef %3285, ptr noundef %3286, ptr noundef %3292, ptr noundef %3293, ptr noundef @c_b1, ptr noundef %3299, ptr noundef %3300)
  %3301 = load ptr, ptr %25, align 8, !tbaa !5
  %3302 = load i32, ptr %3301, align 4, !tbaa !9
  %3303 = load ptr, ptr %26, align 8, !tbaa !5
  %3304 = load i32, ptr %3303, align 4, !tbaa !9
  %3305 = sub nsw i32 %3302, %3304
  store i32 %3305, ptr %47, align 4, !tbaa !9
  %3306 = load ptr, ptr %24, align 8, !tbaa !5
  %3307 = load ptr, ptr %23, align 8, !tbaa !5
  %3308 = load ptr, ptr %27, align 8, !tbaa !5
  %3309 = load i32, ptr %44, align 4, !tbaa !9
  %3310 = sext i32 %3309 to i64
  %3311 = getelementptr inbounds %struct.complex, ptr %3308, i64 %3310
  %3312 = load ptr, ptr %28, align 8, !tbaa !5
  %3313 = load ptr, ptr %33, align 8, !tbaa !5
  %3314 = load i32, ptr %40, align 4, !tbaa !9
  %3315 = sext i32 %3314 to i64
  %3316 = getelementptr inbounds %struct.complex, ptr %3313, i64 %3315
  %3317 = load ptr, ptr %34, align 8, !tbaa !5
  %3318 = load ptr, ptr %35, align 8, !tbaa !5
  %3319 = load i32, ptr %46, align 4, !tbaa !9
  %3320 = sext i32 %3319 to i64
  %3321 = getelementptr inbounds %struct.complex, ptr %3318, i64 %3320
  %3322 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %47, ptr noundef %3306, ptr noundef %3307, ptr noundef @c_b1, ptr noundef %3311, ptr noundef %3312, ptr noundef %3316, ptr noundef %3317, ptr noundef @c_b2, ptr noundef %3321, ptr noundef %3322)
  %3323 = load ptr, ptr %24, align 8, !tbaa !5
  %3324 = load i32, ptr %3323, align 4, !tbaa !9
  store i32 %3324, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3325

3325:                                             ; preds = %3398, %3254
  %3326 = load i32, ptr %56, align 4, !tbaa !9
  %3327 = load i32, ptr %47, align 4, !tbaa !9
  %3328 = icmp sle i32 %3326, %3327
  br i1 %3328, label %3329, label %3401

3329:                                             ; preds = %3325
  %3330 = load ptr, ptr %25, align 8, !tbaa !5
  %3331 = load i32, ptr %3330, align 4, !tbaa !9
  store i32 %3331, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3332

3332:                                             ; preds = %3394, %3329
  %3333 = load i32, ptr %55, align 4, !tbaa !9
  %3334 = load i32, ptr %48, align 4, !tbaa !9
  %3335 = icmp sle i32 %3333, %3334
  br i1 %3335, label %3336, label %3397

3336:                                             ; preds = %3332
  %3337 = load i32, ptr %55, align 4, !tbaa !9
  %3338 = load i32, ptr %56, align 4, !tbaa !9
  %3339 = load i32, ptr %45, align 4, !tbaa !9
  %3340 = mul nsw i32 %3338, %3339
  %3341 = add nsw i32 %3337, %3340
  store i32 %3341, ptr %49, align 4, !tbaa !9
  %3342 = load i32, ptr %55, align 4, !tbaa !9
  %3343 = load i32, ptr %56, align 4, !tbaa !9
  %3344 = load i32, ptr %45, align 4, !tbaa !9
  %3345 = mul nsw i32 %3343, %3344
  %3346 = add nsw i32 %3342, %3345
  store i32 %3346, ptr %50, align 4, !tbaa !9
  %3347 = load i32, ptr %55, align 4, !tbaa !9
  %3348 = load i32, ptr %56, align 4, !tbaa !9
  %3349 = load i32, ptr %37, align 4, !tbaa !9
  %3350 = mul nsw i32 %3348, %3349
  %3351 = add nsw i32 %3347, %3350
  store i32 %3351, ptr %51, align 4, !tbaa !9
  %3352 = load ptr, ptr %35, align 8, !tbaa !5
  %3353 = load i32, ptr %50, align 4, !tbaa !9
  %3354 = sext i32 %3353 to i64
  %3355 = getelementptr inbounds %struct.complex, ptr %3352, i64 %3354
  %3356 = getelementptr inbounds %struct.complex, ptr %3355, i32 0, i32 0
  %3357 = load float, ptr %3356, align 4, !tbaa !11
  %3358 = load ptr, ptr %31, align 8, !tbaa !5
  %3359 = load i32, ptr %51, align 4, !tbaa !9
  %3360 = sext i32 %3359 to i64
  %3361 = getelementptr inbounds %struct.complex, ptr %3358, i64 %3360
  %3362 = getelementptr inbounds %struct.complex, ptr %3361, i32 0, i32 0
  %3363 = load float, ptr %3362, align 4, !tbaa !11
  %3364 = fadd float %3357, %3363
  %3365 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3364, ptr %3365, align 4, !tbaa !11
  %3366 = load ptr, ptr %35, align 8, !tbaa !5
  %3367 = load i32, ptr %50, align 4, !tbaa !9
  %3368 = sext i32 %3367 to i64
  %3369 = getelementptr inbounds %struct.complex, ptr %3366, i64 %3368
  %3370 = getelementptr inbounds %struct.complex, ptr %3369, i32 0, i32 1
  %3371 = load float, ptr %3370, align 4, !tbaa !14
  %3372 = load ptr, ptr %31, align 8, !tbaa !5
  %3373 = load i32, ptr %51, align 4, !tbaa !9
  %3374 = sext i32 %3373 to i64
  %3375 = getelementptr inbounds %struct.complex, ptr %3372, i64 %3374
  %3376 = getelementptr inbounds %struct.complex, ptr %3375, i32 0, i32 1
  %3377 = load float, ptr %3376, align 4, !tbaa !14
  %3378 = fadd float %3371, %3377
  %3379 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3378, ptr %3379, align 4, !tbaa !14
  %3380 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3381 = load float, ptr %3380, align 4, !tbaa !11
  %3382 = load ptr, ptr %35, align 8, !tbaa !5
  %3383 = load i32, ptr %49, align 4, !tbaa !9
  %3384 = sext i32 %3383 to i64
  %3385 = getelementptr inbounds %struct.complex, ptr %3382, i64 %3384
  %3386 = getelementptr inbounds %struct.complex, ptr %3385, i32 0, i32 0
  store float %3381, ptr %3386, align 4, !tbaa !11
  %3387 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3388 = load float, ptr %3387, align 4, !tbaa !14
  %3389 = load ptr, ptr %35, align 8, !tbaa !5
  %3390 = load i32, ptr %49, align 4, !tbaa !9
  %3391 = sext i32 %3390 to i64
  %3392 = getelementptr inbounds %struct.complex, ptr %3389, i64 %3391
  %3393 = getelementptr inbounds %struct.complex, ptr %3392, i32 0, i32 1
  store float %3388, ptr %3393, align 4, !tbaa !14
  br label %3394

3394:                                             ; preds = %3336
  %3395 = load i32, ptr %55, align 4, !tbaa !9
  %3396 = add nsw i32 %3395, 1
  store i32 %3396, ptr %55, align 4, !tbaa !9
  br label %3332, !llvm.loop !66

3397:                                             ; preds = %3332
  br label %3398

3398:                                             ; preds = %3397
  %3399 = load i32, ptr %56, align 4, !tbaa !9
  %3400 = add nsw i32 %3399, 1
  store i32 %3400, ptr %56, align 4, !tbaa !9
  br label %3325, !llvm.loop !67

3401:                                             ; preds = %3325
  %3402 = load ptr, ptr %20, align 8, !tbaa !5
  %3403 = load ptr, ptr %25, align 8, !tbaa !5
  %3404 = load ptr, ptr %24, align 8, !tbaa !5
  %3405 = load ptr, ptr %29, align 8, !tbaa !5
  %3406 = load i32, ptr %42, align 4, !tbaa !9
  %3407 = sext i32 %3406 to i64
  %3408 = getelementptr inbounds %struct.complex, ptr %3405, i64 %3407
  %3409 = load ptr, ptr %30, align 8, !tbaa !5
  %3410 = load ptr, ptr %35, align 8, !tbaa !5
  %3411 = load i32, ptr %46, align 4, !tbaa !9
  %3412 = sext i32 %3411 to i64
  %3413 = getelementptr inbounds %struct.complex, ptr %3410, i64 %3412
  %3414 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.7, ptr noundef %3402, ptr noundef @.str.6, ptr noundef %3403, ptr noundef %3404, ptr noundef @c_b1, ptr noundef %3408, ptr noundef %3409, ptr noundef %3413, ptr noundef %3414)
  %3415 = load ptr, ptr %24, align 8, !tbaa !5
  %3416 = load i32, ptr %3415, align 4, !tbaa !9
  store i32 %3416, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3417

3417:                                             ; preds = %3490, %3401
  %3418 = load i32, ptr %56, align 4, !tbaa !9
  %3419 = load i32, ptr %47, align 4, !tbaa !9
  %3420 = icmp sle i32 %3418, %3419
  br i1 %3420, label %3421, label %3493

3421:                                             ; preds = %3417
  %3422 = load ptr, ptr %25, align 8, !tbaa !5
  %3423 = load i32, ptr %3422, align 4, !tbaa !9
  store i32 %3423, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3424

3424:                                             ; preds = %3486, %3421
  %3425 = load i32, ptr %55, align 4, !tbaa !9
  %3426 = load i32, ptr %48, align 4, !tbaa !9
  %3427 = icmp sle i32 %3425, %3426
  br i1 %3427, label %3428, label %3489

3428:                                             ; preds = %3424
  %3429 = load i32, ptr %55, align 4, !tbaa !9
  %3430 = load i32, ptr %56, align 4, !tbaa !9
  %3431 = load i32, ptr %37, align 4, !tbaa !9
  %3432 = mul nsw i32 %3430, %3431
  %3433 = add nsw i32 %3429, %3432
  store i32 %3433, ptr %49, align 4, !tbaa !9
  %3434 = load i32, ptr %55, align 4, !tbaa !9
  %3435 = load i32, ptr %56, align 4, !tbaa !9
  %3436 = load i32, ptr %37, align 4, !tbaa !9
  %3437 = mul nsw i32 %3435, %3436
  %3438 = add nsw i32 %3434, %3437
  store i32 %3438, ptr %50, align 4, !tbaa !9
  %3439 = load i32, ptr %55, align 4, !tbaa !9
  %3440 = load i32, ptr %56, align 4, !tbaa !9
  %3441 = load i32, ptr %45, align 4, !tbaa !9
  %3442 = mul nsw i32 %3440, %3441
  %3443 = add nsw i32 %3439, %3442
  store i32 %3443, ptr %51, align 4, !tbaa !9
  %3444 = load ptr, ptr %31, align 8, !tbaa !5
  %3445 = load i32, ptr %50, align 4, !tbaa !9
  %3446 = sext i32 %3445 to i64
  %3447 = getelementptr inbounds %struct.complex, ptr %3444, i64 %3446
  %3448 = getelementptr inbounds %struct.complex, ptr %3447, i32 0, i32 0
  %3449 = load float, ptr %3448, align 4, !tbaa !11
  %3450 = load ptr, ptr %35, align 8, !tbaa !5
  %3451 = load i32, ptr %51, align 4, !tbaa !9
  %3452 = sext i32 %3451 to i64
  %3453 = getelementptr inbounds %struct.complex, ptr %3450, i64 %3452
  %3454 = getelementptr inbounds %struct.complex, ptr %3453, i32 0, i32 0
  %3455 = load float, ptr %3454, align 4, !tbaa !11
  %3456 = fsub float %3449, %3455
  %3457 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3456, ptr %3457, align 4, !tbaa !11
  %3458 = load ptr, ptr %31, align 8, !tbaa !5
  %3459 = load i32, ptr %50, align 4, !tbaa !9
  %3460 = sext i32 %3459 to i64
  %3461 = getelementptr inbounds %struct.complex, ptr %3458, i64 %3460
  %3462 = getelementptr inbounds %struct.complex, ptr %3461, i32 0, i32 1
  %3463 = load float, ptr %3462, align 4, !tbaa !14
  %3464 = load ptr, ptr %35, align 8, !tbaa !5
  %3465 = load i32, ptr %51, align 4, !tbaa !9
  %3466 = sext i32 %3465 to i64
  %3467 = getelementptr inbounds %struct.complex, ptr %3464, i64 %3466
  %3468 = getelementptr inbounds %struct.complex, ptr %3467, i32 0, i32 1
  %3469 = load float, ptr %3468, align 4, !tbaa !14
  %3470 = fsub float %3463, %3469
  %3471 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3470, ptr %3471, align 4, !tbaa !14
  %3472 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3473 = load float, ptr %3472, align 4, !tbaa !11
  %3474 = load ptr, ptr %31, align 8, !tbaa !5
  %3475 = load i32, ptr %49, align 4, !tbaa !9
  %3476 = sext i32 %3475 to i64
  %3477 = getelementptr inbounds %struct.complex, ptr %3474, i64 %3476
  %3478 = getelementptr inbounds %struct.complex, ptr %3477, i32 0, i32 0
  store float %3473, ptr %3478, align 4, !tbaa !11
  %3479 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3480 = load float, ptr %3479, align 4, !tbaa !14
  %3481 = load ptr, ptr %31, align 8, !tbaa !5
  %3482 = load i32, ptr %49, align 4, !tbaa !9
  %3483 = sext i32 %3482 to i64
  %3484 = getelementptr inbounds %struct.complex, ptr %3481, i64 %3483
  %3485 = getelementptr inbounds %struct.complex, ptr %3484, i32 0, i32 1
  store float %3480, ptr %3485, align 4, !tbaa !14
  br label %3486

3486:                                             ; preds = %3428
  %3487 = load i32, ptr %55, align 4, !tbaa !9
  %3488 = add nsw i32 %3487, 1
  store i32 %3488, ptr %55, align 4, !tbaa !9
  br label %3424, !llvm.loop !68

3489:                                             ; preds = %3424
  br label %3490

3490:                                             ; preds = %3489
  %3491 = load i32, ptr %56, align 4, !tbaa !9
  %3492 = add nsw i32 %3491, 1
  store i32 %3492, ptr %56, align 4, !tbaa !9
  br label %3417, !llvm.loop !69

3493:                                             ; preds = %3417
  %3494 = load ptr, ptr %23, align 8, !tbaa !5
  %3495 = load i32, ptr %3494, align 4, !tbaa !9
  %3496 = load ptr, ptr %26, align 8, !tbaa !5
  %3497 = load i32, ptr %3496, align 4, !tbaa !9
  %3498 = sub nsw i32 %3495, %3497
  store i32 %3498, ptr %47, align 4, !tbaa !9
  %3499 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %3499, align 4, !tbaa !11
  %3500 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %3500, align 4, !tbaa !14
  %3501 = load ptr, ptr %24, align 8, !tbaa !5
  %3502 = load ptr, ptr %25, align 8, !tbaa !5
  %3503 = load ptr, ptr %27, align 8, !tbaa !5
  %3504 = load i32, ptr %59, align 4, !tbaa !9
  %3505 = load i32, ptr %43, align 4, !tbaa !9
  %3506 = mul nsw i32 %3504, %3505
  %3507 = add nsw i32 %3506, 1
  %3508 = sext i32 %3507 to i64
  %3509 = getelementptr inbounds %struct.complex, ptr %3503, i64 %3508
  %3510 = load ptr, ptr %28, align 8, !tbaa !5
  %3511 = load ptr, ptr %35, align 8, !tbaa !5
  %3512 = load i32, ptr %46, align 4, !tbaa !9
  %3513 = sext i32 %3512 to i64
  %3514 = getelementptr inbounds %struct.complex, ptr %3511, i64 %3513
  %3515 = load ptr, ptr %36, align 8, !tbaa !5
  %3516 = load ptr, ptr %33, align 8, !tbaa !5
  %3517 = load i32, ptr %59, align 4, !tbaa !9
  %3518 = load i32, ptr %39, align 4, !tbaa !9
  %3519 = add nsw i32 %3517, %3518
  %3520 = sext i32 %3519 to i64
  %3521 = getelementptr inbounds %struct.complex, ptr %3516, i64 %3520
  %3522 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %47, ptr noundef %3501, ptr noundef %3502, ptr noundef %52, ptr noundef %3509, ptr noundef %3510, ptr noundef %3514, ptr noundef %3515, ptr noundef @c_b1, ptr noundef %3521, ptr noundef %3522)
  %3523 = load ptr, ptr %25, align 8, !tbaa !5
  %3524 = load i32, ptr %3523, align 4, !tbaa !9
  %3525 = load ptr, ptr %26, align 8, !tbaa !5
  %3526 = load i32, ptr %3525, align 4, !tbaa !9
  %3527 = sub nsw i32 %3524, %3526
  store i32 %3527, ptr %47, align 4, !tbaa !9
  %3528 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %3528, align 4, !tbaa !11
  %3529 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %3529, align 4, !tbaa !14
  %3530 = load ptr, ptr %26, align 8, !tbaa !5
  %3531 = load ptr, ptr %24, align 8, !tbaa !5
  %3532 = load ptr, ptr %27, align 8, !tbaa !5
  %3533 = load i32, ptr %44, align 4, !tbaa !9
  %3534 = sext i32 %3533 to i64
  %3535 = getelementptr inbounds %struct.complex, ptr %3532, i64 %3534
  %3536 = load ptr, ptr %28, align 8, !tbaa !5
  %3537 = load ptr, ptr %35, align 8, !tbaa !5
  %3538 = load i32, ptr %46, align 4, !tbaa !9
  %3539 = sext i32 %3538 to i64
  %3540 = getelementptr inbounds %struct.complex, ptr %3537, i64 %3539
  %3541 = load ptr, ptr %36, align 8, !tbaa !5
  %3542 = load ptr, ptr %33, align 8, !tbaa !5
  %3543 = load i32, ptr %40, align 4, !tbaa !9
  %3544 = sext i32 %3543 to i64
  %3545 = getelementptr inbounds %struct.complex, ptr %3542, i64 %3544
  %3546 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str, ptr noundef @.str.6, ptr noundef %3530, ptr noundef %3531, ptr noundef %47, ptr noundef %52, ptr noundef %3535, ptr noundef %3536, ptr noundef %3540, ptr noundef %3541, ptr noundef @c_b1, ptr noundef %3545, ptr noundef %3546)
  %3547 = load ptr, ptr %26, align 8, !tbaa !5
  %3548 = load ptr, ptr %24, align 8, !tbaa !5
  %3549 = load ptr, ptr %27, align 8, !tbaa !5
  %3550 = load i32, ptr %58, align 4, !tbaa !9
  %3551 = load i32, ptr %43, align 4, !tbaa !9
  %3552 = add nsw i32 %3550, %3551
  %3553 = sext i32 %3552 to i64
  %3554 = getelementptr inbounds %struct.complex, ptr %3549, i64 %3553
  %3555 = load ptr, ptr %28, align 8, !tbaa !5
  %3556 = load ptr, ptr %35, align 8, !tbaa !5
  %3557 = load i32, ptr %58, align 4, !tbaa !9
  %3558 = load i32, ptr %45, align 4, !tbaa !9
  %3559 = add nsw i32 %3557, %3558
  %3560 = sext i32 %3559 to i64
  %3561 = getelementptr inbounds %struct.complex, ptr %3556, i64 %3560
  %3562 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.2, ptr noundef @.str.5, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %3547, ptr noundef %3548, ptr noundef @c_b1, ptr noundef %3554, ptr noundef %3555, ptr noundef %3561, ptr noundef %3562)
  %3563 = load ptr, ptr %24, align 8, !tbaa !5
  %3564 = load i32, ptr %3563, align 4, !tbaa !9
  store i32 %3564, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3565

3565:                                             ; preds = %3644, %3493
  %3566 = load i32, ptr %56, align 4, !tbaa !9
  %3567 = load i32, ptr %47, align 4, !tbaa !9
  %3568 = icmp sle i32 %3566, %3567
  br i1 %3568, label %3569, label %3647

3569:                                             ; preds = %3565
  %3570 = load ptr, ptr %26, align 8, !tbaa !5
  %3571 = load i32, ptr %3570, align 4, !tbaa !9
  store i32 %3571, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3572

3572:                                             ; preds = %3640, %3569
  %3573 = load i32, ptr %55, align 4, !tbaa !9
  %3574 = load i32, ptr %48, align 4, !tbaa !9
  %3575 = icmp sle i32 %3573, %3574
  br i1 %3575, label %3576, label %3643

3576:                                             ; preds = %3572
  %3577 = load i32, ptr %55, align 4, !tbaa !9
  %3578 = load i32, ptr %56, align 4, !tbaa !9
  %3579 = load i32, ptr %39, align 4, !tbaa !9
  %3580 = mul nsw i32 %3578, %3579
  %3581 = add nsw i32 %3577, %3580
  store i32 %3581, ptr %49, align 4, !tbaa !9
  %3582 = load i32, ptr %55, align 4, !tbaa !9
  %3583 = load i32, ptr %56, align 4, !tbaa !9
  %3584 = load i32, ptr %39, align 4, !tbaa !9
  %3585 = mul nsw i32 %3583, %3584
  %3586 = add nsw i32 %3582, %3585
  store i32 %3586, ptr %50, align 4, !tbaa !9
  %3587 = load ptr, ptr %25, align 8, !tbaa !5
  %3588 = load i32, ptr %3587, align 4, !tbaa !9
  %3589 = load ptr, ptr %26, align 8, !tbaa !5
  %3590 = load i32, ptr %3589, align 4, !tbaa !9
  %3591 = sub nsw i32 %3588, %3590
  %3592 = load i32, ptr %55, align 4, !tbaa !9
  %3593 = add nsw i32 %3591, %3592
  %3594 = load i32, ptr %56, align 4, !tbaa !9
  %3595 = load i32, ptr %45, align 4, !tbaa !9
  %3596 = mul nsw i32 %3594, %3595
  %3597 = add nsw i32 %3593, %3596
  store i32 %3597, ptr %51, align 4, !tbaa !9
  %3598 = load ptr, ptr %33, align 8, !tbaa !5
  %3599 = load i32, ptr %50, align 4, !tbaa !9
  %3600 = sext i32 %3599 to i64
  %3601 = getelementptr inbounds %struct.complex, ptr %3598, i64 %3600
  %3602 = getelementptr inbounds %struct.complex, ptr %3601, i32 0, i32 0
  %3603 = load float, ptr %3602, align 4, !tbaa !11
  %3604 = load ptr, ptr %35, align 8, !tbaa !5
  %3605 = load i32, ptr %51, align 4, !tbaa !9
  %3606 = sext i32 %3605 to i64
  %3607 = getelementptr inbounds %struct.complex, ptr %3604, i64 %3606
  %3608 = getelementptr inbounds %struct.complex, ptr %3607, i32 0, i32 0
  %3609 = load float, ptr %3608, align 4, !tbaa !11
  %3610 = fsub float %3603, %3609
  %3611 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3610, ptr %3611, align 4, !tbaa !11
  %3612 = load ptr, ptr %33, align 8, !tbaa !5
  %3613 = load i32, ptr %50, align 4, !tbaa !9
  %3614 = sext i32 %3613 to i64
  %3615 = getelementptr inbounds %struct.complex, ptr %3612, i64 %3614
  %3616 = getelementptr inbounds %struct.complex, ptr %3615, i32 0, i32 1
  %3617 = load float, ptr %3616, align 4, !tbaa !14
  %3618 = load ptr, ptr %35, align 8, !tbaa !5
  %3619 = load i32, ptr %51, align 4, !tbaa !9
  %3620 = sext i32 %3619 to i64
  %3621 = getelementptr inbounds %struct.complex, ptr %3618, i64 %3620
  %3622 = getelementptr inbounds %struct.complex, ptr %3621, i32 0, i32 1
  %3623 = load float, ptr %3622, align 4, !tbaa !14
  %3624 = fsub float %3617, %3623
  %3625 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3624, ptr %3625, align 4, !tbaa !14
  %3626 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3627 = load float, ptr %3626, align 4, !tbaa !11
  %3628 = load ptr, ptr %33, align 8, !tbaa !5
  %3629 = load i32, ptr %49, align 4, !tbaa !9
  %3630 = sext i32 %3629 to i64
  %3631 = getelementptr inbounds %struct.complex, ptr %3628, i64 %3630
  %3632 = getelementptr inbounds %struct.complex, ptr %3631, i32 0, i32 0
  store float %3627, ptr %3632, align 4, !tbaa !11
  %3633 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3634 = load float, ptr %3633, align 4, !tbaa !14
  %3635 = load ptr, ptr %33, align 8, !tbaa !5
  %3636 = load i32, ptr %49, align 4, !tbaa !9
  %3637 = sext i32 %3636 to i64
  %3638 = getelementptr inbounds %struct.complex, ptr %3635, i64 %3637
  %3639 = getelementptr inbounds %struct.complex, ptr %3638, i32 0, i32 1
  store float %3634, ptr %3639, align 4, !tbaa !14
  br label %3640

3640:                                             ; preds = %3576
  %3641 = load i32, ptr %55, align 4, !tbaa !9
  %3642 = add nsw i32 %3641, 1
  store i32 %3642, ptr %55, align 4, !tbaa !9
  br label %3572, !llvm.loop !70

3643:                                             ; preds = %3572
  br label %3644

3644:                                             ; preds = %3643
  %3645 = load i32, ptr %56, align 4, !tbaa !9
  %3646 = add nsw i32 %3645, 1
  store i32 %3646, ptr %56, align 4, !tbaa !9
  br label %3565, !llvm.loop !71

3647:                                             ; preds = %3565
  br label %4148

3648:                                             ; preds = %3160, %3157, %3154
  %3649 = load i32, ptr %62, align 4, !tbaa !9
  %3650 = icmp ne i32 %3649, 0
  br i1 %3650, label %3651, label %4147

3651:                                             ; preds = %3648
  %3652 = load i32, ptr %54, align 4, !tbaa !9
  %3653 = icmp ne i32 %3652, 0
  br i1 %3653, label %3654, label %4147

3654:                                             ; preds = %3651
  %3655 = load i32, ptr %57, align 4, !tbaa !9
  %3656 = icmp ne i32 %3655, 0
  br i1 %3656, label %3657, label %4147

3657:                                             ; preds = %3654
  %3658 = load ptr, ptr %26, align 8, !tbaa !5
  %3659 = load i32, ptr %3658, align 4, !tbaa !9
  %3660 = add nsw i32 %3659, 1
  store i32 %3660, ptr %47, align 4, !tbaa !9
  %3661 = load i32, ptr %47, align 4, !tbaa !9
  %3662 = load ptr, ptr %24, align 8, !tbaa !5
  %3663 = load i32, ptr %3662, align 4, !tbaa !9
  %3664 = icmp sle i32 %3661, %3663
  br i1 %3664, label %3665, label %3667

3665:                                             ; preds = %3657
  %3666 = load i32, ptr %47, align 4, !tbaa !9
  br label %3670

3667:                                             ; preds = %3657
  %3668 = load ptr, ptr %24, align 8, !tbaa !5
  %3669 = load i32, ptr %3668, align 4, !tbaa !9
  br label %3670

3670:                                             ; preds = %3667, %3665
  %3671 = phi i32 [ %3666, %3665 ], [ %3669, %3667 ]
  store i32 %3671, ptr %60, align 4, !tbaa !9
  %3672 = load ptr, ptr %25, align 8, !tbaa !5
  %3673 = load i32, ptr %3672, align 4, !tbaa !9
  %3674 = load ptr, ptr %26, align 8, !tbaa !5
  %3675 = load i32, ptr %3674, align 4, !tbaa !9
  %3676 = sub nsw i32 %3673, %3675
  %3677 = add nsw i32 %3676, 1
  store i32 %3677, ptr %47, align 4, !tbaa !9
  %3678 = load i32, ptr %47, align 4, !tbaa !9
  %3679 = load ptr, ptr %25, align 8, !tbaa !5
  %3680 = load i32, ptr %3679, align 4, !tbaa !9
  %3681 = icmp sle i32 %3678, %3680
  br i1 %3681, label %3682, label %3684

3682:                                             ; preds = %3670
  %3683 = load i32, ptr %47, align 4, !tbaa !9
  br label %3687

3684:                                             ; preds = %3670
  %3685 = load ptr, ptr %25, align 8, !tbaa !5
  %3686 = load i32, ptr %3685, align 4, !tbaa !9
  br label %3687

3687:                                             ; preds = %3684, %3682
  %3688 = phi i32 [ %3683, %3682 ], [ %3686, %3684 ]
  store i32 %3688, ptr %58, align 4, !tbaa !9
  %3689 = load ptr, ptr %26, align 8, !tbaa !5
  %3690 = load i32, ptr %3689, align 4, !tbaa !9
  store i32 %3690, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3691

3691:                                             ; preds = %3745, %3687
  %3692 = load i32, ptr %56, align 4, !tbaa !9
  %3693 = load i32, ptr %47, align 4, !tbaa !9
  %3694 = icmp sle i32 %3692, %3693
  br i1 %3694, label %3695, label %3748

3695:                                             ; preds = %3691
  %3696 = load ptr, ptr %23, align 8, !tbaa !5
  %3697 = load i32, ptr %3696, align 4, !tbaa !9
  store i32 %3697, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3698

3698:                                             ; preds = %3741, %3695
  %3699 = load i32, ptr %55, align 4, !tbaa !9
  %3700 = load i32, ptr %48, align 4, !tbaa !9
  %3701 = icmp sle i32 %3699, %3700
  br i1 %3701, label %3702, label %3744

3702:                                             ; preds = %3698
  %3703 = load i32, ptr %55, align 4, !tbaa !9
  %3704 = load ptr, ptr %25, align 8, !tbaa !5
  %3705 = load i32, ptr %3704, align 4, !tbaa !9
  %3706 = load ptr, ptr %26, align 8, !tbaa !5
  %3707 = load i32, ptr %3706, align 4, !tbaa !9
  %3708 = sub nsw i32 %3705, %3707
  %3709 = load i32, ptr %56, align 4, !tbaa !9
  %3710 = add nsw i32 %3708, %3709
  %3711 = load i32, ptr %45, align 4, !tbaa !9
  %3712 = mul nsw i32 %3710, %3711
  %3713 = add nsw i32 %3703, %3712
  store i32 %3713, ptr %49, align 4, !tbaa !9
  %3714 = load i32, ptr %55, align 4, !tbaa !9
  %3715 = load i32, ptr %56, align 4, !tbaa !9
  %3716 = load i32, ptr %39, align 4, !tbaa !9
  %3717 = mul nsw i32 %3715, %3716
  %3718 = add nsw i32 %3714, %3717
  store i32 %3718, ptr %50, align 4, !tbaa !9
  %3719 = load ptr, ptr %33, align 8, !tbaa !5
  %3720 = load i32, ptr %50, align 4, !tbaa !9
  %3721 = sext i32 %3720 to i64
  %3722 = getelementptr inbounds %struct.complex, ptr %3719, i64 %3721
  %3723 = getelementptr inbounds %struct.complex, ptr %3722, i32 0, i32 0
  %3724 = load float, ptr %3723, align 4, !tbaa !11
  %3725 = load ptr, ptr %35, align 8, !tbaa !5
  %3726 = load i32, ptr %49, align 4, !tbaa !9
  %3727 = sext i32 %3726 to i64
  %3728 = getelementptr inbounds %struct.complex, ptr %3725, i64 %3727
  %3729 = getelementptr inbounds %struct.complex, ptr %3728, i32 0, i32 0
  store float %3724, ptr %3729, align 4, !tbaa !11
  %3730 = load ptr, ptr %33, align 8, !tbaa !5
  %3731 = load i32, ptr %50, align 4, !tbaa !9
  %3732 = sext i32 %3731 to i64
  %3733 = getelementptr inbounds %struct.complex, ptr %3730, i64 %3732
  %3734 = getelementptr inbounds %struct.complex, ptr %3733, i32 0, i32 1
  %3735 = load float, ptr %3734, align 4, !tbaa !14
  %3736 = load ptr, ptr %35, align 8, !tbaa !5
  %3737 = load i32, ptr %49, align 4, !tbaa !9
  %3738 = sext i32 %3737 to i64
  %3739 = getelementptr inbounds %struct.complex, ptr %3736, i64 %3738
  %3740 = getelementptr inbounds %struct.complex, ptr %3739, i32 0, i32 1
  store float %3735, ptr %3740, align 4, !tbaa !14
  br label %3741

3741:                                             ; preds = %3702
  %3742 = load i32, ptr %55, align 4, !tbaa !9
  %3743 = add nsw i32 %3742, 1
  store i32 %3743, ptr %55, align 4, !tbaa !9
  br label %3698, !llvm.loop !72

3744:                                             ; preds = %3698
  br label %3745

3745:                                             ; preds = %3744
  %3746 = load i32, ptr %56, align 4, !tbaa !9
  %3747 = add nsw i32 %3746, 1
  store i32 %3747, ptr %56, align 4, !tbaa !9
  br label %3691, !llvm.loop !73

3748:                                             ; preds = %3691
  %3749 = load ptr, ptr %23, align 8, !tbaa !5
  %3750 = load ptr, ptr %26, align 8, !tbaa !5
  %3751 = load ptr, ptr %27, align 8, !tbaa !5
  %3752 = load i32, ptr %58, align 4, !tbaa !9
  %3753 = load i32, ptr %43, align 4, !tbaa !9
  %3754 = add nsw i32 %3752, %3753
  %3755 = sext i32 %3754 to i64
  %3756 = getelementptr inbounds %struct.complex, ptr %3751, i64 %3755
  %3757 = load ptr, ptr %28, align 8, !tbaa !5
  %3758 = load ptr, ptr %35, align 8, !tbaa !5
  %3759 = load i32, ptr %58, align 4, !tbaa !9
  %3760 = load i32, ptr %45, align 4, !tbaa !9
  %3761 = mul nsw i32 %3759, %3760
  %3762 = add nsw i32 %3761, 1
  %3763 = sext i32 %3762 to i64
  %3764 = getelementptr inbounds %struct.complex, ptr %3758, i64 %3763
  %3765 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef @.str, ptr noundef @.str.6, ptr noundef %3749, ptr noundef %3750, ptr noundef @c_b1, ptr noundef %3756, ptr noundef %3757, ptr noundef %3764, ptr noundef %3765)
  %3766 = load ptr, ptr %24, align 8, !tbaa !5
  %3767 = load i32, ptr %3766, align 4, !tbaa !9
  %3768 = load ptr, ptr %26, align 8, !tbaa !5
  %3769 = load i32, ptr %3768, align 4, !tbaa !9
  %3770 = sub nsw i32 %3767, %3769
  store i32 %3770, ptr %47, align 4, !tbaa !9
  %3771 = load ptr, ptr %23, align 8, !tbaa !5
  %3772 = load ptr, ptr %26, align 8, !tbaa !5
  %3773 = load ptr, ptr %33, align 8, !tbaa !5
  %3774 = load i32, ptr %60, align 4, !tbaa !9
  %3775 = load i32, ptr %39, align 4, !tbaa !9
  %3776 = mul nsw i32 %3774, %3775
  %3777 = add nsw i32 %3776, 1
  %3778 = sext i32 %3777 to i64
  %3779 = getelementptr inbounds %struct.complex, ptr %3773, i64 %3778
  %3780 = load ptr, ptr %34, align 8, !tbaa !5
  %3781 = load ptr, ptr %27, align 8, !tbaa !5
  %3782 = load i32, ptr %58, align 4, !tbaa !9
  %3783 = load i32, ptr %60, align 4, !tbaa !9
  %3784 = load i32, ptr %43, align 4, !tbaa !9
  %3785 = mul nsw i32 %3783, %3784
  %3786 = add nsw i32 %3782, %3785
  %3787 = sext i32 %3786 to i64
  %3788 = getelementptr inbounds %struct.complex, ptr %3781, i64 %3787
  %3789 = load ptr, ptr %28, align 8, !tbaa !5
  %3790 = load ptr, ptr %35, align 8, !tbaa !5
  %3791 = load i32, ptr %58, align 4, !tbaa !9
  %3792 = load i32, ptr %45, align 4, !tbaa !9
  %3793 = mul nsw i32 %3791, %3792
  %3794 = add nsw i32 %3793, 1
  %3795 = sext i32 %3794 to i64
  %3796 = getelementptr inbounds %struct.complex, ptr %3790, i64 %3795
  %3797 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %3771, ptr noundef %3772, ptr noundef %47, ptr noundef @c_b1, ptr noundef %3779, ptr noundef %3780, ptr noundef %3788, ptr noundef %3789, ptr noundef @c_b1, ptr noundef %3796, ptr noundef %3797)
  %3798 = load ptr, ptr %25, align 8, !tbaa !5
  %3799 = load i32, ptr %3798, align 4, !tbaa !9
  %3800 = load ptr, ptr %26, align 8, !tbaa !5
  %3801 = load i32, ptr %3800, align 4, !tbaa !9
  %3802 = sub nsw i32 %3799, %3801
  store i32 %3802, ptr %47, align 4, !tbaa !9
  %3803 = load ptr, ptr %23, align 8, !tbaa !5
  %3804 = load ptr, ptr %24, align 8, !tbaa !5
  %3805 = load ptr, ptr %33, align 8, !tbaa !5
  %3806 = load i32, ptr %40, align 4, !tbaa !9
  %3807 = sext i32 %3806 to i64
  %3808 = getelementptr inbounds %struct.complex, ptr %3805, i64 %3807
  %3809 = load ptr, ptr %34, align 8, !tbaa !5
  %3810 = load ptr, ptr %27, align 8, !tbaa !5
  %3811 = load i32, ptr %44, align 4, !tbaa !9
  %3812 = sext i32 %3811 to i64
  %3813 = getelementptr inbounds %struct.complex, ptr %3810, i64 %3812
  %3814 = load ptr, ptr %28, align 8, !tbaa !5
  %3815 = load ptr, ptr %35, align 8, !tbaa !5
  %3816 = load i32, ptr %46, align 4, !tbaa !9
  %3817 = sext i32 %3816 to i64
  %3818 = getelementptr inbounds %struct.complex, ptr %3815, i64 %3817
  %3819 = load ptr, ptr %36, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str, ptr noundef %3803, ptr noundef %47, ptr noundef %3804, ptr noundef @c_b1, ptr noundef %3808, ptr noundef %3809, ptr noundef %3813, ptr noundef %3814, ptr noundef @c_b2, ptr noundef %3818, ptr noundef %3819)
  %3820 = load ptr, ptr %25, align 8, !tbaa !5
  %3821 = load i32, ptr %3820, align 4, !tbaa !9
  store i32 %3821, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3822

3822:                                             ; preds = %3895, %3748
  %3823 = load i32, ptr %56, align 4, !tbaa !9
  %3824 = load i32, ptr %47, align 4, !tbaa !9
  %3825 = icmp sle i32 %3823, %3824
  br i1 %3825, label %3826, label %3898

3826:                                             ; preds = %3822
  %3827 = load ptr, ptr %23, align 8, !tbaa !5
  %3828 = load i32, ptr %3827, align 4, !tbaa !9
  store i32 %3828, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3829

3829:                                             ; preds = %3891, %3826
  %3830 = load i32, ptr %55, align 4, !tbaa !9
  %3831 = load i32, ptr %48, align 4, !tbaa !9
  %3832 = icmp sle i32 %3830, %3831
  br i1 %3832, label %3833, label %3894

3833:                                             ; preds = %3829
  %3834 = load i32, ptr %55, align 4, !tbaa !9
  %3835 = load i32, ptr %56, align 4, !tbaa !9
  %3836 = load i32, ptr %45, align 4, !tbaa !9
  %3837 = mul nsw i32 %3835, %3836
  %3838 = add nsw i32 %3834, %3837
  store i32 %3838, ptr %49, align 4, !tbaa !9
  %3839 = load i32, ptr %55, align 4, !tbaa !9
  %3840 = load i32, ptr %56, align 4, !tbaa !9
  %3841 = load i32, ptr %45, align 4, !tbaa !9
  %3842 = mul nsw i32 %3840, %3841
  %3843 = add nsw i32 %3839, %3842
  store i32 %3843, ptr %50, align 4, !tbaa !9
  %3844 = load i32, ptr %55, align 4, !tbaa !9
  %3845 = load i32, ptr %56, align 4, !tbaa !9
  %3846 = load i32, ptr %37, align 4, !tbaa !9
  %3847 = mul nsw i32 %3845, %3846
  %3848 = add nsw i32 %3844, %3847
  store i32 %3848, ptr %51, align 4, !tbaa !9
  %3849 = load ptr, ptr %35, align 8, !tbaa !5
  %3850 = load i32, ptr %50, align 4, !tbaa !9
  %3851 = sext i32 %3850 to i64
  %3852 = getelementptr inbounds %struct.complex, ptr %3849, i64 %3851
  %3853 = getelementptr inbounds %struct.complex, ptr %3852, i32 0, i32 0
  %3854 = load float, ptr %3853, align 4, !tbaa !11
  %3855 = load ptr, ptr %31, align 8, !tbaa !5
  %3856 = load i32, ptr %51, align 4, !tbaa !9
  %3857 = sext i32 %3856 to i64
  %3858 = getelementptr inbounds %struct.complex, ptr %3855, i64 %3857
  %3859 = getelementptr inbounds %struct.complex, ptr %3858, i32 0, i32 0
  %3860 = load float, ptr %3859, align 4, !tbaa !11
  %3861 = fadd float %3854, %3860
  %3862 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3861, ptr %3862, align 4, !tbaa !11
  %3863 = load ptr, ptr %35, align 8, !tbaa !5
  %3864 = load i32, ptr %50, align 4, !tbaa !9
  %3865 = sext i32 %3864 to i64
  %3866 = getelementptr inbounds %struct.complex, ptr %3863, i64 %3865
  %3867 = getelementptr inbounds %struct.complex, ptr %3866, i32 0, i32 1
  %3868 = load float, ptr %3867, align 4, !tbaa !14
  %3869 = load ptr, ptr %31, align 8, !tbaa !5
  %3870 = load i32, ptr %51, align 4, !tbaa !9
  %3871 = sext i32 %3870 to i64
  %3872 = getelementptr inbounds %struct.complex, ptr %3869, i64 %3871
  %3873 = getelementptr inbounds %struct.complex, ptr %3872, i32 0, i32 1
  %3874 = load float, ptr %3873, align 4, !tbaa !14
  %3875 = fadd float %3868, %3874
  %3876 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3875, ptr %3876, align 4, !tbaa !14
  %3877 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3878 = load float, ptr %3877, align 4, !tbaa !11
  %3879 = load ptr, ptr %35, align 8, !tbaa !5
  %3880 = load i32, ptr %49, align 4, !tbaa !9
  %3881 = sext i32 %3880 to i64
  %3882 = getelementptr inbounds %struct.complex, ptr %3879, i64 %3881
  %3883 = getelementptr inbounds %struct.complex, ptr %3882, i32 0, i32 0
  store float %3878, ptr %3883, align 4, !tbaa !11
  %3884 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3885 = load float, ptr %3884, align 4, !tbaa !14
  %3886 = load ptr, ptr %35, align 8, !tbaa !5
  %3887 = load i32, ptr %49, align 4, !tbaa !9
  %3888 = sext i32 %3887 to i64
  %3889 = getelementptr inbounds %struct.complex, ptr %3886, i64 %3888
  %3890 = getelementptr inbounds %struct.complex, ptr %3889, i32 0, i32 1
  store float %3885, ptr %3890, align 4, !tbaa !14
  br label %3891

3891:                                             ; preds = %3833
  %3892 = load i32, ptr %55, align 4, !tbaa !9
  %3893 = add nsw i32 %3892, 1
  store i32 %3893, ptr %55, align 4, !tbaa !9
  br label %3829, !llvm.loop !74

3894:                                             ; preds = %3829
  br label %3895

3895:                                             ; preds = %3894
  %3896 = load i32, ptr %56, align 4, !tbaa !9
  %3897 = add nsw i32 %3896, 1
  store i32 %3897, ptr %56, align 4, !tbaa !9
  br label %3822, !llvm.loop !75

3898:                                             ; preds = %3822
  %3899 = load ptr, ptr %20, align 8, !tbaa !5
  %3900 = load ptr, ptr %23, align 8, !tbaa !5
  %3901 = load ptr, ptr %25, align 8, !tbaa !5
  %3902 = load ptr, ptr %29, align 8, !tbaa !5
  %3903 = load i32, ptr %42, align 4, !tbaa !9
  %3904 = sext i32 %3903 to i64
  %3905 = getelementptr inbounds %struct.complex, ptr %3902, i64 %3904
  %3906 = load ptr, ptr %30, align 8, !tbaa !5
  %3907 = load ptr, ptr %35, align 8, !tbaa !5
  %3908 = load i32, ptr %46, align 4, !tbaa !9
  %3909 = sext i32 %3908 to i64
  %3910 = getelementptr inbounds %struct.complex, ptr %3907, i64 %3909
  %3911 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef %3899, ptr noundef @.str.6, ptr noundef %3900, ptr noundef %3901, ptr noundef @c_b1, ptr noundef %3905, ptr noundef %3906, ptr noundef %3910, ptr noundef %3911)
  %3912 = load ptr, ptr %25, align 8, !tbaa !5
  %3913 = load i32, ptr %3912, align 4, !tbaa !9
  store i32 %3913, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %3914

3914:                                             ; preds = %3987, %3898
  %3915 = load i32, ptr %56, align 4, !tbaa !9
  %3916 = load i32, ptr %47, align 4, !tbaa !9
  %3917 = icmp sle i32 %3915, %3916
  br i1 %3917, label %3918, label %3990

3918:                                             ; preds = %3914
  %3919 = load ptr, ptr %23, align 8, !tbaa !5
  %3920 = load i32, ptr %3919, align 4, !tbaa !9
  store i32 %3920, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3921

3921:                                             ; preds = %3983, %3918
  %3922 = load i32, ptr %55, align 4, !tbaa !9
  %3923 = load i32, ptr %48, align 4, !tbaa !9
  %3924 = icmp sle i32 %3922, %3923
  br i1 %3924, label %3925, label %3986

3925:                                             ; preds = %3921
  %3926 = load i32, ptr %55, align 4, !tbaa !9
  %3927 = load i32, ptr %56, align 4, !tbaa !9
  %3928 = load i32, ptr %37, align 4, !tbaa !9
  %3929 = mul nsw i32 %3927, %3928
  %3930 = add nsw i32 %3926, %3929
  store i32 %3930, ptr %49, align 4, !tbaa !9
  %3931 = load i32, ptr %55, align 4, !tbaa !9
  %3932 = load i32, ptr %56, align 4, !tbaa !9
  %3933 = load i32, ptr %37, align 4, !tbaa !9
  %3934 = mul nsw i32 %3932, %3933
  %3935 = add nsw i32 %3931, %3934
  store i32 %3935, ptr %50, align 4, !tbaa !9
  %3936 = load i32, ptr %55, align 4, !tbaa !9
  %3937 = load i32, ptr %56, align 4, !tbaa !9
  %3938 = load i32, ptr %45, align 4, !tbaa !9
  %3939 = mul nsw i32 %3937, %3938
  %3940 = add nsw i32 %3936, %3939
  store i32 %3940, ptr %51, align 4, !tbaa !9
  %3941 = load ptr, ptr %31, align 8, !tbaa !5
  %3942 = load i32, ptr %50, align 4, !tbaa !9
  %3943 = sext i32 %3942 to i64
  %3944 = getelementptr inbounds %struct.complex, ptr %3941, i64 %3943
  %3945 = getelementptr inbounds %struct.complex, ptr %3944, i32 0, i32 0
  %3946 = load float, ptr %3945, align 4, !tbaa !11
  %3947 = load ptr, ptr %35, align 8, !tbaa !5
  %3948 = load i32, ptr %51, align 4, !tbaa !9
  %3949 = sext i32 %3948 to i64
  %3950 = getelementptr inbounds %struct.complex, ptr %3947, i64 %3949
  %3951 = getelementptr inbounds %struct.complex, ptr %3950, i32 0, i32 0
  %3952 = load float, ptr %3951, align 4, !tbaa !11
  %3953 = fsub float %3946, %3952
  %3954 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %3953, ptr %3954, align 4, !tbaa !11
  %3955 = load ptr, ptr %31, align 8, !tbaa !5
  %3956 = load i32, ptr %50, align 4, !tbaa !9
  %3957 = sext i32 %3956 to i64
  %3958 = getelementptr inbounds %struct.complex, ptr %3955, i64 %3957
  %3959 = getelementptr inbounds %struct.complex, ptr %3958, i32 0, i32 1
  %3960 = load float, ptr %3959, align 4, !tbaa !14
  %3961 = load ptr, ptr %35, align 8, !tbaa !5
  %3962 = load i32, ptr %51, align 4, !tbaa !9
  %3963 = sext i32 %3962 to i64
  %3964 = getelementptr inbounds %struct.complex, ptr %3961, i64 %3963
  %3965 = getelementptr inbounds %struct.complex, ptr %3964, i32 0, i32 1
  %3966 = load float, ptr %3965, align 4, !tbaa !14
  %3967 = fsub float %3960, %3966
  %3968 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %3967, ptr %3968, align 4, !tbaa !14
  %3969 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %3970 = load float, ptr %3969, align 4, !tbaa !11
  %3971 = load ptr, ptr %31, align 8, !tbaa !5
  %3972 = load i32, ptr %49, align 4, !tbaa !9
  %3973 = sext i32 %3972 to i64
  %3974 = getelementptr inbounds %struct.complex, ptr %3971, i64 %3973
  %3975 = getelementptr inbounds %struct.complex, ptr %3974, i32 0, i32 0
  store float %3970, ptr %3975, align 4, !tbaa !11
  %3976 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %3977 = load float, ptr %3976, align 4, !tbaa !14
  %3978 = load ptr, ptr %31, align 8, !tbaa !5
  %3979 = load i32, ptr %49, align 4, !tbaa !9
  %3980 = sext i32 %3979 to i64
  %3981 = getelementptr inbounds %struct.complex, ptr %3978, i64 %3980
  %3982 = getelementptr inbounds %struct.complex, ptr %3981, i32 0, i32 1
  store float %3977, ptr %3982, align 4, !tbaa !14
  br label %3983

3983:                                             ; preds = %3925
  %3984 = load i32, ptr %55, align 4, !tbaa !9
  %3985 = add nsw i32 %3984, 1
  store i32 %3985, ptr %55, align 4, !tbaa !9
  br label %3921, !llvm.loop !76

3986:                                             ; preds = %3921
  br label %3987

3987:                                             ; preds = %3986
  %3988 = load i32, ptr %56, align 4, !tbaa !9
  %3989 = add nsw i32 %3988, 1
  store i32 %3989, ptr %56, align 4, !tbaa !9
  br label %3914, !llvm.loop !77

3990:                                             ; preds = %3914
  %3991 = load ptr, ptr %24, align 8, !tbaa !5
  %3992 = load i32, ptr %3991, align 4, !tbaa !9
  %3993 = load ptr, ptr %26, align 8, !tbaa !5
  %3994 = load i32, ptr %3993, align 4, !tbaa !9
  %3995 = sub nsw i32 %3992, %3994
  store i32 %3995, ptr %47, align 4, !tbaa !9
  %3996 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %3996, align 4, !tbaa !11
  %3997 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %3997, align 4, !tbaa !14
  %3998 = load ptr, ptr %23, align 8, !tbaa !5
  %3999 = load ptr, ptr %25, align 8, !tbaa !5
  %4000 = load ptr, ptr %35, align 8, !tbaa !5
  %4001 = load i32, ptr %46, align 4, !tbaa !9
  %4002 = sext i32 %4001 to i64
  %4003 = getelementptr inbounds %struct.complex, ptr %4000, i64 %4002
  %4004 = load ptr, ptr %36, align 8, !tbaa !5
  %4005 = load ptr, ptr %27, align 8, !tbaa !5
  %4006 = load i32, ptr %60, align 4, !tbaa !9
  %4007 = load i32, ptr %43, align 4, !tbaa !9
  %4008 = mul nsw i32 %4006, %4007
  %4009 = add nsw i32 %4008, 1
  %4010 = sext i32 %4009 to i64
  %4011 = getelementptr inbounds %struct.complex, ptr %4005, i64 %4010
  %4012 = load ptr, ptr %28, align 8, !tbaa !5
  %4013 = load ptr, ptr %33, align 8, !tbaa !5
  %4014 = load i32, ptr %60, align 4, !tbaa !9
  %4015 = load i32, ptr %39, align 4, !tbaa !9
  %4016 = mul nsw i32 %4014, %4015
  %4017 = add nsw i32 %4016, 1
  %4018 = sext i32 %4017 to i64
  %4019 = getelementptr inbounds %struct.complex, ptr %4013, i64 %4018
  %4020 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %3998, ptr noundef %47, ptr noundef %3999, ptr noundef %52, ptr noundef %4003, ptr noundef %4004, ptr noundef %4011, ptr noundef %4012, ptr noundef @c_b1, ptr noundef %4019, ptr noundef %4020)
  %4021 = load ptr, ptr %25, align 8, !tbaa !5
  %4022 = load i32, ptr %4021, align 4, !tbaa !9
  %4023 = load ptr, ptr %26, align 8, !tbaa !5
  %4024 = load i32, ptr %4023, align 4, !tbaa !9
  %4025 = sub nsw i32 %4022, %4024
  store i32 %4025, ptr %47, align 4, !tbaa !9
  %4026 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float -1.000000e+00, ptr %4026, align 4, !tbaa !11
  %4027 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float 0.000000e+00, ptr %4027, align 4, !tbaa !14
  %4028 = load ptr, ptr %23, align 8, !tbaa !5
  %4029 = load ptr, ptr %26, align 8, !tbaa !5
  %4030 = load ptr, ptr %35, align 8, !tbaa !5
  %4031 = load i32, ptr %46, align 4, !tbaa !9
  %4032 = sext i32 %4031 to i64
  %4033 = getelementptr inbounds %struct.complex, ptr %4030, i64 %4032
  %4034 = load ptr, ptr %36, align 8, !tbaa !5
  %4035 = load ptr, ptr %27, align 8, !tbaa !5
  %4036 = load i32, ptr %44, align 4, !tbaa !9
  %4037 = sext i32 %4036 to i64
  %4038 = getelementptr inbounds %struct.complex, ptr %4035, i64 %4037
  %4039 = load ptr, ptr %28, align 8, !tbaa !5
  %4040 = load ptr, ptr %33, align 8, !tbaa !5
  %4041 = load i32, ptr %40, align 4, !tbaa !9
  %4042 = sext i32 %4041 to i64
  %4043 = getelementptr inbounds %struct.complex, ptr %4040, i64 %4042
  %4044 = load ptr, ptr %34, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %4028, ptr noundef %4029, ptr noundef %47, ptr noundef %52, ptr noundef %4033, ptr noundef %4034, ptr noundef %4038, ptr noundef %4039, ptr noundef @c_b1, ptr noundef %4043, ptr noundef %4044)
  %4045 = load ptr, ptr %23, align 8, !tbaa !5
  %4046 = load ptr, ptr %26, align 8, !tbaa !5
  %4047 = load ptr, ptr %27, align 8, !tbaa !5
  %4048 = load i32, ptr %58, align 4, !tbaa !9
  %4049 = load i32, ptr %43, align 4, !tbaa !9
  %4050 = add nsw i32 %4048, %4049
  %4051 = sext i32 %4050 to i64
  %4052 = getelementptr inbounds %struct.complex, ptr %4047, i64 %4051
  %4053 = load ptr, ptr %28, align 8, !tbaa !5
  %4054 = load ptr, ptr %35, align 8, !tbaa !5
  %4055 = load i32, ptr %58, align 4, !tbaa !9
  %4056 = load i32, ptr %45, align 4, !tbaa !9
  %4057 = mul nsw i32 %4055, %4056
  %4058 = add nsw i32 %4057, 1
  %4059 = sext i32 %4058 to i64
  %4060 = getelementptr inbounds %struct.complex, ptr %4054, i64 %4059
  %4061 = load ptr, ptr %36, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %4045, ptr noundef %4046, ptr noundef @c_b1, ptr noundef %4052, ptr noundef %4053, ptr noundef %4060, ptr noundef %4061)
  %4062 = load ptr, ptr %26, align 8, !tbaa !5
  %4063 = load i32, ptr %4062, align 4, !tbaa !9
  store i32 %4063, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %4064

4064:                                             ; preds = %4143, %3990
  %4065 = load i32, ptr %56, align 4, !tbaa !9
  %4066 = load i32, ptr %47, align 4, !tbaa !9
  %4067 = icmp sle i32 %4065, %4066
  br i1 %4067, label %4068, label %4146

4068:                                             ; preds = %4064
  %4069 = load ptr, ptr %23, align 8, !tbaa !5
  %4070 = load i32, ptr %4069, align 4, !tbaa !9
  store i32 %4070, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %4071

4071:                                             ; preds = %4139, %4068
  %4072 = load i32, ptr %55, align 4, !tbaa !9
  %4073 = load i32, ptr %48, align 4, !tbaa !9
  %4074 = icmp sle i32 %4072, %4073
  br i1 %4074, label %4075, label %4142

4075:                                             ; preds = %4071
  %4076 = load i32, ptr %55, align 4, !tbaa !9
  %4077 = load i32, ptr %56, align 4, !tbaa !9
  %4078 = load i32, ptr %39, align 4, !tbaa !9
  %4079 = mul nsw i32 %4077, %4078
  %4080 = add nsw i32 %4076, %4079
  store i32 %4080, ptr %49, align 4, !tbaa !9
  %4081 = load i32, ptr %55, align 4, !tbaa !9
  %4082 = load i32, ptr %56, align 4, !tbaa !9
  %4083 = load i32, ptr %39, align 4, !tbaa !9
  %4084 = mul nsw i32 %4082, %4083
  %4085 = add nsw i32 %4081, %4084
  store i32 %4085, ptr %50, align 4, !tbaa !9
  %4086 = load i32, ptr %55, align 4, !tbaa !9
  %4087 = load ptr, ptr %25, align 8, !tbaa !5
  %4088 = load i32, ptr %4087, align 4, !tbaa !9
  %4089 = load ptr, ptr %26, align 8, !tbaa !5
  %4090 = load i32, ptr %4089, align 4, !tbaa !9
  %4091 = sub nsw i32 %4088, %4090
  %4092 = load i32, ptr %56, align 4, !tbaa !9
  %4093 = add nsw i32 %4091, %4092
  %4094 = load i32, ptr %45, align 4, !tbaa !9
  %4095 = mul nsw i32 %4093, %4094
  %4096 = add nsw i32 %4086, %4095
  store i32 %4096, ptr %51, align 4, !tbaa !9
  %4097 = load ptr, ptr %33, align 8, !tbaa !5
  %4098 = load i32, ptr %50, align 4, !tbaa !9
  %4099 = sext i32 %4098 to i64
  %4100 = getelementptr inbounds %struct.complex, ptr %4097, i64 %4099
  %4101 = getelementptr inbounds %struct.complex, ptr %4100, i32 0, i32 0
  %4102 = load float, ptr %4101, align 4, !tbaa !11
  %4103 = load ptr, ptr %35, align 8, !tbaa !5
  %4104 = load i32, ptr %51, align 4, !tbaa !9
  %4105 = sext i32 %4104 to i64
  %4106 = getelementptr inbounds %struct.complex, ptr %4103, i64 %4105
  %4107 = getelementptr inbounds %struct.complex, ptr %4106, i32 0, i32 0
  %4108 = load float, ptr %4107, align 4, !tbaa !11
  %4109 = fsub float %4102, %4108
  %4110 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %4109, ptr %4110, align 4, !tbaa !11
  %4111 = load ptr, ptr %33, align 8, !tbaa !5
  %4112 = load i32, ptr %50, align 4, !tbaa !9
  %4113 = sext i32 %4112 to i64
  %4114 = getelementptr inbounds %struct.complex, ptr %4111, i64 %4113
  %4115 = getelementptr inbounds %struct.complex, ptr %4114, i32 0, i32 1
  %4116 = load float, ptr %4115, align 4, !tbaa !14
  %4117 = load ptr, ptr %35, align 8, !tbaa !5
  %4118 = load i32, ptr %51, align 4, !tbaa !9
  %4119 = sext i32 %4118 to i64
  %4120 = getelementptr inbounds %struct.complex, ptr %4117, i64 %4119
  %4121 = getelementptr inbounds %struct.complex, ptr %4120, i32 0, i32 1
  %4122 = load float, ptr %4121, align 4, !tbaa !14
  %4123 = fsub float %4116, %4122
  %4124 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %4123, ptr %4124, align 4, !tbaa !14
  %4125 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %4126 = load float, ptr %4125, align 4, !tbaa !11
  %4127 = load ptr, ptr %33, align 8, !tbaa !5
  %4128 = load i32, ptr %49, align 4, !tbaa !9
  %4129 = sext i32 %4128 to i64
  %4130 = getelementptr inbounds %struct.complex, ptr %4127, i64 %4129
  %4131 = getelementptr inbounds %struct.complex, ptr %4130, i32 0, i32 0
  store float %4126, ptr %4131, align 4, !tbaa !11
  %4132 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %4133 = load float, ptr %4132, align 4, !tbaa !14
  %4134 = load ptr, ptr %33, align 8, !tbaa !5
  %4135 = load i32, ptr %49, align 4, !tbaa !9
  %4136 = sext i32 %4135 to i64
  %4137 = getelementptr inbounds %struct.complex, ptr %4134, i64 %4136
  %4138 = getelementptr inbounds %struct.complex, ptr %4137, i32 0, i32 1
  store float %4133, ptr %4138, align 4, !tbaa !14
  br label %4139

4139:                                             ; preds = %4075
  %4140 = load i32, ptr %55, align 4, !tbaa !9
  %4141 = add nsw i32 %4140, 1
  store i32 %4141, ptr %55, align 4, !tbaa !9
  br label %4071, !llvm.loop !78

4142:                                             ; preds = %4071
  br label %4143

4143:                                             ; preds = %4142
  %4144 = load i32, ptr %56, align 4, !tbaa !9
  %4145 = add nsw i32 %4144, 1
  store i32 %4145, ptr %56, align 4, !tbaa !9
  br label %4064, !llvm.loop !79

4146:                                             ; preds = %4064
  br label %4147

4147:                                             ; preds = %4146, %3654, %3651, %3648
  br label %4148

4148:                                             ; preds = %4147, %3647
  br label %4149

4149:                                             ; preds = %4148, %3153
  br label %4150

4150:                                             ; preds = %4149, %2653
  br label %4151

4151:                                             ; preds = %4150, %2156
  br label %4152

4152:                                             ; preds = %4151, %1656
  br label %4153

4153:                                             ; preds = %4152, %1161
  br label %4154

4154:                                             ; preds = %4153, %662
  store i32 1, ptr %64, align 4
  br label %4155

4155:                                             ; preds = %4154, %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  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 @lsame_(ptr noundef, ptr noundef) #2

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

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

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

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

!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 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!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}
!48 = distinct !{!48, !16}
!49 = distinct !{!49, !16}
!50 = distinct !{!50, !16}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !16}
!53 = distinct !{!53, !16}
!54 = distinct !{!54, !16}
!55 = distinct !{!55, !16}
!56 = distinct !{!56, !16}
!57 = distinct !{!57, !16}
!58 = distinct !{!58, !16}
!59 = distinct !{!59, !16}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !16}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !16}
!64 = distinct !{!64, !16}
!65 = distinct !{!65, !16}
!66 = distinct !{!66, !16}
!67 = distinct !{!67, !16}
!68 = distinct !{!68, !16}
!69 = distinct !{!69, !16}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !16}
!72 = distinct !{!72, !16}
!73 = distinct !{!73, !16}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !16}
!76 = distinct !{!76, !16}
!77 = distinct !{!77, !16}
!78 = distinct !{!78, !16}
!79 = distinct !{!79, !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.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @ctprfb_(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 nocapture noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17) local_unnamed_addr #0 {
  %19 = alloca i32, align 4
  %20 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #3
  %21 = load i32, ptr %9, align 4, !tbaa !5
  %narrow1857 = xor i32 %21, -1
  %22 = sext i32 %narrow1857 to i64
  %23 = getelementptr inbounds %struct.complex, ptr %8, i64 %22
  %24 = load i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.complex, ptr %12, i64 %25
  %27 = load i32, ptr %15, align 4, !tbaa !5
  %narrow1858 = xor i32 %27, -1
  %28 = sext i32 %narrow1858 to i64
  %29 = getelementptr inbounds %struct.complex, ptr %14, i64 %28
  %30 = load i32, ptr %17, align 4, !tbaa !5
  %narrow1856 = xor i32 %30, -1
  %31 = sext i32 %narrow1856 to i64
  %32 = getelementptr inbounds %struct.complex, ptr %16, i64 %31
  %33 = load i32, ptr %4, align 4, !tbaa !5
  %34 = icmp slt i32 %33, 1
  br i1 %34, label %.thread1900, label %35

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

38:                                               ; preds = %35
  %39 = load i32, ptr %6, align 4, !tbaa !5
  %40 = icmp slt i32 %39, 1
  br i1 %40, label %.thread1900, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %7, align 4, !tbaa !5
  %43 = icmp slt i32 %42, 0
  br i1 %43, label %.thread1900, label %44

44:                                               ; preds = %41
  %45 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #3
  %.not = icmp ne i32 %45, 0
  br i1 %.not, label %48, label %46

46:                                               ; preds = %44
  %47 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #3
  %.not1778 = icmp ne i32 %47, 0
  br label %48

48:                                               ; preds = %46, %44
  %49 = phi i1 [ false, %44 ], [ %.not1778, %46 ]
  %50 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #3
  %.not1779 = icmp ne i32 %50, 0
  br i1 %.not1779, label %53, label %51

51:                                               ; preds = %48
  %52 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #3
  %.not1780 = icmp ne i32 %52, 0
  br label %53

53:                                               ; preds = %51, %48
  %54 = phi i1 [ false, %48 ], [ %.not1780, %51 ]
  %55 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #3
  %.not1781.not = icmp eq i32 %55, 0
  br i1 %.not1781.not, label %695, label %56

56:                                               ; preds = %53
  %or.cond3 = and i1 %.not1779, %.not
  br i1 %or.cond3, label %57, label %412

57:                                               ; preds = %56
  %58 = load i32, ptr %4, align 4, !tbaa !5
  %59 = load i32, ptr %7, align 4, !tbaa !5
  %60 = sub nsw i32 %58, %59
  %61 = add nsw i32 %60, 1
  %.not1853.not = icmp sgt i32 %59, 0
  %.1868 = select i1 %.not1853.not, i32 %61, i32 %58
  %62 = add i32 %59, 1
  %63 = load i32, ptr %6, align 4, !tbaa !5
  %.not1854.not = icmp slt i32 %59, %63
  %64 = select i1 %.not1854.not, i32 %62, i32 %63
  %65 = load i32, ptr %5, align 4, !tbaa !5
  %.not18552226 = icmp slt i32 %65, 1
  br i1 %.not18552226, label %._crit_edge2228, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %57
  %.not18652222 = icmp slt i32 %59, 1
  %66 = sext i32 %30 to i64
  %67 = add nuw i32 %65, 1
  %wide.trip.count2442 = zext i32 %67 to i64
  %wide.trip.count2437 = zext i32 %62 to i64
  %68 = add nsw i64 %wide.trip.count2437, -2
  %69 = add i32 %27, %58
  %70 = add i32 %69, 1
  %71 = sub i32 %70, %59
  %72 = shl nsw i64 %66, 3
  %73 = shl nsw i64 %31, 3
  %74 = getelementptr i8, ptr %16, i64 %72
  %75 = getelementptr i8, ptr %74, i64 %73
  %scevgep3327 = getelementptr i8, ptr %75, i64 8
  %76 = shl nuw nsw i64 %wide.trip.count2442, 3
  %77 = add nsw i64 %76, -8
  %78 = mul i64 %77, %66
  %79 = shl nuw nsw i64 %wide.trip.count2437, 3
  %80 = getelementptr i8, ptr %16, i64 %78
  %81 = getelementptr i8, ptr %80, i64 %73
  %82 = getelementptr i8, ptr %81, i64 %79
  %scevgep3328 = getelementptr i8, ptr %82, i64 -4
  %83 = shl nsw i64 %28, 3
  %scevgep3329 = getelementptr i8, ptr %14, i64 %83
  %84 = add i32 %27, %58
  %85 = add i32 %84, 1
  %86 = sub i32 %85, %59
  %87 = getelementptr i8, ptr %14, i64 %83
  %88 = getelementptr i8, ptr %87, i64 %79
  %scevgep3331 = getelementptr i8, ptr %88, i64 -12
  %89 = getelementptr i8, ptr %16, i64 %72
  %90 = getelementptr i8, ptr %89, i64 %73
  %scevgep3333 = getelementptr i8, ptr %90, i64 12
  %91 = getelementptr i8, ptr %16, i64 %78
  %92 = getelementptr i8, ptr %91, i64 %73
  %scevgep3334 = getelementptr i8, ptr %92, i64 %79
  %93 = or disjoint i64 %83, 4
  %scevgep3335 = getelementptr i8, ptr %14, i64 %93
  %94 = getelementptr i8, ptr %14, i64 %83
  %95 = getelementptr i8, ptr %94, i64 %79
  %scevgep3337 = getelementptr i8, ptr %95, i64 -8
  %96 = add nsw i64 %wide.trip.count2437, -1
  %min.iters.check3350 = icmp ult i32 %62, 13
  %97 = trunc i64 %68 to i32
  %98 = icmp ugt i64 %68, 4294967295
  %stride.check3346 = icmp slt i32 %30, 0
  %n.vec3353 = and i64 %96, -4
  %ind.end3354 = or disjoint i64 %n.vec3353, 1
  %cmp.n3369 = icmp eq i64 %96, %n.vec3353
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge2225
  %indvar3324 = phi i32 [ 0, %.preheader.lr.ph ], [ %indvar.next3325, %._crit_edge2225 ]
  %indvars.iv2439 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next2440, %._crit_edge2225 ]
  %99 = mul i32 %27, %indvar3324
  %100 = add i32 %86, %99
  %101 = sext i32 %100 to i64
  %102 = shl nsw i64 %101, 3
  %scevgep3330 = getelementptr i8, ptr %scevgep3329, i64 %102
  %scevgep3332 = getelementptr i8, ptr %scevgep3331, i64 %102
  %scevgep3336 = getelementptr i8, ptr %scevgep3335, i64 %102
  %scevgep3338 = getelementptr i8, ptr %scevgep3337, i64 %102
  %103 = mul i32 %27, %indvar3324
  %104 = add i32 %71, %103
  br i1 %.not18652222, label %._crit_edge2225, label %.lr.ph2224

.lr.ph2224:                                       ; preds = %.preheader
  %105 = mul nsw i64 %indvars.iv2439, %66
  %106 = trunc i64 %indvars.iv2439 to i32
  %107 = mul i32 %27, %106
  %108 = add i32 %107, %60
  %invariant.gep2715 = getelementptr %struct.complex, ptr %32, i64 %105
  br i1 %min.iters.check3350, label %scalar.ph3349.preheader, label %vector.scevcheck3323

vector.scevcheck3323:                             ; preds = %.lr.ph2224
  %109 = add i32 %104, %97
  %110 = icmp slt i32 %109, %104
  %111 = or i1 %110, %98
  br i1 %111, label %scalar.ph3349.preheader, label %vector.memcheck3326

vector.memcheck3326:                              ; preds = %vector.scevcheck3323
  %bound03339 = icmp ult ptr %scevgep3327, %scevgep3332
  %bound13340 = icmp ult ptr %scevgep3330, %scevgep3328
  %found.conflict3341 = and i1 %bound03339, %bound13340
  %bound03343 = icmp ult ptr %scevgep3333, %scevgep3338
  %bound13344 = icmp ult ptr %scevgep3336, %scevgep3334
  %found.conflict3345 = and i1 %bound03343, %bound13344
  %112 = or i1 %found.conflict3345, %stride.check3346
  %conflict.rdx3347 = or i1 %found.conflict3341, %112
  br i1 %conflict.rdx3347, label %scalar.ph3349.preheader, label %vector.body3356

vector.body3356:                                  ; preds = %vector.memcheck3326, %vector.body3356
  %index3357 = phi i64 [ %index.next3368, %vector.body3356 ], [ 0, %vector.memcheck3326 ]
  %offset.idx3358 = or disjoint i64 %index3357, 1
  %113 = or disjoint i64 %index3357, 3
  %114 = trunc i64 %index3357 to i32
  %115 = or disjoint i32 %114, 1
  %116 = or disjoint i32 %114, 3
  %117 = add i32 %108, %115
  %118 = add i32 %108, %116
  %119 = sext i32 %117 to i64
  %120 = sext i32 %118 to i64
  %121 = getelementptr inbounds %struct.complex, ptr %29, i64 %119
  %122 = getelementptr inbounds %struct.complex, ptr %29, i64 %120
  %wide.vec3360 = load <4 x float>, ptr %121, align 4, !tbaa !9
  %wide.vec3361 = load <4 x float>, ptr %122, align 4, !tbaa !9
  %123 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %offset.idx3358
  %124 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %113
  store <4 x float> %wide.vec3360, ptr %123, align 4, !tbaa !9
  store <4 x float> %wide.vec3361, ptr %124, align 4, !tbaa !9
  %index.next3368 = add nuw i64 %index3357, 4
  %125 = icmp eq i64 %index.next3368, %n.vec3353
  br i1 %125, label %middle.block3348, label %vector.body3356, !llvm.loop !11

middle.block3348:                                 ; preds = %vector.body3356
  br i1 %cmp.n3369, label %._crit_edge2225, label %scalar.ph3349.preheader

scalar.ph3349.preheader:                          ; preds = %middle.block3348, %vector.memcheck3326, %vector.scevcheck3323, %.lr.ph2224
  %indvars.iv2434.ph = phi i64 [ 1, %vector.memcheck3326 ], [ 1, %vector.scevcheck3323 ], [ 1, %.lr.ph2224 ], [ %ind.end3354, %middle.block3348 ]
  %126 = sub nsw i64 %wide.trip.count2437, %indvars.iv2434.ph
  %xtraiter4257 = and i64 %126, 3
  %lcmp.mod4258.not = icmp eq i64 %xtraiter4257, 0
  br i1 %lcmp.mod4258.not, label %scalar.ph3349.prol.loopexit, label %scalar.ph3349.prol

scalar.ph3349.prol:                               ; preds = %scalar.ph3349.preheader, %scalar.ph3349.prol
  %indvars.iv2434.prol = phi i64 [ %indvars.iv.next2435.prol, %scalar.ph3349.prol ], [ %indvars.iv2434.ph, %scalar.ph3349.preheader ]
  %prol.iter4259 = phi i64 [ %prol.iter4259.next, %scalar.ph3349.prol ], [ 0, %scalar.ph3349.preheader ]
  %127 = trunc nuw nsw i64 %indvars.iv2434.prol to i32
  %128 = add i32 %108, %127
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds %struct.complex, ptr %29, i64 %129
  %gep2716.prol = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %indvars.iv2434.prol
  %131 = load <2 x float>, ptr %130, align 4, !tbaa !9
  store <2 x float> %131, ptr %gep2716.prol, align 4, !tbaa !9
  %indvars.iv.next2435.prol = add nuw nsw i64 %indvars.iv2434.prol, 1
  %prol.iter4259.next = add i64 %prol.iter4259, 1
  %prol.iter4259.cmp.not = icmp eq i64 %prol.iter4259.next, %xtraiter4257
  br i1 %prol.iter4259.cmp.not, label %scalar.ph3349.prol.loopexit, label %scalar.ph3349.prol, !llvm.loop !15

scalar.ph3349.prol.loopexit:                      ; preds = %scalar.ph3349.prol, %scalar.ph3349.preheader
  %indvars.iv2434.unr = phi i64 [ %indvars.iv2434.ph, %scalar.ph3349.preheader ], [ %indvars.iv.next2435.prol, %scalar.ph3349.prol ]
  %132 = sub nsw i64 %indvars.iv2434.ph, %wide.trip.count2437
  %133 = icmp ugt i64 %132, -4
  br i1 %133, label %._crit_edge2225, label %scalar.ph3349

scalar.ph3349:                                    ; preds = %scalar.ph3349.prol.loopexit, %scalar.ph3349
  %indvars.iv2434 = phi i64 [ %indvars.iv.next2435.3, %scalar.ph3349 ], [ %indvars.iv2434.unr, %scalar.ph3349.prol.loopexit ]
  %134 = trunc nuw nsw i64 %indvars.iv2434 to i32
  %135 = add i32 %108, %134
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds %struct.complex, ptr %29, i64 %136
  %gep2716 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %indvars.iv2434
  %138 = load <2 x float>, ptr %137, align 4, !tbaa !9
  store <2 x float> %138, ptr %gep2716, align 4, !tbaa !9
  %indvars.iv.next2435 = add nuw nsw i64 %indvars.iv2434, 1
  %139 = trunc nuw nsw i64 %indvars.iv.next2435 to i32
  %140 = add i32 %108, %139
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds %struct.complex, ptr %29, i64 %141
  %gep2716.1 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %indvars.iv.next2435
  %143 = load <2 x float>, ptr %142, align 4, !tbaa !9
  store <2 x float> %143, ptr %gep2716.1, align 4, !tbaa !9
  %indvars.iv.next2435.1 = add nuw nsw i64 %indvars.iv2434, 2
  %144 = trunc nuw nsw i64 %indvars.iv.next2435.1 to i32
  %145 = add i32 %108, %144
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds %struct.complex, ptr %29, i64 %146
  %gep2716.2 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %indvars.iv.next2435.1
  %148 = load <2 x float>, ptr %147, align 4, !tbaa !9
  store <2 x float> %148, ptr %gep2716.2, align 4, !tbaa !9
  %indvars.iv.next2435.2 = add nuw nsw i64 %indvars.iv2434, 3
  %149 = trunc nuw nsw i64 %indvars.iv.next2435.2 to i32
  %150 = add i32 %108, %149
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds %struct.complex, ptr %29, i64 %151
  %gep2716.3 = getelementptr %struct.complex, ptr %invariant.gep2715, i64 %indvars.iv.next2435.2
  %153 = load <2 x float>, ptr %152, align 4, !tbaa !9
  store <2 x float> %153, ptr %gep2716.3, align 4, !tbaa !9
  %indvars.iv.next2435.3 = add nuw nsw i64 %indvars.iv2434, 4
  %exitcond2438.not.3 = icmp eq i64 %indvars.iv.next2435.3, %wide.trip.count2437
  br i1 %exitcond2438.not.3, label %._crit_edge2225, label %scalar.ph3349, !llvm.loop !17

._crit_edge2225:                                  ; preds = %scalar.ph3349.prol.loopexit, %scalar.ph3349, %middle.block3348, %.preheader
  %indvars.iv.next2440 = add nuw nsw i64 %indvars.iv2439, 1
  %exitcond2443.not = icmp eq i64 %indvars.iv.next2440, %wide.trip.count2442
  %indvar.next3325 = add i32 %indvar3324, 1
  br i1 %exitcond2443.not, label %._crit_edge2228, label %.preheader, !llvm.loop !18

._crit_edge2228:                                  ; preds = %._crit_edge2225, %57
  %154 = add nsw i32 %.1868, %21
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds %struct.complex, ptr %23, i64 %155
  tail call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %156, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %157 = load i32, ptr %4, align 4, !tbaa !5
  %158 = load i32, ptr %7, align 4, !tbaa !5
  %159 = sub nsw i32 %157, %158
  store i32 %159, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull %17) #3
  %160 = load i32, ptr %6, align 4, !tbaa !5
  %161 = load i32, ptr %7, align 4, !tbaa !5
  %162 = sub nsw i32 %160, %161
  store i32 %162, ptr %19, align 4, !tbaa !5
  %163 = mul nsw i32 %64, %21
  %164 = sext i32 %163 to i64
  %165 = getelementptr %struct.complex, ptr %23, i64 %164
  %166 = getelementptr i8, ptr %165, i64 8
  %167 = add nsw i32 %64, %30
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds %struct.complex, ptr %32, i64 %168
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef %166, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b2, ptr noundef %169, ptr noundef nonnull %17) #3
  %170 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %170, ptr %19, align 4, !tbaa !5
  %.not18592236 = icmp slt i32 %170, 1
  br i1 %.not18592236, label %._crit_edge2240, label %.lr.ph2239

.lr.ph2239:                                       ; preds = %._crit_edge2228
  %171 = load i32, ptr %6, align 4, !tbaa !5
  %.not18642229 = icmp slt i32 %171, 1
  %172 = add i32 %171, 1
  %173 = sext i32 %30 to i64
  %174 = sext i32 %24 to i64
  %175 = add nuw i32 %170, 1
  %wide.trip.count2452 = zext i32 %175 to i64
  %wide.trip.count2447 = zext i32 %172 to i64
  %176 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %177 = shl nsw i64 %173, 3
  %178 = shl nsw i64 %31, 3
  %179 = getelementptr i8, ptr %16, i64 %177
  %180 = getelementptr i8, ptr %179, i64 %178
  %scevgep3371 = getelementptr i8, ptr %180, i64 8
  %181 = shl nuw nsw i64 %wide.trip.count2452, 3
  %182 = add nsw i64 %181, -8
  %183 = mul i64 %182, %173
  %184 = shl nuw nsw i64 %wide.trip.count2447, 3
  %185 = getelementptr i8, ptr %16, i64 %183
  %186 = getelementptr i8, ptr %185, i64 %178
  %187 = getelementptr i8, ptr %186, i64 %184
  %scevgep3372 = getelementptr i8, ptr %187, i64 -4
  %188 = shl nsw i64 %174, 3
  %189 = shl nsw i64 %25, 3
  %190 = getelementptr i8, ptr %12, i64 %188
  %191 = getelementptr i8, ptr %190, i64 %189
  %scevgep3373 = getelementptr i8, ptr %191, i64 8
  %192 = mul i64 %182, %174
  %193 = getelementptr i8, ptr %12, i64 %192
  %194 = getelementptr i8, ptr %193, i64 %189
  %195 = getelementptr i8, ptr %194, i64 %184
  %scevgep3374 = getelementptr i8, ptr %195, i64 -4
  %196 = getelementptr i8, ptr %16, i64 %177
  %197 = getelementptr i8, ptr %196, i64 %178
  %scevgep3375 = getelementptr i8, ptr %197, i64 12
  %198 = getelementptr i8, ptr %16, i64 %183
  %199 = getelementptr i8, ptr %198, i64 %178
  %scevgep3376 = getelementptr i8, ptr %199, i64 %184
  %200 = getelementptr i8, ptr %12, i64 %188
  %201 = getelementptr i8, ptr %200, i64 %189
  %scevgep3377 = getelementptr i8, ptr %201, i64 12
  %202 = getelementptr i8, ptr %12, i64 %192
  %203 = getelementptr i8, ptr %202, i64 %189
  %scevgep3378 = getelementptr i8, ptr %203, i64 %184
  %204 = add nsw i64 %wide.trip.count2447, -1
  %min.iters.check3392 = icmp ult i32 %172, 7
  %bound03379 = icmp ult ptr %scevgep3371, %scevgep3374
  %bound13380 = icmp ult ptr %scevgep3373, %scevgep3372
  %found.conflict3381 = and i1 %bound03379, %bound13380
  %205 = or i32 %30, %24
  %206 = icmp slt i32 %205, 0
  %207 = or i1 %found.conflict3381, %206
  %bound03384 = icmp ult ptr %scevgep3375, %scevgep3378
  %bound13385 = icmp ult ptr %scevgep3377, %scevgep3376
  %found.conflict3386 = and i1 %bound03384, %bound13385
  %208 = or i32 %30, %24
  %209 = icmp slt i32 %208, 0
  %210 = or i1 %found.conflict3386, %209
  %conflict.rdx3389 = or i1 %207, %210
  %n.vec3395 = and i64 %204, -2
  %ind.end3396 = or i64 %204, 1
  %cmp.n3409 = icmp eq i64 %204, %n.vec3395
  br label %211

211:                                              ; preds = %.lr.ph2239, %._crit_edge2233
  %indvars.iv2449 = phi i64 [ 1, %.lr.ph2239 ], [ %indvars.iv.next2450, %._crit_edge2233 ]
  %212 = phi <2 x float> [ %176, %.lr.ph2239 ], [ %239, %._crit_edge2233 ]
  br i1 %.not18642229, label %._crit_edge2233, label %.lr.ph2232

.lr.ph2232:                                       ; preds = %211
  %213 = mul nsw i64 %indvars.iv2449, %173
  %214 = mul nsw i64 %indvars.iv2449, %174
  %invariant.gep2717 = getelementptr %struct.complex, ptr %32, i64 %213
  %invariant.gep2719 = getelementptr %struct.complex, ptr %26, i64 %214
  %brmerge = select i1 %min.iters.check3392, i1 true, i1 %conflict.rdx3389
  br i1 %brmerge, label %scalar.ph3391.preheader, label %vector.body3398

vector.body3398:                                  ; preds = %.lr.ph2232, %vector.body3398
  %index3399 = phi i64 [ %index.next3408, %vector.body3398 ], [ 0, %.lr.ph2232 ]
  %offset.idx3400 = or disjoint i64 %index3399, 1
  %215 = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %offset.idx3400
  %wide.vec3401 = load <4 x float>, ptr %215, align 4, !tbaa !9
  %216 = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %offset.idx3400
  %wide.vec3404 = load <4 x float>, ptr %216, align 4, !tbaa !9
  %217 = fadd <4 x float> %wide.vec3401, %wide.vec3404
  %218 = fadd <4 x float> %wide.vec3401, %wide.vec3404
  %interleaved.vec3407 = shufflevector <4 x float> %217, <4 x float> %218, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3407, ptr %215, align 4, !tbaa !9
  %index.next3408 = add nuw i64 %index3399, 2
  %219 = icmp eq i64 %index.next3408, %n.vec3395
  br i1 %219, label %middle.block3390, label %vector.body3398, !llvm.loop !19

middle.block3390:                                 ; preds = %vector.body3398
  %220 = shufflevector <4 x float> %217, <4 x float> %218, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3409, label %._crit_edge2233, label %scalar.ph3391.preheader

scalar.ph3391.preheader:                          ; preds = %.lr.ph2232, %middle.block3390
  %indvars.iv2444.ph = phi i64 [ 1, %.lr.ph2232 ], [ %ind.end3396, %middle.block3390 ]
  %221 = sub nsw i64 %wide.trip.count2447, %indvars.iv2444.ph
  %xtraiter4260 = and i64 %221, 3
  %lcmp.mod4261.not = icmp eq i64 %xtraiter4260, 0
  br i1 %lcmp.mod4261.not, label %scalar.ph3391.prol.loopexit, label %scalar.ph3391.prol

scalar.ph3391.prol:                               ; preds = %scalar.ph3391.preheader, %scalar.ph3391.prol
  %indvars.iv2444.prol = phi i64 [ %indvars.iv.next2445.prol, %scalar.ph3391.prol ], [ %indvars.iv2444.ph, %scalar.ph3391.preheader ]
  %prol.iter4262 = phi i64 [ %prol.iter4262.next, %scalar.ph3391.prol ], [ 0, %scalar.ph3391.preheader ]
  %gep2718.prol = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %indvars.iv2444.prol
  %gep2720.prol = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %indvars.iv2444.prol
  %222 = load <2 x float>, ptr %gep2718.prol, align 4, !tbaa !9
  %223 = load <2 x float>, ptr %gep2720.prol, align 4, !tbaa !9
  %224 = fadd <2 x float> %222, %223
  store <2 x float> %224, ptr %gep2718.prol, align 4, !tbaa !9
  %indvars.iv.next2445.prol = add nuw nsw i64 %indvars.iv2444.prol, 1
  %prol.iter4262.next = add i64 %prol.iter4262, 1
  %prol.iter4262.cmp.not = icmp eq i64 %prol.iter4262.next, %xtraiter4260
  br i1 %prol.iter4262.cmp.not, label %scalar.ph3391.prol.loopexit, label %scalar.ph3391.prol, !llvm.loop !20

scalar.ph3391.prol.loopexit:                      ; preds = %scalar.ph3391.prol, %scalar.ph3391.preheader
  %.lcssa4207.unr = phi <2 x float> [ poison, %scalar.ph3391.preheader ], [ %224, %scalar.ph3391.prol ]
  %indvars.iv2444.unr = phi i64 [ %indvars.iv2444.ph, %scalar.ph3391.preheader ], [ %indvars.iv.next2445.prol, %scalar.ph3391.prol ]
  %225 = sub nsw i64 %indvars.iv2444.ph, %wide.trip.count2447
  %226 = icmp ugt i64 %225, -4
  br i1 %226, label %._crit_edge2233, label %scalar.ph3391

scalar.ph3391:                                    ; preds = %scalar.ph3391.prol.loopexit, %scalar.ph3391
  %indvars.iv2444 = phi i64 [ %indvars.iv.next2445.3, %scalar.ph3391 ], [ %indvars.iv2444.unr, %scalar.ph3391.prol.loopexit ]
  %gep2718 = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %indvars.iv2444
  %gep2720 = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %indvars.iv2444
  %227 = load <2 x float>, ptr %gep2718, align 4, !tbaa !9
  %228 = load <2 x float>, ptr %gep2720, align 4, !tbaa !9
  %229 = fadd <2 x float> %227, %228
  store <2 x float> %229, ptr %gep2718, align 4, !tbaa !9
  %indvars.iv.next2445 = add nuw nsw i64 %indvars.iv2444, 1
  %gep2718.1 = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %indvars.iv.next2445
  %gep2720.1 = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %indvars.iv.next2445
  %230 = load <2 x float>, ptr %gep2718.1, align 4, !tbaa !9
  %231 = load <2 x float>, ptr %gep2720.1, align 4, !tbaa !9
  %232 = fadd <2 x float> %230, %231
  store <2 x float> %232, ptr %gep2718.1, align 4, !tbaa !9
  %indvars.iv.next2445.1 = add nuw nsw i64 %indvars.iv2444, 2
  %gep2718.2 = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %indvars.iv.next2445.1
  %gep2720.2 = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %indvars.iv.next2445.1
  %233 = load <2 x float>, ptr %gep2718.2, align 4, !tbaa !9
  %234 = load <2 x float>, ptr %gep2720.2, align 4, !tbaa !9
  %235 = fadd <2 x float> %233, %234
  store <2 x float> %235, ptr %gep2718.2, align 4, !tbaa !9
  %indvars.iv.next2445.2 = add nuw nsw i64 %indvars.iv2444, 3
  %gep2718.3 = getelementptr %struct.complex, ptr %invariant.gep2717, i64 %indvars.iv.next2445.2
  %gep2720.3 = getelementptr %struct.complex, ptr %invariant.gep2719, i64 %indvars.iv.next2445.2
  %236 = load <2 x float>, ptr %gep2718.3, align 4, !tbaa !9
  %237 = load <2 x float>, ptr %gep2720.3, align 4, !tbaa !9
  %238 = fadd <2 x float> %236, %237
  store <2 x float> %238, ptr %gep2718.3, align 4, !tbaa !9
  %indvars.iv.next2445.3 = add nuw nsw i64 %indvars.iv2444, 4
  %exitcond2448.not.3 = icmp eq i64 %indvars.iv.next2445.3, %wide.trip.count2447
  br i1 %exitcond2448.not.3, label %._crit_edge2233, label %scalar.ph3391, !llvm.loop !21

._crit_edge2233:                                  ; preds = %scalar.ph3391.prol.loopexit, %scalar.ph3391, %middle.block3390, %211
  %239 = phi <2 x float> [ %212, %211 ], [ %220, %middle.block3390 ], [ %.lcssa4207.unr, %scalar.ph3391.prol.loopexit ], [ %238, %scalar.ph3391 ]
  %indvars.iv.next2450 = add nuw nsw i64 %indvars.iv2449, 1
  %exitcond2453.not = icmp eq i64 %indvars.iv.next2450, %wide.trip.count2452
  br i1 %exitcond2453.not, label %._crit_edge2240.loopexit, label %211, !llvm.loop !22

._crit_edge2240.loopexit:                         ; preds = %._crit_edge2233
  store <2 x float> %239, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2240

._crit_edge2240:                                  ; preds = %._crit_edge2240.loopexit, %._crit_edge2228
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %240 = load i32, ptr %5, align 4, !tbaa !5
  %.not18602248 = icmp slt i32 %240, 1
  br i1 %.not18602248, label %._crit_edge2252, label %.lr.ph2251

.lr.ph2251:                                       ; preds = %._crit_edge2240
  %241 = load i32, ptr %6, align 4, !tbaa !5
  %.not18632241 = icmp slt i32 %241, 1
  %242 = add i32 %241, 1
  %243 = sext i32 %24 to i64
  %244 = sext i32 %30 to i64
  %245 = add nuw i32 %240, 1
  %wide.trip.count2462 = zext i32 %245 to i64
  %wide.trip.count2457 = zext i32 %242 to i64
  %246 = shl nsw i64 %243, 3
  %247 = shl nsw i64 %25, 3
  %248 = getelementptr i8, ptr %12, i64 %246
  %249 = getelementptr i8, ptr %248, i64 %247
  %scevgep3411 = getelementptr i8, ptr %249, i64 8
  %250 = shl nuw nsw i64 %wide.trip.count2462, 3
  %251 = add nsw i64 %250, -8
  %252 = mul i64 %251, %243
  %253 = shl nuw nsw i64 %wide.trip.count2457, 3
  %254 = getelementptr i8, ptr %12, i64 %252
  %255 = getelementptr i8, ptr %254, i64 %247
  %256 = getelementptr i8, ptr %255, i64 %253
  %scevgep3412 = getelementptr i8, ptr %256, i64 -4
  %257 = shl nsw i64 %244, 3
  %258 = shl nsw i64 %31, 3
  %259 = getelementptr i8, ptr %16, i64 %257
  %260 = getelementptr i8, ptr %259, i64 %258
  %scevgep3413 = getelementptr i8, ptr %260, i64 8
  %261 = mul i64 %251, %244
  %262 = getelementptr i8, ptr %16, i64 %261
  %263 = getelementptr i8, ptr %262, i64 %258
  %264 = getelementptr i8, ptr %263, i64 %253
  %scevgep3414 = getelementptr i8, ptr %264, i64 -4
  %265 = getelementptr i8, ptr %12, i64 %246
  %266 = getelementptr i8, ptr %265, i64 %247
  %scevgep3415 = getelementptr i8, ptr %266, i64 12
  %267 = getelementptr i8, ptr %12, i64 %252
  %268 = getelementptr i8, ptr %267, i64 %247
  %scevgep3416 = getelementptr i8, ptr %268, i64 %253
  %269 = getelementptr i8, ptr %16, i64 %257
  %270 = getelementptr i8, ptr %269, i64 %258
  %scevgep3417 = getelementptr i8, ptr %270, i64 12
  %271 = getelementptr i8, ptr %16, i64 %261
  %272 = getelementptr i8, ptr %271, i64 %258
  %scevgep3418 = getelementptr i8, ptr %272, i64 %253
  %273 = add nsw i64 %wide.trip.count2457, -1
  %min.iters.check3432 = icmp ult i32 %242, 7
  %bound03419 = icmp ult ptr %scevgep3411, %scevgep3414
  %bound13420 = icmp ult ptr %scevgep3413, %scevgep3412
  %found.conflict3421 = and i1 %bound03419, %bound13420
  %274 = or i32 %24, %30
  %275 = icmp slt i32 %274, 0
  %276 = or i1 %found.conflict3421, %275
  %bound03424 = icmp ult ptr %scevgep3415, %scevgep3418
  %bound13425 = icmp ult ptr %scevgep3417, %scevgep3416
  %found.conflict3426 = and i1 %bound03424, %bound13425
  %277 = or i32 %24, %30
  %278 = icmp slt i32 %277, 0
  %279 = or i1 %found.conflict3426, %278
  %conflict.rdx3429 = or i1 %276, %279
  %n.vec3435 = and i64 %273, -2
  %ind.end3436 = or i64 %273, 1
  %cmp.n3449 = icmp eq i64 %273, %n.vec3435
  br label %280

280:                                              ; preds = %.lr.ph2251, %._crit_edge2245
  %indvars.iv2459 = phi i64 [ 1, %.lr.ph2251 ], [ %indvars.iv.next2460, %._crit_edge2245 ]
  br i1 %.not18632241, label %._crit_edge2245, label %.lr.ph2244

.lr.ph2244:                                       ; preds = %280
  %281 = mul nsw i64 %indvars.iv2459, %243
  %282 = mul nsw i64 %indvars.iv2459, %244
  %invariant.gep2727 = getelementptr %struct.complex, ptr %26, i64 %281
  %invariant.gep2729 = getelementptr %struct.complex, ptr %32, i64 %282
  %brmerge4356 = select i1 %min.iters.check3432, i1 true, i1 %conflict.rdx3429
  br i1 %brmerge4356, label %scalar.ph3431.preheader, label %vector.body3438

vector.body3438:                                  ; preds = %.lr.ph2244, %vector.body3438
  %index3439 = phi i64 [ %index.next3448, %vector.body3438 ], [ 0, %.lr.ph2244 ]
  %offset.idx3440 = or disjoint i64 %index3439, 1
  %283 = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %offset.idx3440
  %wide.vec3441 = load <4 x float>, ptr %283, align 4, !tbaa !9
  %284 = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %offset.idx3440
  %wide.vec3444 = load <4 x float>, ptr %284, align 4, !tbaa !9
  %interleaved.vec3447 = fsub <4 x float> %wide.vec3441, %wide.vec3444
  store <4 x float> %interleaved.vec3447, ptr %283, align 4, !tbaa !9
  %index.next3448 = add nuw i64 %index3439, 2
  %285 = icmp eq i64 %index.next3448, %n.vec3435
  br i1 %285, label %middle.block3430, label %vector.body3438, !llvm.loop !23

middle.block3430:                                 ; preds = %vector.body3438
  br i1 %cmp.n3449, label %._crit_edge2245, label %scalar.ph3431.preheader

scalar.ph3431.preheader:                          ; preds = %.lr.ph2244, %middle.block3430
  %indvars.iv2454.ph = phi i64 [ 1, %.lr.ph2244 ], [ %ind.end3436, %middle.block3430 ]
  %286 = sub nsw i64 %wide.trip.count2457, %indvars.iv2454.ph
  %xtraiter4263 = and i64 %286, 3
  %lcmp.mod4264.not = icmp eq i64 %xtraiter4263, 0
  br i1 %lcmp.mod4264.not, label %scalar.ph3431.prol.loopexit, label %scalar.ph3431.prol

scalar.ph3431.prol:                               ; preds = %scalar.ph3431.preheader, %scalar.ph3431.prol
  %indvars.iv2454.prol = phi i64 [ %indvars.iv.next2455.prol, %scalar.ph3431.prol ], [ %indvars.iv2454.ph, %scalar.ph3431.preheader ]
  %prol.iter4265 = phi i64 [ %prol.iter4265.next, %scalar.ph3431.prol ], [ 0, %scalar.ph3431.preheader ]
  %gep2728.prol = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %indvars.iv2454.prol
  %gep2730.prol = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %indvars.iv2454.prol
  %287 = load <2 x float>, ptr %gep2728.prol, align 4, !tbaa !9
  %288 = load <2 x float>, ptr %gep2730.prol, align 4, !tbaa !9
  %289 = fsub <2 x float> %287, %288
  store <2 x float> %289, ptr %gep2728.prol, align 4, !tbaa !9
  %indvars.iv.next2455.prol = add nuw nsw i64 %indvars.iv2454.prol, 1
  %prol.iter4265.next = add i64 %prol.iter4265, 1
  %prol.iter4265.cmp.not = icmp eq i64 %prol.iter4265.next, %xtraiter4263
  br i1 %prol.iter4265.cmp.not, label %scalar.ph3431.prol.loopexit, label %scalar.ph3431.prol, !llvm.loop !24

scalar.ph3431.prol.loopexit:                      ; preds = %scalar.ph3431.prol, %scalar.ph3431.preheader
  %indvars.iv2454.unr = phi i64 [ %indvars.iv2454.ph, %scalar.ph3431.preheader ], [ %indvars.iv.next2455.prol, %scalar.ph3431.prol ]
  %290 = sub nsw i64 %indvars.iv2454.ph, %wide.trip.count2457
  %291 = icmp ugt i64 %290, -4
  br i1 %291, label %._crit_edge2245, label %scalar.ph3431

scalar.ph3431:                                    ; preds = %scalar.ph3431.prol.loopexit, %scalar.ph3431
  %indvars.iv2454 = phi i64 [ %indvars.iv.next2455.3, %scalar.ph3431 ], [ %indvars.iv2454.unr, %scalar.ph3431.prol.loopexit ]
  %gep2728 = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %indvars.iv2454
  %gep2730 = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %indvars.iv2454
  %292 = load <2 x float>, ptr %gep2728, align 4, !tbaa !9
  %293 = load <2 x float>, ptr %gep2730, align 4, !tbaa !9
  %294 = fsub <2 x float> %292, %293
  store <2 x float> %294, ptr %gep2728, align 4, !tbaa !9
  %indvars.iv.next2455 = add nuw nsw i64 %indvars.iv2454, 1
  %gep2728.1 = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %indvars.iv.next2455
  %gep2730.1 = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %indvars.iv.next2455
  %295 = load <2 x float>, ptr %gep2728.1, align 4, !tbaa !9
  %296 = load <2 x float>, ptr %gep2730.1, align 4, !tbaa !9
  %297 = fsub <2 x float> %295, %296
  store <2 x float> %297, ptr %gep2728.1, align 4, !tbaa !9
  %indvars.iv.next2455.1 = add nuw nsw i64 %indvars.iv2454, 2
  %gep2728.2 = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %indvars.iv.next2455.1
  %gep2730.2 = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %indvars.iv.next2455.1
  %298 = load <2 x float>, ptr %gep2728.2, align 4, !tbaa !9
  %299 = load <2 x float>, ptr %gep2730.2, align 4, !tbaa !9
  %300 = fsub <2 x float> %298, %299
  store <2 x float> %300, ptr %gep2728.2, align 4, !tbaa !9
  %indvars.iv.next2455.2 = add nuw nsw i64 %indvars.iv2454, 3
  %gep2728.3 = getelementptr %struct.complex, ptr %invariant.gep2727, i64 %indvars.iv.next2455.2
  %gep2730.3 = getelementptr %struct.complex, ptr %invariant.gep2729, i64 %indvars.iv.next2455.2
  %301 = load <2 x float>, ptr %gep2728.3, align 4, !tbaa !9
  %302 = load <2 x float>, ptr %gep2730.3, align 4, !tbaa !9
  %303 = fsub <2 x float> %301, %302
  store <2 x float> %303, ptr %gep2728.3, align 4, !tbaa !9
  %indvars.iv.next2455.3 = add nuw nsw i64 %indvars.iv2454, 4
  %exitcond2458.not.3 = icmp eq i64 %indvars.iv.next2455.3, %wide.trip.count2457
  br i1 %exitcond2458.not.3, label %._crit_edge2245, label %scalar.ph3431, !llvm.loop !25

._crit_edge2245:                                  ; preds = %scalar.ph3431.prol.loopexit, %scalar.ph3431, %middle.block3430, %280
  %indvars.iv.next2460 = add nuw nsw i64 %indvars.iv2459, 1
  %exitcond2463.not = icmp eq i64 %indvars.iv.next2460, %wide.trip.count2462
  br i1 %exitcond2463.not, label %._crit_edge2252, label %280, !llvm.loop !26

._crit_edge2252:                                  ; preds = %._crit_edge2245, %._crit_edge2240
  %304 = load i32, ptr %4, align 4, !tbaa !5
  %305 = load i32, ptr %7, align 4, !tbaa !5
  %306 = sub nsw i32 %304, %305
  store i32 %306, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  %307 = load i32, ptr %6, align 4, !tbaa !5
  %308 = load i32, ptr %7, align 4, !tbaa !5
  %309 = sub nsw i32 %307, %308
  store i32 %309, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %310 = add nsw i32 %163, %.1868
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.complex, ptr %23, i64 %311
  %313 = add nsw i32 %.1868, %27
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds %struct.complex, ptr %29, i64 %314
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %312, ptr noundef nonnull %9, ptr noundef %169, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %315, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %156, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %316 = load i32, ptr %5, align 4, !tbaa !5
  %.not18612260 = icmp slt i32 %316, 1
  br i1 %.not18612260, label %.thread1900, label %.lr.ph2263

.lr.ph2263:                                       ; preds = %._crit_edge2252
  %317 = load i32, ptr %7, align 4, !tbaa !5
  %.not18622253 = icmp slt i32 %317, 1
  %318 = add i32 %317, 1
  %319 = sext i32 %30 to i64
  %320 = add nuw i32 %316, 1
  %wide.trip.count2472 = zext i32 %320 to i64
  %wide.trip.count2467 = zext i32 %318 to i64
  %321 = add nsw i64 %wide.trip.count2467, -2
  %322 = add i32 %27, 1
  %323 = sub i32 %322, %317
  %324 = shl nsw i64 %28, 3
  %scevgep3453 = getelementptr i8, ptr %14, i64 %324
  %325 = or disjoint i64 %324, 4
  %scevgep3458 = getelementptr i8, ptr %14, i64 %325
  %326 = shl nsw i64 %319, 3
  %327 = shl nsw i64 %31, 3
  %328 = getelementptr i8, ptr %16, i64 %326
  %329 = getelementptr i8, ptr %328, i64 %327
  %scevgep3464 = getelementptr i8, ptr %329, i64 8
  %330 = shl nuw nsw i64 %wide.trip.count2472, 3
  %331 = add nsw i64 %330, -8
  %332 = mul i64 %331, %319
  %333 = shl nuw nsw i64 %wide.trip.count2467, 3
  %334 = getelementptr i8, ptr %16, i64 %332
  %335 = getelementptr i8, ptr %334, i64 %327
  %336 = getelementptr i8, ptr %335, i64 %333
  %scevgep3465 = getelementptr i8, ptr %336, i64 -4
  %337 = shl nsw i64 %28, 3
  %scevgep3466 = getelementptr i8, ptr %14, i64 %337
  %338 = add i32 %27, 1
  %339 = sub i32 %338, %317
  %340 = add nsw i64 %337, %333
  %341 = getelementptr i8, ptr %14, i64 %340
  %scevgep3468 = getelementptr i8, ptr %341, i64 -12
  %342 = or disjoint i64 %337, 4
  %scevgep3470 = getelementptr i8, ptr %14, i64 %342
  %343 = getelementptr i8, ptr %14, i64 %340
  %scevgep3472 = getelementptr i8, ptr %343, i64 -8
  %344 = getelementptr i8, ptr %16, i64 %326
  %345 = getelementptr i8, ptr %344, i64 %327
  %scevgep3474 = getelementptr i8, ptr %345, i64 12
  %346 = getelementptr i8, ptr %16, i64 %332
  %347 = getelementptr i8, ptr %346, i64 %327
  %scevgep3475 = getelementptr i8, ptr %347, i64 %333
  %348 = add nsw i64 %wide.trip.count2467, -1
  %min.iters.check3487 = icmp ult i32 %318, 21
  %349 = trunc i64 %321 to i32
  %350 = icmp ugt i64 %321, 4294967295
  %mul.result3456 = shl nsw i64 %321, 3
  %mul.result3461 = shl nsw i64 %321, 3
  %stride.check3483 = icmp slt i32 %30, 0
  %n.vec3490 = and i64 %348, -4
  %ind.end3491 = or disjoint i64 %n.vec3490, 1
  %cmp.n3505 = icmp eq i64 %348, %n.vec3490
  %351 = and i64 %wide.trip.count2467, 1
  %lcmp.mod4267.not.not = icmp eq i64 %351, 0
  %352 = add nsw i64 %wide.trip.count2467, -1
  br label %353

353:                                              ; preds = %.lr.ph2263, %._crit_edge2257
  %indvar3451 = phi i32 [ 0, %.lr.ph2263 ], [ %indvar.next3452, %._crit_edge2257 ]
  %indvars.iv2469 = phi i64 [ 1, %.lr.ph2263 ], [ %indvars.iv.next2470, %._crit_edge2257 ]
  %354 = mul i32 %27, %indvar3451
  %355 = add i32 %339, %354
  %356 = mul i32 %27, %indvar3451
  %357 = add i32 %323, %356
  br i1 %.not18622253, label %._crit_edge2257, label %.lr.ph2256

.lr.ph2256:                                       ; preds = %353
  %358 = load i32, ptr %4, align 4, !tbaa !5
  %359 = trunc i64 %indvars.iv2469 to i32
  %360 = mul i32 %27, %359
  %361 = sub i32 %360, %317
  %362 = mul nsw i64 %indvars.iv2469, %319
  %invariant.gep2731 = getelementptr %struct.complex, ptr %32, i64 %362
  br i1 %min.iters.check3487, label %scalar.ph3486.preheader, label %vector.scevcheck3450

vector.scevcheck3450:                             ; preds = %.lr.ph2256
  %363 = add i32 %358, %357
  %364 = add i32 %363, %349
  %365 = icmp slt i32 %364, %363
  %366 = or i1 %365, %350
  %367 = sext i32 %363 to i64
  %368 = shl nsw i64 %367, 3
  %scevgep3454 = getelementptr i8, ptr %scevgep3453, i64 %368
  %369 = getelementptr i8, ptr %scevgep3454, i64 %mul.result3456
  %370 = icmp ult ptr %369, %scevgep3454
  %scevgep3459 = getelementptr i8, ptr %scevgep3458, i64 %368
  %371 = getelementptr i8, ptr %scevgep3459, i64 %mul.result3461
  %372 = icmp ult ptr %371, %scevgep3459
  %373 = or i1 %370, %366
  %374 = or i1 %372, %373
  br i1 %374, label %scalar.ph3486.preheader, label %vector.memcheck3463

vector.memcheck3463:                              ; preds = %vector.scevcheck3450
  %375 = add i32 %358, %355
  %376 = sext i32 %375 to i64
  %377 = shl nsw i64 %376, 3
  %scevgep3467 = getelementptr i8, ptr %scevgep3466, i64 %377
  %scevgep3469 = getelementptr i8, ptr %scevgep3468, i64 %377
  %scevgep3471 = getelementptr i8, ptr %scevgep3470, i64 %377
  %scevgep3473 = getelementptr i8, ptr %scevgep3472, i64 %377
  %bound03476 = icmp ult ptr %scevgep3464, %scevgep3469
  %bound13477 = icmp ult ptr %scevgep3467, %scevgep3465
  %found.conflict3478 = and i1 %bound03476, %bound13477
  %bound03480 = icmp ult ptr %scevgep3471, %scevgep3475
  %bound13481 = icmp ult ptr %scevgep3474, %scevgep3473
  %found.conflict3482 = and i1 %bound03480, %bound13481
  %378 = or i1 %found.conflict3482, %stride.check3483
  %conflict.rdx3484 = or i1 %found.conflict3478, %378
  br i1 %conflict.rdx3484, label %scalar.ph3486.preheader, label %vector.body3493

vector.body3493:                                  ; preds = %vector.memcheck3463, %vector.body3493
  %index3494 = phi i64 [ %index.next3504, %vector.body3493 ], [ 0, %vector.memcheck3463 ]
  %offset.idx3495 = or disjoint i64 %index3494, 1
  %379 = trunc i64 %index3494 to i32
  %380 = or disjoint i32 %379, 1
  %381 = add i32 %361, %380
  %382 = add i32 %381, %358
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %29, i64 %383
  %wide.vec3497 = load <8 x float>, ptr %384, align 4, !tbaa !9
  %385 = getelementptr %struct.complex, ptr %invariant.gep2731, i64 %offset.idx3495
  %wide.vec3500 = load <8 x float>, ptr %385, align 4, !tbaa !9
  %interleaved.vec3503 = fsub <8 x float> %wide.vec3497, %wide.vec3500
  store <8 x float> %interleaved.vec3503, ptr %384, align 4, !tbaa !9
  %index.next3504 = add nuw i64 %index3494, 4
  %386 = icmp eq i64 %index.next3504, %n.vec3490
  br i1 %386, label %middle.block3485, label %vector.body3493, !llvm.loop !27

middle.block3485:                                 ; preds = %vector.body3493
  br i1 %cmp.n3505, label %._crit_edge2257, label %scalar.ph3486.preheader

scalar.ph3486.preheader:                          ; preds = %middle.block3485, %vector.memcheck3463, %vector.scevcheck3450, %.lr.ph2256
  %indvars.iv2464.ph = phi i64 [ 1, %vector.memcheck3463 ], [ 1, %vector.scevcheck3450 ], [ 1, %.lr.ph2256 ], [ %ind.end3491, %middle.block3485 ]
  br i1 %lcmp.mod4267.not.not, label %scalar.ph3486.prol, label %scalar.ph3486.prol.loopexit

scalar.ph3486.prol:                               ; preds = %scalar.ph3486.preheader
  %387 = trunc nuw nsw i64 %indvars.iv2464.ph to i32
  %388 = add i32 %361, %387
  %389 = add i32 %388, %358
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %struct.complex, ptr %29, i64 %390
  %gep2732.prol = getelementptr %struct.complex, ptr %invariant.gep2731, i64 %indvars.iv2464.ph
  %392 = load <2 x float>, ptr %391, align 4, !tbaa !9
  %393 = load <2 x float>, ptr %gep2732.prol, align 4, !tbaa !9
  %394 = fsub <2 x float> %392, %393
  store <2 x float> %394, ptr %391, align 4, !tbaa !9
  %indvars.iv.next2465.prol = add nuw nsw i64 %indvars.iv2464.ph, 1
  br label %scalar.ph3486.prol.loopexit

scalar.ph3486.prol.loopexit:                      ; preds = %scalar.ph3486.prol, %scalar.ph3486.preheader
  %indvars.iv2464.unr = phi i64 [ %indvars.iv2464.ph, %scalar.ph3486.preheader ], [ %indvars.iv.next2465.prol, %scalar.ph3486.prol ]
  %395 = icmp eq i64 %indvars.iv2464.ph, %352
  br i1 %395, label %._crit_edge2257, label %scalar.ph3486

scalar.ph3486:                                    ; preds = %scalar.ph3486.prol.loopexit, %scalar.ph3486
  %indvars.iv2464 = phi i64 [ %indvars.iv.next2465.1, %scalar.ph3486 ], [ %indvars.iv2464.unr, %scalar.ph3486.prol.loopexit ]
  %396 = trunc nuw nsw i64 %indvars.iv2464 to i32
  %397 = add i32 %361, %396
  %398 = add i32 %397, %358
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.complex, ptr %29, i64 %399
  %gep2732 = getelementptr %struct.complex, ptr %invariant.gep2731, i64 %indvars.iv2464
  %401 = load <2 x float>, ptr %400, align 4, !tbaa !9
  %402 = load <2 x float>, ptr %gep2732, align 4, !tbaa !9
  %403 = fsub <2 x float> %401, %402
  store <2 x float> %403, ptr %400, align 4, !tbaa !9
  %indvars.iv.next2465 = add nuw nsw i64 %indvars.iv2464, 1
  %404 = trunc nuw nsw i64 %indvars.iv.next2465 to i32
  %405 = add i32 %361, %404
  %406 = add i32 %405, %358
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.complex, ptr %29, i64 %407
  %gep2732.1 = getelementptr %struct.complex, ptr %invariant.gep2731, i64 %indvars.iv.next2465
  %409 = load <2 x float>, ptr %408, align 4, !tbaa !9
  %410 = load <2 x float>, ptr %gep2732.1, align 4, !tbaa !9
  %411 = fsub <2 x float> %409, %410
  store <2 x float> %411, ptr %408, align 4, !tbaa !9
  %indvars.iv.next2465.1 = add nuw nsw i64 %indvars.iv2464, 2
  %exitcond2468.not.1 = icmp eq i64 %indvars.iv.next2465.1, %wide.trip.count2467
  br i1 %exitcond2468.not.1, label %._crit_edge2257, label %scalar.ph3486, !llvm.loop !28

._crit_edge2257:                                  ; preds = %scalar.ph3486.prol.loopexit, %scalar.ph3486, %middle.block3485, %353
  %indvars.iv.next2470 = add nuw nsw i64 %indvars.iv2469, 1
  %exitcond2473.not = icmp eq i64 %indvars.iv.next2470, %wide.trip.count2472
  %indvar.next3452 = add i32 %indvar3451, 1
  br i1 %exitcond2473.not, label %.thread1900, label %353, !llvm.loop !29

412:                                              ; preds = %56
  %or.cond7 = and i1 %54, %.not
  br i1 %or.cond7, label %413, label %1325

413:                                              ; preds = %412
  %414 = load i32, ptr %5, align 4, !tbaa !5
  %415 = load i32, ptr %7, align 4, !tbaa !5
  %416 = sub nsw i32 %414, %415
  %417 = add nsw i32 %416, 1
  %.not1843.not = icmp sgt i32 %415, 0
  %.1869 = select i1 %.not1843.not, i32 %417, i32 %414
  %418 = add i32 %415, 1
  %419 = load i32, ptr %6, align 4, !tbaa !5
  %.not1844.not = icmp slt i32 %415, %419
  %420 = select i1 %.not1844.not, i32 %418, i32 %419
  %.not18452182 = icmp slt i32 %415, 1
  br i1 %.not18452182, label %._crit_edge2186, label %.lr.ph2185

.lr.ph2185:                                       ; preds = %413
  %421 = load i32, ptr %4, align 4, !tbaa !5
  %.not18522177 = icmp slt i32 %421, 1
  %422 = add i32 %421, 1
  %423 = sext i32 %30 to i64
  %wide.trip.count2402 = zext i32 %418 to i64
  %wide.trip.count2397 = zext i32 %422 to i64
  %424 = shl nsw i64 %423, 3
  %425 = shl nsw i64 %31, 3
  %426 = getelementptr i8, ptr %16, i64 %424
  %427 = getelementptr i8, ptr %426, i64 %425
  %scevgep3157 = getelementptr i8, ptr %427, i64 8
  %428 = shl nuw nsw i64 %wide.trip.count2402, 3
  %429 = add nsw i64 %428, -8
  %430 = mul i64 %429, %423
  %431 = shl nuw nsw i64 %wide.trip.count2397, 3
  %432 = getelementptr i8, ptr %16, i64 %430
  %433 = getelementptr i8, ptr %432, i64 %425
  %434 = getelementptr i8, ptr %433, i64 %431
  %scevgep3158 = getelementptr i8, ptr %434, i64 -4
  %435 = shl nsw i64 %28, 3
  %436 = getelementptr i8, ptr %14, i64 %435
  %scevgep3159 = getelementptr i8, ptr %436, i64 8
  %437 = add i32 %414, 1
  %438 = sub i32 %437, %415
  %439 = getelementptr i8, ptr %14, i64 %435
  %440 = getelementptr i8, ptr %439, i64 %431
  %scevgep3163 = getelementptr i8, ptr %440, i64 -4
  %441 = getelementptr i8, ptr %16, i64 %424
  %442 = getelementptr i8, ptr %441, i64 %425
  %scevgep3165 = getelementptr i8, ptr %442, i64 12
  %443 = getelementptr i8, ptr %16, i64 %430
  %444 = getelementptr i8, ptr %443, i64 %425
  %scevgep3166 = getelementptr i8, ptr %444, i64 %431
  %445 = getelementptr i8, ptr %14, i64 %435
  %scevgep3167 = getelementptr i8, ptr %445, i64 12
  %446 = getelementptr i8, ptr %14, i64 %435
  %scevgep3169 = getelementptr i8, ptr %446, i64 %431
  %447 = add nsw i64 %wide.trip.count2397, -1
  %min.iters.check3182 = icmp ult i32 %422, 11
  %stride.check3178 = icmp slt i32 %30, 0
  %n.vec3185 = and i64 %447, -4
  %ind.end3186 = or disjoint i64 %n.vec3185, 1
  %cmp.n3200 = icmp eq i64 %447, %n.vec3185
  br label %448

448:                                              ; preds = %.lr.ph2185, %._crit_edge2181
  %indvar3160 = phi i32 [ 0, %.lr.ph2185 ], [ %indvar.next3161, %._crit_edge2181 ]
  %indvars.iv2399 = phi i64 [ 1, %.lr.ph2185 ], [ %indvars.iv.next2400, %._crit_edge2181 ]
  %449 = add i32 %438, %indvar3160
  %450 = mul i32 %27, %449
  %451 = sext i32 %450 to i64
  %452 = shl nsw i64 %451, 3
  %scevgep3162 = getelementptr i8, ptr %scevgep3159, i64 %452
  %scevgep3164 = getelementptr i8, ptr %scevgep3163, i64 %452
  %scevgep3168 = getelementptr i8, ptr %scevgep3167, i64 %452
  %scevgep3170 = getelementptr i8, ptr %scevgep3169, i64 %452
  br i1 %.not18522177, label %._crit_edge2181, label %.lr.ph2180

.lr.ph2180:                                       ; preds = %448
  %453 = mul nsw i64 %indvars.iv2399, %423
  %454 = trunc nuw nsw i64 %indvars.iv2399 to i32
  %455 = add nsw i32 %416, %454
  %456 = mul nsw i32 %455, %27
  %457 = sext i32 %456 to i64
  %invariant.gep2693 = getelementptr %struct.complex, ptr %29, i64 %457
  %invariant.gep2695 = getelementptr %struct.complex, ptr %32, i64 %453
  br i1 %min.iters.check3182, label %scalar.ph3181.preheader, label %vector.memcheck3156

vector.memcheck3156:                              ; preds = %.lr.ph2180
  %bound03171 = icmp ult ptr %scevgep3157, %scevgep3164
  %bound13172 = icmp ult ptr %scevgep3162, %scevgep3158
  %found.conflict3173 = and i1 %bound03171, %bound13172
  %bound03175 = icmp ult ptr %scevgep3165, %scevgep3170
  %bound13176 = icmp ult ptr %scevgep3168, %scevgep3166
  %found.conflict3177 = and i1 %bound03175, %bound13176
  %458 = or i1 %found.conflict3177, %stride.check3178
  %conflict.rdx3179 = or i1 %found.conflict3173, %458
  br i1 %conflict.rdx3179, label %scalar.ph3181.preheader, label %vector.body3188

vector.body3188:                                  ; preds = %vector.memcheck3156, %vector.body3188
  %index3189 = phi i64 [ %index.next3199, %vector.body3188 ], [ 0, %vector.memcheck3156 ]
  %offset.idx3190 = or disjoint i64 %index3189, 1
  %459 = or disjoint i64 %index3189, 3
  %460 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %offset.idx3190
  %461 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %459
  %wide.vec3191 = load <4 x float>, ptr %460, align 4, !tbaa !9
  %wide.vec3192 = load <4 x float>, ptr %461, align 4, !tbaa !9
  %462 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %offset.idx3190
  %463 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %459
  store <4 x float> %wide.vec3191, ptr %462, align 4, !tbaa !9
  store <4 x float> %wide.vec3192, ptr %463, align 4, !tbaa !9
  %index.next3199 = add nuw i64 %index3189, 4
  %464 = icmp eq i64 %index.next3199, %n.vec3185
  br i1 %464, label %middle.block3180, label %vector.body3188, !llvm.loop !30

middle.block3180:                                 ; preds = %vector.body3188
  br i1 %cmp.n3200, label %._crit_edge2181, label %scalar.ph3181.preheader

scalar.ph3181.preheader:                          ; preds = %middle.block3180, %vector.memcheck3156, %.lr.ph2180
  %indvars.iv2394.ph = phi i64 [ 1, %vector.memcheck3156 ], [ 1, %.lr.ph2180 ], [ %ind.end3186, %middle.block3180 ]
  %465 = sub nsw i64 %wide.trip.count2397, %indvars.iv2394.ph
  %xtraiter4245 = and i64 %465, 3
  %lcmp.mod4246.not = icmp eq i64 %xtraiter4245, 0
  br i1 %lcmp.mod4246.not, label %scalar.ph3181.prol.loopexit, label %scalar.ph3181.prol

scalar.ph3181.prol:                               ; preds = %scalar.ph3181.preheader, %scalar.ph3181.prol
  %indvars.iv2394.prol = phi i64 [ %indvars.iv.next2395.prol, %scalar.ph3181.prol ], [ %indvars.iv2394.ph, %scalar.ph3181.preheader ]
  %prol.iter4247 = phi i64 [ %prol.iter4247.next, %scalar.ph3181.prol ], [ 0, %scalar.ph3181.preheader ]
  %gep2694.prol = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %indvars.iv2394.prol
  %gep2696.prol = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %indvars.iv2394.prol
  %466 = load <2 x float>, ptr %gep2694.prol, align 4, !tbaa !9
  store <2 x float> %466, ptr %gep2696.prol, align 4, !tbaa !9
  %indvars.iv.next2395.prol = add nuw nsw i64 %indvars.iv2394.prol, 1
  %prol.iter4247.next = add i64 %prol.iter4247, 1
  %prol.iter4247.cmp.not = icmp eq i64 %prol.iter4247.next, %xtraiter4245
  br i1 %prol.iter4247.cmp.not, label %scalar.ph3181.prol.loopexit, label %scalar.ph3181.prol, !llvm.loop !31

scalar.ph3181.prol.loopexit:                      ; preds = %scalar.ph3181.prol, %scalar.ph3181.preheader
  %indvars.iv2394.unr = phi i64 [ %indvars.iv2394.ph, %scalar.ph3181.preheader ], [ %indvars.iv.next2395.prol, %scalar.ph3181.prol ]
  %467 = sub nsw i64 %indvars.iv2394.ph, %wide.trip.count2397
  %468 = icmp ugt i64 %467, -4
  br i1 %468, label %._crit_edge2181, label %scalar.ph3181

scalar.ph3181:                                    ; preds = %scalar.ph3181.prol.loopexit, %scalar.ph3181
  %indvars.iv2394 = phi i64 [ %indvars.iv.next2395.3, %scalar.ph3181 ], [ %indvars.iv2394.unr, %scalar.ph3181.prol.loopexit ]
  %gep2694 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %indvars.iv2394
  %gep2696 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %indvars.iv2394
  %469 = load <2 x float>, ptr %gep2694, align 4, !tbaa !9
  store <2 x float> %469, ptr %gep2696, align 4, !tbaa !9
  %indvars.iv.next2395 = add nuw nsw i64 %indvars.iv2394, 1
  %gep2694.1 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %indvars.iv.next2395
  %gep2696.1 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %indvars.iv.next2395
  %470 = load <2 x float>, ptr %gep2694.1, align 4, !tbaa !9
  store <2 x float> %470, ptr %gep2696.1, align 4, !tbaa !9
  %indvars.iv.next2395.1 = add nuw nsw i64 %indvars.iv2394, 2
  %gep2694.2 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %indvars.iv.next2395.1
  %gep2696.2 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %indvars.iv.next2395.1
  %471 = load <2 x float>, ptr %gep2694.2, align 4, !tbaa !9
  store <2 x float> %471, ptr %gep2696.2, align 4, !tbaa !9
  %indvars.iv.next2395.2 = add nuw nsw i64 %indvars.iv2394, 3
  %gep2694.3 = getelementptr %struct.complex, ptr %invariant.gep2693, i64 %indvars.iv.next2395.2
  %gep2696.3 = getelementptr %struct.complex, ptr %invariant.gep2695, i64 %indvars.iv.next2395.2
  %472 = load <2 x float>, ptr %gep2694.3, align 4, !tbaa !9
  store <2 x float> %472, ptr %gep2696.3, align 4, !tbaa !9
  %indvars.iv.next2395.3 = add nuw nsw i64 %indvars.iv2394, 4
  %exitcond2398.not.3 = icmp eq i64 %indvars.iv.next2395.3, %wide.trip.count2397
  br i1 %exitcond2398.not.3, label %._crit_edge2181, label %scalar.ph3181, !llvm.loop !32

._crit_edge2181:                                  ; preds = %scalar.ph3181.prol.loopexit, %scalar.ph3181, %middle.block3180, %448
  %indvars.iv.next2400 = add nuw nsw i64 %indvars.iv2399, 1
  %exitcond2403.not = icmp eq i64 %indvars.iv.next2400, %wide.trip.count2402
  %indvar.next3161 = add i32 %indvar3160, 1
  br i1 %exitcond2403.not, label %._crit_edge2186, label %448, !llvm.loop !33

._crit_edge2186:                                  ; preds = %._crit_edge2181, %413
  %473 = add nsw i32 %.1869, %21
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %23, i64 %474
  tail call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %475, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %476 = load i32, ptr %5, align 4, !tbaa !5
  %477 = load i32, ptr %7, align 4, !tbaa !5
  %478 = sub nsw i32 %476, %477
  store i32 %478, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull %17) #3
  %479 = load i32, ptr %6, align 4, !tbaa !5
  %480 = load i32, ptr %7, align 4, !tbaa !5
  %481 = sub nsw i32 %479, %480
  store i32 %481, ptr %19, align 4, !tbaa !5
  %482 = mul nsw i32 %420, %21
  %483 = sext i32 %482 to i64
  %484 = getelementptr %struct.complex, ptr %23, i64 %483
  %485 = getelementptr i8, ptr %484, i64 8
  %486 = mul nsw i32 %420, %30
  %487 = sext i32 %486 to i64
  %488 = getelementptr %struct.complex, ptr %32, i64 %487
  %489 = getelementptr i8, ptr %488, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %485, ptr noundef nonnull %9, ptr noundef nonnull @c_b2, ptr noundef %489, ptr noundef nonnull %17) #3
  %490 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %490, ptr %19, align 4, !tbaa !5
  %.not18462194 = icmp slt i32 %490, 1
  br i1 %.not18462194, label %._crit_edge2198, label %.lr.ph2197

.lr.ph2197:                                       ; preds = %._crit_edge2186
  %491 = load i32, ptr %4, align 4, !tbaa !5
  %.not18512187 = icmp slt i32 %491, 1
  %492 = add i32 %491, 1
  %493 = sext i32 %30 to i64
  %494 = sext i32 %24 to i64
  %495 = add nuw i32 %490, 1
  %wide.trip.count2412 = zext i32 %495 to i64
  %wide.trip.count2407 = zext i32 %492 to i64
  %496 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %497 = shl nsw i64 %493, 3
  %498 = shl nsw i64 %31, 3
  %499 = getelementptr i8, ptr %16, i64 %497
  %500 = getelementptr i8, ptr %499, i64 %498
  %scevgep3202 = getelementptr i8, ptr %500, i64 8
  %501 = shl nuw nsw i64 %wide.trip.count2412, 3
  %502 = add nsw i64 %501, -8
  %503 = mul i64 %502, %493
  %504 = shl nuw nsw i64 %wide.trip.count2407, 3
  %505 = getelementptr i8, ptr %16, i64 %503
  %506 = getelementptr i8, ptr %505, i64 %498
  %507 = getelementptr i8, ptr %506, i64 %504
  %scevgep3203 = getelementptr i8, ptr %507, i64 -4
  %508 = shl nsw i64 %494, 3
  %509 = shl nsw i64 %25, 3
  %510 = getelementptr i8, ptr %12, i64 %508
  %511 = getelementptr i8, ptr %510, i64 %509
  %scevgep3204 = getelementptr i8, ptr %511, i64 8
  %512 = mul i64 %502, %494
  %513 = getelementptr i8, ptr %12, i64 %512
  %514 = getelementptr i8, ptr %513, i64 %509
  %515 = getelementptr i8, ptr %514, i64 %504
  %scevgep3205 = getelementptr i8, ptr %515, i64 -4
  %516 = getelementptr i8, ptr %16, i64 %497
  %517 = getelementptr i8, ptr %516, i64 %498
  %scevgep3206 = getelementptr i8, ptr %517, i64 12
  %518 = getelementptr i8, ptr %16, i64 %503
  %519 = getelementptr i8, ptr %518, i64 %498
  %scevgep3207 = getelementptr i8, ptr %519, i64 %504
  %520 = getelementptr i8, ptr %12, i64 %508
  %521 = getelementptr i8, ptr %520, i64 %509
  %scevgep3208 = getelementptr i8, ptr %521, i64 12
  %522 = getelementptr i8, ptr %12, i64 %512
  %523 = getelementptr i8, ptr %522, i64 %509
  %scevgep3209 = getelementptr i8, ptr %523, i64 %504
  %524 = add nsw i64 %wide.trip.count2407, -1
  %min.iters.check3223 = icmp ult i32 %492, 7
  %bound03210 = icmp ult ptr %scevgep3202, %scevgep3205
  %bound13211 = icmp ult ptr %scevgep3204, %scevgep3203
  %found.conflict3212 = and i1 %bound03210, %bound13211
  %525 = or i32 %30, %24
  %526 = icmp slt i32 %525, 0
  %527 = or i1 %found.conflict3212, %526
  %bound03215 = icmp ult ptr %scevgep3206, %scevgep3209
  %bound13216 = icmp ult ptr %scevgep3208, %scevgep3207
  %found.conflict3217 = and i1 %bound03215, %bound13216
  %528 = or i32 %30, %24
  %529 = icmp slt i32 %528, 0
  %530 = or i1 %found.conflict3217, %529
  %conflict.rdx3220 = or i1 %527, %530
  %n.vec3226 = and i64 %524, -2
  %ind.end3227 = or i64 %524, 1
  %cmp.n3240 = icmp eq i64 %524, %n.vec3226
  br label %531

531:                                              ; preds = %.lr.ph2197, %._crit_edge2191
  %indvars.iv2409 = phi i64 [ 1, %.lr.ph2197 ], [ %indvars.iv.next2410, %._crit_edge2191 ]
  %532 = phi <2 x float> [ %496, %.lr.ph2197 ], [ %559, %._crit_edge2191 ]
  br i1 %.not18512187, label %._crit_edge2191, label %.lr.ph2190

.lr.ph2190:                                       ; preds = %531
  %533 = mul nsw i64 %indvars.iv2409, %493
  %534 = mul nsw i64 %indvars.iv2409, %494
  %invariant.gep2697 = getelementptr %struct.complex, ptr %32, i64 %533
  %invariant.gep2699 = getelementptr %struct.complex, ptr %26, i64 %534
  %brmerge4357 = select i1 %min.iters.check3223, i1 true, i1 %conflict.rdx3220
  br i1 %brmerge4357, label %scalar.ph3222.preheader, label %vector.body3229

vector.body3229:                                  ; preds = %.lr.ph2190, %vector.body3229
  %index3230 = phi i64 [ %index.next3239, %vector.body3229 ], [ 0, %.lr.ph2190 ]
  %offset.idx3231 = or disjoint i64 %index3230, 1
  %535 = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %offset.idx3231
  %wide.vec3232 = load <4 x float>, ptr %535, align 4, !tbaa !9
  %536 = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %offset.idx3231
  %wide.vec3235 = load <4 x float>, ptr %536, align 4, !tbaa !9
  %537 = fadd <4 x float> %wide.vec3232, %wide.vec3235
  %538 = fadd <4 x float> %wide.vec3232, %wide.vec3235
  %interleaved.vec3238 = shufflevector <4 x float> %537, <4 x float> %538, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3238, ptr %535, align 4, !tbaa !9
  %index.next3239 = add nuw i64 %index3230, 2
  %539 = icmp eq i64 %index.next3239, %n.vec3226
  br i1 %539, label %middle.block3221, label %vector.body3229, !llvm.loop !34

middle.block3221:                                 ; preds = %vector.body3229
  %540 = shufflevector <4 x float> %537, <4 x float> %538, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3240, label %._crit_edge2191, label %scalar.ph3222.preheader

scalar.ph3222.preheader:                          ; preds = %.lr.ph2190, %middle.block3221
  %indvars.iv2404.ph = phi i64 [ 1, %.lr.ph2190 ], [ %ind.end3227, %middle.block3221 ]
  %541 = sub nsw i64 %wide.trip.count2407, %indvars.iv2404.ph
  %xtraiter4248 = and i64 %541, 3
  %lcmp.mod4249.not = icmp eq i64 %xtraiter4248, 0
  br i1 %lcmp.mod4249.not, label %scalar.ph3222.prol.loopexit, label %scalar.ph3222.prol

scalar.ph3222.prol:                               ; preds = %scalar.ph3222.preheader, %scalar.ph3222.prol
  %indvars.iv2404.prol = phi i64 [ %indvars.iv.next2405.prol, %scalar.ph3222.prol ], [ %indvars.iv2404.ph, %scalar.ph3222.preheader ]
  %prol.iter4250 = phi i64 [ %prol.iter4250.next, %scalar.ph3222.prol ], [ 0, %scalar.ph3222.preheader ]
  %gep2698.prol = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %indvars.iv2404.prol
  %gep2700.prol = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %indvars.iv2404.prol
  %542 = load <2 x float>, ptr %gep2698.prol, align 4, !tbaa !9
  %543 = load <2 x float>, ptr %gep2700.prol, align 4, !tbaa !9
  %544 = fadd <2 x float> %542, %543
  store <2 x float> %544, ptr %gep2698.prol, align 4, !tbaa !9
  %indvars.iv.next2405.prol = add nuw nsw i64 %indvars.iv2404.prol, 1
  %prol.iter4250.next = add i64 %prol.iter4250, 1
  %prol.iter4250.cmp.not = icmp eq i64 %prol.iter4250.next, %xtraiter4248
  br i1 %prol.iter4250.cmp.not, label %scalar.ph3222.prol.loopexit, label %scalar.ph3222.prol, !llvm.loop !35

scalar.ph3222.prol.loopexit:                      ; preds = %scalar.ph3222.prol, %scalar.ph3222.preheader
  %.lcssa4212.unr = phi <2 x float> [ poison, %scalar.ph3222.preheader ], [ %544, %scalar.ph3222.prol ]
  %indvars.iv2404.unr = phi i64 [ %indvars.iv2404.ph, %scalar.ph3222.preheader ], [ %indvars.iv.next2405.prol, %scalar.ph3222.prol ]
  %545 = sub nsw i64 %indvars.iv2404.ph, %wide.trip.count2407
  %546 = icmp ugt i64 %545, -4
  br i1 %546, label %._crit_edge2191, label %scalar.ph3222

scalar.ph3222:                                    ; preds = %scalar.ph3222.prol.loopexit, %scalar.ph3222
  %indvars.iv2404 = phi i64 [ %indvars.iv.next2405.3, %scalar.ph3222 ], [ %indvars.iv2404.unr, %scalar.ph3222.prol.loopexit ]
  %gep2698 = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %indvars.iv2404
  %gep2700 = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %indvars.iv2404
  %547 = load <2 x float>, ptr %gep2698, align 4, !tbaa !9
  %548 = load <2 x float>, ptr %gep2700, align 4, !tbaa !9
  %549 = fadd <2 x float> %547, %548
  store <2 x float> %549, ptr %gep2698, align 4, !tbaa !9
  %indvars.iv.next2405 = add nuw nsw i64 %indvars.iv2404, 1
  %gep2698.1 = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %indvars.iv.next2405
  %gep2700.1 = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %indvars.iv.next2405
  %550 = load <2 x float>, ptr %gep2698.1, align 4, !tbaa !9
  %551 = load <2 x float>, ptr %gep2700.1, align 4, !tbaa !9
  %552 = fadd <2 x float> %550, %551
  store <2 x float> %552, ptr %gep2698.1, align 4, !tbaa !9
  %indvars.iv.next2405.1 = add nuw nsw i64 %indvars.iv2404, 2
  %gep2698.2 = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %indvars.iv.next2405.1
  %gep2700.2 = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %indvars.iv.next2405.1
  %553 = load <2 x float>, ptr %gep2698.2, align 4, !tbaa !9
  %554 = load <2 x float>, ptr %gep2700.2, align 4, !tbaa !9
  %555 = fadd <2 x float> %553, %554
  store <2 x float> %555, ptr %gep2698.2, align 4, !tbaa !9
  %indvars.iv.next2405.2 = add nuw nsw i64 %indvars.iv2404, 3
  %gep2698.3 = getelementptr %struct.complex, ptr %invariant.gep2697, i64 %indvars.iv.next2405.2
  %gep2700.3 = getelementptr %struct.complex, ptr %invariant.gep2699, i64 %indvars.iv.next2405.2
  %556 = load <2 x float>, ptr %gep2698.3, align 4, !tbaa !9
  %557 = load <2 x float>, ptr %gep2700.3, align 4, !tbaa !9
  %558 = fadd <2 x float> %556, %557
  store <2 x float> %558, ptr %gep2698.3, align 4, !tbaa !9
  %indvars.iv.next2405.3 = add nuw nsw i64 %indvars.iv2404, 4
  %exitcond2408.not.3 = icmp eq i64 %indvars.iv.next2405.3, %wide.trip.count2407
  br i1 %exitcond2408.not.3, label %._crit_edge2191, label %scalar.ph3222, !llvm.loop !36

._crit_edge2191:                                  ; preds = %scalar.ph3222.prol.loopexit, %scalar.ph3222, %middle.block3221, %531
  %559 = phi <2 x float> [ %532, %531 ], [ %540, %middle.block3221 ], [ %.lcssa4212.unr, %scalar.ph3222.prol.loopexit ], [ %558, %scalar.ph3222 ]
  %indvars.iv.next2410 = add nuw nsw i64 %indvars.iv2409, 1
  %exitcond2413.not = icmp eq i64 %indvars.iv.next2410, %wide.trip.count2412
  br i1 %exitcond2413.not, label %._crit_edge2198.loopexit, label %531, !llvm.loop !37

._crit_edge2198.loopexit:                         ; preds = %._crit_edge2191
  store <2 x float> %559, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2198

._crit_edge2198:                                  ; preds = %._crit_edge2198.loopexit, %._crit_edge2186
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %560 = load i32, ptr %6, align 4, !tbaa !5
  %.not18472206 = icmp slt i32 %560, 1
  br i1 %.not18472206, label %._crit_edge2210, label %.lr.ph2209

.lr.ph2209:                                       ; preds = %._crit_edge2198
  %561 = load i32, ptr %4, align 4, !tbaa !5
  %.not18502199 = icmp slt i32 %561, 1
  %562 = add i32 %561, 1
  %563 = sext i32 %24 to i64
  %564 = sext i32 %30 to i64
  %565 = add nuw i32 %560, 1
  %wide.trip.count2422 = zext i32 %565 to i64
  %wide.trip.count2417 = zext i32 %562 to i64
  %566 = shl nsw i64 %563, 3
  %567 = shl nsw i64 %25, 3
  %568 = getelementptr i8, ptr %12, i64 %566
  %569 = getelementptr i8, ptr %568, i64 %567
  %scevgep3242 = getelementptr i8, ptr %569, i64 8
  %570 = shl nuw nsw i64 %wide.trip.count2422, 3
  %571 = add nsw i64 %570, -8
  %572 = mul i64 %571, %563
  %573 = shl nuw nsw i64 %wide.trip.count2417, 3
  %574 = getelementptr i8, ptr %12, i64 %572
  %575 = getelementptr i8, ptr %574, i64 %567
  %576 = getelementptr i8, ptr %575, i64 %573
  %scevgep3243 = getelementptr i8, ptr %576, i64 -4
  %577 = shl nsw i64 %564, 3
  %578 = shl nsw i64 %31, 3
  %579 = getelementptr i8, ptr %16, i64 %577
  %580 = getelementptr i8, ptr %579, i64 %578
  %scevgep3244 = getelementptr i8, ptr %580, i64 8
  %581 = mul i64 %571, %564
  %582 = getelementptr i8, ptr %16, i64 %581
  %583 = getelementptr i8, ptr %582, i64 %578
  %584 = getelementptr i8, ptr %583, i64 %573
  %scevgep3245 = getelementptr i8, ptr %584, i64 -4
  %585 = getelementptr i8, ptr %12, i64 %566
  %586 = getelementptr i8, ptr %585, i64 %567
  %scevgep3246 = getelementptr i8, ptr %586, i64 12
  %587 = getelementptr i8, ptr %12, i64 %572
  %588 = getelementptr i8, ptr %587, i64 %567
  %scevgep3247 = getelementptr i8, ptr %588, i64 %573
  %589 = getelementptr i8, ptr %16, i64 %577
  %590 = getelementptr i8, ptr %589, i64 %578
  %scevgep3248 = getelementptr i8, ptr %590, i64 12
  %591 = getelementptr i8, ptr %16, i64 %581
  %592 = getelementptr i8, ptr %591, i64 %578
  %scevgep3249 = getelementptr i8, ptr %592, i64 %573
  %593 = add nsw i64 %wide.trip.count2417, -1
  %min.iters.check3263 = icmp ult i32 %562, 7
  %bound03250 = icmp ult ptr %scevgep3242, %scevgep3245
  %bound13251 = icmp ult ptr %scevgep3244, %scevgep3243
  %found.conflict3252 = and i1 %bound03250, %bound13251
  %594 = or i32 %24, %30
  %595 = icmp slt i32 %594, 0
  %596 = or i1 %found.conflict3252, %595
  %bound03255 = icmp ult ptr %scevgep3246, %scevgep3249
  %bound13256 = icmp ult ptr %scevgep3248, %scevgep3247
  %found.conflict3257 = and i1 %bound03255, %bound13256
  %597 = or i32 %24, %30
  %598 = icmp slt i32 %597, 0
  %599 = or i1 %found.conflict3257, %598
  %conflict.rdx3260 = or i1 %596, %599
  %n.vec3266 = and i64 %593, -2
  %ind.end3267 = or i64 %593, 1
  %cmp.n3280 = icmp eq i64 %593, %n.vec3266
  br label %600

600:                                              ; preds = %.lr.ph2209, %._crit_edge2203
  %indvars.iv2419 = phi i64 [ 1, %.lr.ph2209 ], [ %indvars.iv.next2420, %._crit_edge2203 ]
  br i1 %.not18502199, label %._crit_edge2203, label %.lr.ph2202

.lr.ph2202:                                       ; preds = %600
  %601 = mul nsw i64 %indvars.iv2419, %563
  %602 = mul nsw i64 %indvars.iv2419, %564
  %invariant.gep2707 = getelementptr %struct.complex, ptr %26, i64 %601
  %invariant.gep2709 = getelementptr %struct.complex, ptr %32, i64 %602
  %brmerge4358 = select i1 %min.iters.check3263, i1 true, i1 %conflict.rdx3260
  br i1 %brmerge4358, label %scalar.ph3262.preheader, label %vector.body3269

vector.body3269:                                  ; preds = %.lr.ph2202, %vector.body3269
  %index3270 = phi i64 [ %index.next3279, %vector.body3269 ], [ 0, %.lr.ph2202 ]
  %offset.idx3271 = or disjoint i64 %index3270, 1
  %603 = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %offset.idx3271
  %wide.vec3272 = load <4 x float>, ptr %603, align 4, !tbaa !9
  %604 = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %offset.idx3271
  %wide.vec3275 = load <4 x float>, ptr %604, align 4, !tbaa !9
  %interleaved.vec3278 = fsub <4 x float> %wide.vec3272, %wide.vec3275
  store <4 x float> %interleaved.vec3278, ptr %603, align 4, !tbaa !9
  %index.next3279 = add nuw i64 %index3270, 2
  %605 = icmp eq i64 %index.next3279, %n.vec3266
  br i1 %605, label %middle.block3261, label %vector.body3269, !llvm.loop !38

middle.block3261:                                 ; preds = %vector.body3269
  br i1 %cmp.n3280, label %._crit_edge2203, label %scalar.ph3262.preheader

scalar.ph3262.preheader:                          ; preds = %.lr.ph2202, %middle.block3261
  %indvars.iv2414.ph = phi i64 [ 1, %.lr.ph2202 ], [ %ind.end3267, %middle.block3261 ]
  %606 = sub nsw i64 %wide.trip.count2417, %indvars.iv2414.ph
  %xtraiter4251 = and i64 %606, 3
  %lcmp.mod4252.not = icmp eq i64 %xtraiter4251, 0
  br i1 %lcmp.mod4252.not, label %scalar.ph3262.prol.loopexit, label %scalar.ph3262.prol

scalar.ph3262.prol:                               ; preds = %scalar.ph3262.preheader, %scalar.ph3262.prol
  %indvars.iv2414.prol = phi i64 [ %indvars.iv.next2415.prol, %scalar.ph3262.prol ], [ %indvars.iv2414.ph, %scalar.ph3262.preheader ]
  %prol.iter4253 = phi i64 [ %prol.iter4253.next, %scalar.ph3262.prol ], [ 0, %scalar.ph3262.preheader ]
  %gep2708.prol = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %indvars.iv2414.prol
  %gep2710.prol = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %indvars.iv2414.prol
  %607 = load <2 x float>, ptr %gep2708.prol, align 4, !tbaa !9
  %608 = load <2 x float>, ptr %gep2710.prol, align 4, !tbaa !9
  %609 = fsub <2 x float> %607, %608
  store <2 x float> %609, ptr %gep2708.prol, align 4, !tbaa !9
  %indvars.iv.next2415.prol = add nuw nsw i64 %indvars.iv2414.prol, 1
  %prol.iter4253.next = add i64 %prol.iter4253, 1
  %prol.iter4253.cmp.not = icmp eq i64 %prol.iter4253.next, %xtraiter4251
  br i1 %prol.iter4253.cmp.not, label %scalar.ph3262.prol.loopexit, label %scalar.ph3262.prol, !llvm.loop !39

scalar.ph3262.prol.loopexit:                      ; preds = %scalar.ph3262.prol, %scalar.ph3262.preheader
  %indvars.iv2414.unr = phi i64 [ %indvars.iv2414.ph, %scalar.ph3262.preheader ], [ %indvars.iv.next2415.prol, %scalar.ph3262.prol ]
  %610 = sub nsw i64 %indvars.iv2414.ph, %wide.trip.count2417
  %611 = icmp ugt i64 %610, -4
  br i1 %611, label %._crit_edge2203, label %scalar.ph3262

scalar.ph3262:                                    ; preds = %scalar.ph3262.prol.loopexit, %scalar.ph3262
  %indvars.iv2414 = phi i64 [ %indvars.iv.next2415.3, %scalar.ph3262 ], [ %indvars.iv2414.unr, %scalar.ph3262.prol.loopexit ]
  %gep2708 = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %indvars.iv2414
  %gep2710 = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %indvars.iv2414
  %612 = load <2 x float>, ptr %gep2708, align 4, !tbaa !9
  %613 = load <2 x float>, ptr %gep2710, align 4, !tbaa !9
  %614 = fsub <2 x float> %612, %613
  store <2 x float> %614, ptr %gep2708, align 4, !tbaa !9
  %indvars.iv.next2415 = add nuw nsw i64 %indvars.iv2414, 1
  %gep2708.1 = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %indvars.iv.next2415
  %gep2710.1 = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %indvars.iv.next2415
  %615 = load <2 x float>, ptr %gep2708.1, align 4, !tbaa !9
  %616 = load <2 x float>, ptr %gep2710.1, align 4, !tbaa !9
  %617 = fsub <2 x float> %615, %616
  store <2 x float> %617, ptr %gep2708.1, align 4, !tbaa !9
  %indvars.iv.next2415.1 = add nuw nsw i64 %indvars.iv2414, 2
  %gep2708.2 = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %indvars.iv.next2415.1
  %gep2710.2 = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %indvars.iv.next2415.1
  %618 = load <2 x float>, ptr %gep2708.2, align 4, !tbaa !9
  %619 = load <2 x float>, ptr %gep2710.2, align 4, !tbaa !9
  %620 = fsub <2 x float> %618, %619
  store <2 x float> %620, ptr %gep2708.2, align 4, !tbaa !9
  %indvars.iv.next2415.2 = add nuw nsw i64 %indvars.iv2414, 3
  %gep2708.3 = getelementptr %struct.complex, ptr %invariant.gep2707, i64 %indvars.iv.next2415.2
  %gep2710.3 = getelementptr %struct.complex, ptr %invariant.gep2709, i64 %indvars.iv.next2415.2
  %621 = load <2 x float>, ptr %gep2708.3, align 4, !tbaa !9
  %622 = load <2 x float>, ptr %gep2710.3, align 4, !tbaa !9
  %623 = fsub <2 x float> %621, %622
  store <2 x float> %623, ptr %gep2708.3, align 4, !tbaa !9
  %indvars.iv.next2415.3 = add nuw nsw i64 %indvars.iv2414, 4
  %exitcond2418.not.3 = icmp eq i64 %indvars.iv.next2415.3, %wide.trip.count2417
  br i1 %exitcond2418.not.3, label %._crit_edge2203, label %scalar.ph3262, !llvm.loop !40

._crit_edge2203:                                  ; preds = %scalar.ph3262.prol.loopexit, %scalar.ph3262, %middle.block3261, %600
  %indvars.iv.next2420 = add nuw nsw i64 %indvars.iv2419, 1
  %exitcond2423.not = icmp eq i64 %indvars.iv.next2420, %wide.trip.count2422
  br i1 %exitcond2423.not, label %._crit_edge2210, label %600, !llvm.loop !41

._crit_edge2210:                                  ; preds = %._crit_edge2203, %._crit_edge2198
  %624 = load i32, ptr %5, align 4, !tbaa !5
  %625 = load i32, ptr %7, align 4, !tbaa !5
  %626 = sub nsw i32 %624, %625
  store i32 %626, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  %627 = load i32, ptr %6, align 4, !tbaa !5
  %628 = load i32, ptr %7, align 4, !tbaa !5
  %629 = sub nsw i32 %627, %628
  store i32 %629, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %630 = add nsw i32 %482, %.1869
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.complex, ptr %23, i64 %631
  %633 = mul nsw i32 %.1869, %27
  %634 = sext i32 %633 to i64
  %635 = getelementptr %struct.complex, ptr %29, i64 %634
  %636 = getelementptr i8, ptr %635, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %489, ptr noundef nonnull %17, ptr noundef %632, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %636, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %475, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %637 = load i32, ptr %7, align 4, !tbaa !5
  %.not18482218 = icmp slt i32 %637, 1
  br i1 %.not18482218, label %.thread1900, label %.lr.ph2221

.lr.ph2221:                                       ; preds = %._crit_edge2210
  %638 = load i32, ptr %4, align 4, !tbaa !5
  %.not18492211 = icmp slt i32 %638, 1
  %639 = add i32 %638, 1
  %640 = sext i32 %30 to i64
  %641 = add nuw i32 %637, 1
  %wide.trip.count2432 = zext i32 %641 to i64
  %wide.trip.count2427 = zext i32 %639 to i64
  %642 = shl nsw i64 %28, 3
  %643 = getelementptr i8, ptr %14, i64 %642
  %scevgep3282 = getelementptr i8, ptr %643, i64 8
  %644 = shl nuw nsw i64 %wide.trip.count2427, 3
  %645 = getelementptr i8, ptr %14, i64 %642
  %646 = getelementptr i8, ptr %645, i64 %644
  %scevgep3284 = getelementptr i8, ptr %646, i64 -4
  %647 = shl nsw i64 %640, 3
  %648 = shl nsw i64 %31, 3
  %649 = getelementptr i8, ptr %16, i64 %647
  %650 = getelementptr i8, ptr %649, i64 %648
  %scevgep3286 = getelementptr i8, ptr %650, i64 8
  %651 = shl nuw nsw i64 %wide.trip.count2432, 3
  %652 = add nsw i64 %651, -8
  %653 = mul i64 %652, %640
  %654 = getelementptr i8, ptr %16, i64 %653
  %655 = getelementptr i8, ptr %654, i64 %648
  %656 = getelementptr i8, ptr %655, i64 %644
  %scevgep3287 = getelementptr i8, ptr %656, i64 -4
  %657 = getelementptr i8, ptr %14, i64 %642
  %scevgep3288 = getelementptr i8, ptr %657, i64 12
  %658 = getelementptr i8, ptr %14, i64 %642
  %scevgep3290 = getelementptr i8, ptr %658, i64 %644
  %659 = getelementptr i8, ptr %16, i64 %647
  %660 = getelementptr i8, ptr %659, i64 %648
  %scevgep3292 = getelementptr i8, ptr %660, i64 12
  %661 = getelementptr i8, ptr %16, i64 %653
  %662 = getelementptr i8, ptr %661, i64 %648
  %scevgep3293 = getelementptr i8, ptr %662, i64 %644
  %663 = add nsw i64 %wide.trip.count2427, -1
  %min.iters.check3305 = icmp ult i32 %639, 7
  %stride.check3301 = icmp slt i32 %30, 0
  %n.vec3308 = and i64 %663, -2
  %ind.end3309 = or i64 %663, 1
  %cmp.n3322 = icmp eq i64 %663, %n.vec3308
  br label %664

664:                                              ; preds = %.lr.ph2221, %._crit_edge2215
  %indvars.iv2429 = phi i64 [ 1, %.lr.ph2221 ], [ %indvars.iv.next2430, %._crit_edge2215 ]
  br i1 %.not18492211, label %._crit_edge2215, label %.lr.ph2214

.lr.ph2214:                                       ; preds = %664
  %665 = load i32, ptr %5, align 4, !tbaa !5
  %666 = trunc i64 %indvars.iv2429 to i32
  %667 = sub i32 %666, %637
  %668 = add i32 %667, %665
  %669 = mul nsw i32 %668, %27
  %670 = mul nsw i64 %indvars.iv2429, %640
  %671 = sext i32 %669 to i64
  %invariant.gep2711 = getelementptr %struct.complex, ptr %29, i64 %671
  %invariant.gep2713 = getelementptr %struct.complex, ptr %32, i64 %670
  br i1 %min.iters.check3305, label %scalar.ph3304.preheader, label %vector.memcheck3281

vector.memcheck3281:                              ; preds = %.lr.ph2214
  %672 = shl nsw i64 %671, 3
  %scevgep3283 = getelementptr i8, ptr %scevgep3282, i64 %672
  %scevgep3285 = getelementptr i8, ptr %scevgep3284, i64 %672
  %scevgep3289 = getelementptr i8, ptr %scevgep3288, i64 %672
  %scevgep3291 = getelementptr i8, ptr %scevgep3290, i64 %672
  %bound03294 = icmp ult ptr %scevgep3283, %scevgep3287
  %bound13295 = icmp ult ptr %scevgep3286, %scevgep3285
  %found.conflict3296 = and i1 %bound03294, %bound13295
  %bound03298 = icmp ult ptr %scevgep3289, %scevgep3293
  %bound13299 = icmp ult ptr %scevgep3292, %scevgep3291
  %found.conflict3300 = and i1 %bound03298, %bound13299
  %673 = or i1 %found.conflict3300, %stride.check3301
  %conflict.rdx3302 = or i1 %found.conflict3296, %673
  br i1 %conflict.rdx3302, label %scalar.ph3304.preheader, label %vector.body3311

vector.body3311:                                  ; preds = %vector.memcheck3281, %vector.body3311
  %index3312 = phi i64 [ %index.next3321, %vector.body3311 ], [ 0, %vector.memcheck3281 ]
  %offset.idx3313 = or disjoint i64 %index3312, 1
  %674 = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %offset.idx3313
  %wide.vec3314 = load <4 x float>, ptr %674, align 4, !tbaa !9
  %675 = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %offset.idx3313
  %wide.vec3317 = load <4 x float>, ptr %675, align 4, !tbaa !9
  %interleaved.vec3320 = fsub <4 x float> %wide.vec3314, %wide.vec3317
  store <4 x float> %interleaved.vec3320, ptr %674, align 4, !tbaa !9
  %index.next3321 = add nuw i64 %index3312, 2
  %676 = icmp eq i64 %index.next3321, %n.vec3308
  br i1 %676, label %middle.block3303, label %vector.body3311, !llvm.loop !42

middle.block3303:                                 ; preds = %vector.body3311
  br i1 %cmp.n3322, label %._crit_edge2215, label %scalar.ph3304.preheader

scalar.ph3304.preheader:                          ; preds = %middle.block3303, %vector.memcheck3281, %.lr.ph2214
  %indvars.iv2424.ph = phi i64 [ 1, %vector.memcheck3281 ], [ 1, %.lr.ph2214 ], [ %ind.end3309, %middle.block3303 ]
  %677 = sub nsw i64 %wide.trip.count2427, %indvars.iv2424.ph
  %xtraiter4254 = and i64 %677, 3
  %lcmp.mod4255.not = icmp eq i64 %xtraiter4254, 0
  br i1 %lcmp.mod4255.not, label %scalar.ph3304.prol.loopexit, label %scalar.ph3304.prol

scalar.ph3304.prol:                               ; preds = %scalar.ph3304.preheader, %scalar.ph3304.prol
  %indvars.iv2424.prol = phi i64 [ %indvars.iv.next2425.prol, %scalar.ph3304.prol ], [ %indvars.iv2424.ph, %scalar.ph3304.preheader ]
  %prol.iter4256 = phi i64 [ %prol.iter4256.next, %scalar.ph3304.prol ], [ 0, %scalar.ph3304.preheader ]
  %gep2712.prol = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %indvars.iv2424.prol
  %gep2714.prol = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %indvars.iv2424.prol
  %678 = load <2 x float>, ptr %gep2712.prol, align 4, !tbaa !9
  %679 = load <2 x float>, ptr %gep2714.prol, align 4, !tbaa !9
  %680 = fsub <2 x float> %678, %679
  store <2 x float> %680, ptr %gep2712.prol, align 4, !tbaa !9
  %indvars.iv.next2425.prol = add nuw nsw i64 %indvars.iv2424.prol, 1
  %prol.iter4256.next = add i64 %prol.iter4256, 1
  %prol.iter4256.cmp.not = icmp eq i64 %prol.iter4256.next, %xtraiter4254
  br i1 %prol.iter4256.cmp.not, label %scalar.ph3304.prol.loopexit, label %scalar.ph3304.prol, !llvm.loop !43

scalar.ph3304.prol.loopexit:                      ; preds = %scalar.ph3304.prol, %scalar.ph3304.preheader
  %indvars.iv2424.unr = phi i64 [ %indvars.iv2424.ph, %scalar.ph3304.preheader ], [ %indvars.iv.next2425.prol, %scalar.ph3304.prol ]
  %681 = sub nsw i64 %indvars.iv2424.ph, %wide.trip.count2427
  %682 = icmp ugt i64 %681, -4
  br i1 %682, label %._crit_edge2215, label %scalar.ph3304

scalar.ph3304:                                    ; preds = %scalar.ph3304.prol.loopexit, %scalar.ph3304
  %indvars.iv2424 = phi i64 [ %indvars.iv.next2425.3, %scalar.ph3304 ], [ %indvars.iv2424.unr, %scalar.ph3304.prol.loopexit ]
  %gep2712 = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %indvars.iv2424
  %gep2714 = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %indvars.iv2424
  %683 = load <2 x float>, ptr %gep2712, align 4, !tbaa !9
  %684 = load <2 x float>, ptr %gep2714, align 4, !tbaa !9
  %685 = fsub <2 x float> %683, %684
  store <2 x float> %685, ptr %gep2712, align 4, !tbaa !9
  %indvars.iv.next2425 = add nuw nsw i64 %indvars.iv2424, 1
  %gep2712.1 = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %indvars.iv.next2425
  %gep2714.1 = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %indvars.iv.next2425
  %686 = load <2 x float>, ptr %gep2712.1, align 4, !tbaa !9
  %687 = load <2 x float>, ptr %gep2714.1, align 4, !tbaa !9
  %688 = fsub <2 x float> %686, %687
  store <2 x float> %688, ptr %gep2712.1, align 4, !tbaa !9
  %indvars.iv.next2425.1 = add nuw nsw i64 %indvars.iv2424, 2
  %gep2712.2 = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %indvars.iv.next2425.1
  %gep2714.2 = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %indvars.iv.next2425.1
  %689 = load <2 x float>, ptr %gep2712.2, align 4, !tbaa !9
  %690 = load <2 x float>, ptr %gep2714.2, align 4, !tbaa !9
  %691 = fsub <2 x float> %689, %690
  store <2 x float> %691, ptr %gep2712.2, align 4, !tbaa !9
  %indvars.iv.next2425.2 = add nuw nsw i64 %indvars.iv2424, 3
  %gep2712.3 = getelementptr %struct.complex, ptr %invariant.gep2711, i64 %indvars.iv.next2425.2
  %gep2714.3 = getelementptr %struct.complex, ptr %invariant.gep2713, i64 %indvars.iv.next2425.2
  %692 = load <2 x float>, ptr %gep2712.3, align 4, !tbaa !9
  %693 = load <2 x float>, ptr %gep2714.3, align 4, !tbaa !9
  %694 = fsub <2 x float> %692, %693
  store <2 x float> %694, ptr %gep2712.3, align 4, !tbaa !9
  %indvars.iv.next2425.3 = add nuw nsw i64 %indvars.iv2424, 4
  %exitcond2428.not.3 = icmp eq i64 %indvars.iv.next2425.3, %wide.trip.count2427
  br i1 %exitcond2428.not.3, label %._crit_edge2215, label %scalar.ph3304, !llvm.loop !44

._crit_edge2215:                                  ; preds = %scalar.ph3304.prol.loopexit, %scalar.ph3304, %middle.block3303, %664
  %indvars.iv.next2430 = add nuw nsw i64 %indvars.iv2429, 1
  %exitcond2433.not = icmp eq i64 %indvars.iv.next2430, %wide.trip.count2432
  br i1 %exitcond2433.not, label %.thread1900, label %664, !llvm.loop !45

695:                                              ; preds = %53
  %696 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #3
  %.not1782 = icmp ne i32 %696, 0
  %or.cond9 = and i1 %.not, %.not1782
  %or.cond11 = and i1 %.not1779, %or.cond9
  br i1 %or.cond11, label %697, label %1042

697:                                              ; preds = %695
  %698 = load i32, ptr %7, align 4, !tbaa !5
  %699 = add i32 %698, 1
  %700 = load i32, ptr %4, align 4, !tbaa !5
  %.not1833.not = icmp slt i32 %698, %700
  %.1870 = select i1 %.not1833.not, i32 %699, i32 %700
  %701 = load i32, ptr %6, align 4, !tbaa !5
  %702 = sub nsw i32 %701, %698
  %703 = add nsw i32 %702, 1
  %.not1834.not = icmp sgt i32 %698, 0
  %704 = select i1 %.not1834.not, i32 %703, i32 %701
  %705 = load i32, ptr %5, align 4, !tbaa !5
  %.not18352052 = icmp slt i32 %705, 1
  br i1 %.not18352052, label %._crit_edge2054, label %.preheader1915.lr.ph

.preheader1915.lr.ph:                             ; preds = %697
  %.not18422048 = icmp slt i32 %698, 1
  %706 = sext i32 %27 to i64
  %707 = add nuw i32 %705, 1
  %wide.trip.count2602 = zext i32 %707 to i64
  %wide.trip.count2597 = zext i32 %699 to i64
  %708 = add nsw i64 %wide.trip.count2597, -2
  %709 = add i32 %30, %701
  %710 = add i32 %709, 1
  %711 = sub i32 %710, %698
  %712 = shl nsw i64 %706, 3
  %713 = shl nsw i64 %28, 3
  %714 = getelementptr i8, ptr %14, i64 %712
  %715 = getelementptr i8, ptr %714, i64 %713
  %scevgep4017 = getelementptr i8, ptr %715, i64 8
  %716 = shl nuw nsw i64 %wide.trip.count2602, 3
  %717 = add nsw i64 %716, -8
  %718 = mul i64 %717, %706
  %719 = shl nuw nsw i64 %wide.trip.count2597, 3
  %720 = getelementptr i8, ptr %14, i64 %718
  %721 = getelementptr i8, ptr %720, i64 %713
  %722 = getelementptr i8, ptr %721, i64 %719
  %scevgep4018 = getelementptr i8, ptr %722, i64 -4
  %723 = shl nsw i64 %31, 3
  %scevgep4019 = getelementptr i8, ptr %16, i64 %723
  %724 = add i32 %30, %701
  %725 = add i32 %724, 1
  %726 = sub i32 %725, %698
  %727 = add nsw i64 %723, %719
  %728 = getelementptr i8, ptr %16, i64 %727
  %scevgep4021 = getelementptr i8, ptr %728, i64 -12
  %729 = or disjoint i64 %723, 4
  %scevgep4023 = getelementptr i8, ptr %16, i64 %729
  %730 = getelementptr i8, ptr %16, i64 %727
  %scevgep4025 = getelementptr i8, ptr %730, i64 -8
  %731 = getelementptr i8, ptr %14, i64 %712
  %732 = getelementptr i8, ptr %731, i64 %713
  %scevgep4027 = getelementptr i8, ptr %732, i64 12
  %733 = getelementptr i8, ptr %14, i64 %718
  %734 = getelementptr i8, ptr %733, i64 %713
  %scevgep4028 = getelementptr i8, ptr %734, i64 %719
  %735 = add nsw i64 %wide.trip.count2597, -1
  %min.iters.check4040 = icmp ult i32 %699, 13
  %736 = trunc i64 %708 to i32
  %737 = icmp ugt i64 %708, 4294967295
  %stride.check4036 = icmp slt i32 %27, 0
  %n.vec4043 = and i64 %735, -4
  %ind.end4044 = or disjoint i64 %n.vec4043, 1
  %cmp.n4059 = icmp eq i64 %735, %n.vec4043
  br label %.preheader1915

.preheader1915:                                   ; preds = %.preheader1915.lr.ph, %._crit_edge2051
  %indvar4014 = phi i32 [ 0, %.preheader1915.lr.ph ], [ %indvar.next4015, %._crit_edge2051 ]
  %indvars.iv2599 = phi i64 [ 1, %.preheader1915.lr.ph ], [ %indvars.iv.next2600, %._crit_edge2051 ]
  %738 = mul i32 %30, %indvar4014
  %739 = add i32 %726, %738
  %740 = sext i32 %739 to i64
  %741 = shl nsw i64 %740, 3
  %scevgep4020 = getelementptr i8, ptr %scevgep4019, i64 %741
  %scevgep4022 = getelementptr i8, ptr %scevgep4021, i64 %741
  %scevgep4024 = getelementptr i8, ptr %scevgep4023, i64 %741
  %scevgep4026 = getelementptr i8, ptr %scevgep4025, i64 %741
  %742 = mul i32 %30, %indvar4014
  %743 = add i32 %711, %742
  br i1 %.not18422048, label %._crit_edge2051, label %.lr.ph2050

.lr.ph2050:                                       ; preds = %.preheader1915
  %744 = trunc i64 %indvars.iv2599 to i32
  %745 = mul i32 %30, %744
  %746 = add i32 %745, %702
  %747 = mul nsw i64 %indvars.iv2599, %706
  %invariant.gep2795 = getelementptr %struct.complex, ptr %29, i64 %747
  br i1 %min.iters.check4040, label %scalar.ph4039.preheader, label %vector.scevcheck4013

vector.scevcheck4013:                             ; preds = %.lr.ph2050
  %748 = add i32 %743, %736
  %749 = icmp slt i32 %748, %743
  %750 = or i1 %749, %737
  br i1 %750, label %scalar.ph4039.preheader, label %vector.memcheck4016

vector.memcheck4016:                              ; preds = %vector.scevcheck4013
  %bound04029 = icmp ult ptr %scevgep4017, %scevgep4022
  %bound14030 = icmp ult ptr %scevgep4020, %scevgep4018
  %found.conflict4031 = and i1 %bound04029, %bound14030
  %bound04033 = icmp ult ptr %scevgep4024, %scevgep4028
  %bound14034 = icmp ult ptr %scevgep4027, %scevgep4026
  %found.conflict4035 = and i1 %bound04033, %bound14034
  %751 = or i1 %found.conflict4035, %stride.check4036
  %conflict.rdx4037 = or i1 %found.conflict4031, %751
  br i1 %conflict.rdx4037, label %scalar.ph4039.preheader, label %vector.body4046

vector.body4046:                                  ; preds = %vector.memcheck4016, %vector.body4046
  %index4047 = phi i64 [ %index.next4058, %vector.body4046 ], [ 0, %vector.memcheck4016 ]
  %offset.idx4048 = or disjoint i64 %index4047, 1
  %752 = or disjoint i64 %index4047, 3
  %753 = trunc i64 %index4047 to i32
  %754 = or disjoint i32 %753, 1
  %755 = or disjoint i32 %753, 3
  %756 = add i32 %746, %754
  %757 = add i32 %746, %755
  %758 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %offset.idx4048
  %759 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %752
  %wide.vec4050 = load <4 x float>, ptr %758, align 4, !tbaa !9
  %wide.vec4051 = load <4 x float>, ptr %759, align 4, !tbaa !9
  %760 = sext i32 %756 to i64
  %761 = sext i32 %757 to i64
  %762 = getelementptr inbounds %struct.complex, ptr %32, i64 %760
  %763 = getelementptr inbounds %struct.complex, ptr %32, i64 %761
  store <4 x float> %wide.vec4050, ptr %762, align 4, !tbaa !9
  store <4 x float> %wide.vec4051, ptr %763, align 4, !tbaa !9
  %index.next4058 = add nuw i64 %index4047, 4
  %764 = icmp eq i64 %index.next4058, %n.vec4043
  br i1 %764, label %middle.block4038, label %vector.body4046, !llvm.loop !46

middle.block4038:                                 ; preds = %vector.body4046
  br i1 %cmp.n4059, label %._crit_edge2051, label %scalar.ph4039.preheader

scalar.ph4039.preheader:                          ; preds = %middle.block4038, %vector.memcheck4016, %vector.scevcheck4013, %.lr.ph2050
  %indvars.iv2594.ph = phi i64 [ 1, %vector.memcheck4016 ], [ 1, %vector.scevcheck4013 ], [ 1, %.lr.ph2050 ], [ %ind.end4044, %middle.block4038 ]
  %765 = sub nsw i64 %wide.trip.count2597, %indvars.iv2594.ph
  %xtraiter4305 = and i64 %765, 3
  %lcmp.mod4306.not = icmp eq i64 %xtraiter4305, 0
  br i1 %lcmp.mod4306.not, label %scalar.ph4039.prol.loopexit, label %scalar.ph4039.prol

scalar.ph4039.prol:                               ; preds = %scalar.ph4039.preheader, %scalar.ph4039.prol
  %indvars.iv2594.prol = phi i64 [ %indvars.iv.next2595.prol, %scalar.ph4039.prol ], [ %indvars.iv2594.ph, %scalar.ph4039.preheader ]
  %prol.iter4307 = phi i64 [ %prol.iter4307.next, %scalar.ph4039.prol ], [ 0, %scalar.ph4039.preheader ]
  %766 = trunc nuw nsw i64 %indvars.iv2594.prol to i32
  %767 = add i32 %746, %766
  %gep2796.prol = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %indvars.iv2594.prol
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds %struct.complex, ptr %32, i64 %768
  %770 = load <2 x float>, ptr %gep2796.prol, align 4, !tbaa !9
  store <2 x float> %770, ptr %769, align 4, !tbaa !9
  %indvars.iv.next2595.prol = add nuw nsw i64 %indvars.iv2594.prol, 1
  %prol.iter4307.next = add i64 %prol.iter4307, 1
  %prol.iter4307.cmp.not = icmp eq i64 %prol.iter4307.next, %xtraiter4305
  br i1 %prol.iter4307.cmp.not, label %scalar.ph4039.prol.loopexit, label %scalar.ph4039.prol, !llvm.loop !47

scalar.ph4039.prol.loopexit:                      ; preds = %scalar.ph4039.prol, %scalar.ph4039.preheader
  %indvars.iv2594.unr = phi i64 [ %indvars.iv2594.ph, %scalar.ph4039.preheader ], [ %indvars.iv.next2595.prol, %scalar.ph4039.prol ]
  %771 = sub nsw i64 %indvars.iv2594.ph, %wide.trip.count2597
  %772 = icmp ugt i64 %771, -4
  br i1 %772, label %._crit_edge2051, label %scalar.ph4039

scalar.ph4039:                                    ; preds = %scalar.ph4039.prol.loopexit, %scalar.ph4039
  %indvars.iv2594 = phi i64 [ %indvars.iv.next2595.3, %scalar.ph4039 ], [ %indvars.iv2594.unr, %scalar.ph4039.prol.loopexit ]
  %773 = trunc nuw nsw i64 %indvars.iv2594 to i32
  %774 = add i32 %746, %773
  %gep2796 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %indvars.iv2594
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds %struct.complex, ptr %32, i64 %775
  %777 = load <2 x float>, ptr %gep2796, align 4, !tbaa !9
  store <2 x float> %777, ptr %776, align 4, !tbaa !9
  %indvars.iv.next2595 = add nuw nsw i64 %indvars.iv2594, 1
  %778 = trunc nuw nsw i64 %indvars.iv.next2595 to i32
  %779 = add i32 %746, %778
  %gep2796.1 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %indvars.iv.next2595
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds %struct.complex, ptr %32, i64 %780
  %782 = load <2 x float>, ptr %gep2796.1, align 4, !tbaa !9
  store <2 x float> %782, ptr %781, align 4, !tbaa !9
  %indvars.iv.next2595.1 = add nuw nsw i64 %indvars.iv2594, 2
  %783 = trunc nuw nsw i64 %indvars.iv.next2595.1 to i32
  %784 = add i32 %746, %783
  %gep2796.2 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %indvars.iv.next2595.1
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds %struct.complex, ptr %32, i64 %785
  %787 = load <2 x float>, ptr %gep2796.2, align 4, !tbaa !9
  store <2 x float> %787, ptr %786, align 4, !tbaa !9
  %indvars.iv.next2595.2 = add nuw nsw i64 %indvars.iv2594, 3
  %788 = trunc nuw nsw i64 %indvars.iv.next2595.2 to i32
  %789 = add i32 %746, %788
  %gep2796.3 = getelementptr %struct.complex, ptr %invariant.gep2795, i64 %indvars.iv.next2595.2
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds %struct.complex, ptr %32, i64 %790
  %792 = load <2 x float>, ptr %gep2796.3, align 4, !tbaa !9
  store <2 x float> %792, ptr %791, align 4, !tbaa !9
  %indvars.iv.next2595.3 = add nuw nsw i64 %indvars.iv2594, 4
  %exitcond2598.not.3 = icmp eq i64 %indvars.iv.next2595.3, %wide.trip.count2597
  br i1 %exitcond2598.not.3, label %._crit_edge2051, label %scalar.ph4039, !llvm.loop !48

._crit_edge2051:                                  ; preds = %scalar.ph4039.prol.loopexit, %scalar.ph4039, %middle.block4038, %.preheader1915
  %indvars.iv.next2600 = add nuw nsw i64 %indvars.iv2599, 1
  %exitcond2603.not = icmp eq i64 %indvars.iv.next2600, %wide.trip.count2602
  %indvar.next4015 = add i32 %indvar4014, 1
  br i1 %exitcond2603.not, label %._crit_edge2054, label %.preheader1915, !llvm.loop !49

._crit_edge2054:                                  ; preds = %._crit_edge2051, %697
  %793 = mul nsw i32 %704, %21
  %794 = sext i32 %793 to i64
  %795 = getelementptr %struct.complex, ptr %23, i64 %794
  %796 = getelementptr i8, ptr %795, i64 8
  %797 = add nsw i32 %704, %30
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds %struct.complex, ptr %32, i64 %798
  tail call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %796, ptr noundef nonnull %9, ptr noundef %799, ptr noundef nonnull %17) #3
  %800 = load i32, ptr %4, align 4, !tbaa !5
  %801 = load i32, ptr %7, align 4, !tbaa !5
  %802 = sub nsw i32 %800, %801
  store i32 %802, ptr %19, align 4, !tbaa !5
  %803 = add nsw i32 %793, %.1870
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds %struct.complex, ptr %23, i64 %804
  %806 = add nsw i32 %.1870, %27
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds %struct.complex, ptr %29, i64 %807
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %805, ptr noundef nonnull %9, ptr noundef %808, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef %799, ptr noundef nonnull %17) #3
  %809 = load i32, ptr %6, align 4, !tbaa !5
  %810 = load i32, ptr %7, align 4, !tbaa !5
  %811 = sub nsw i32 %809, %810
  store i32 %811, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b2, ptr noundef %16, ptr noundef nonnull %17) #3
  %812 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %812, ptr %19, align 4, !tbaa !5
  %.not18362062 = icmp slt i32 %812, 1
  br i1 %.not18362062, label %._crit_edge2066, label %.lr.ph2065

.lr.ph2065:                                       ; preds = %._crit_edge2054
  %813 = load i32, ptr %6, align 4, !tbaa !5
  %.not18412055 = icmp slt i32 %813, 1
  %814 = add i32 %813, 1
  %815 = sext i32 %30 to i64
  %816 = sext i32 %24 to i64
  %817 = add nuw i32 %812, 1
  %wide.trip.count2612 = zext i32 %817 to i64
  %wide.trip.count2607 = zext i32 %814 to i64
  %818 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %819 = shl nsw i64 %815, 3
  %820 = shl nsw i64 %31, 3
  %821 = getelementptr i8, ptr %16, i64 %819
  %822 = getelementptr i8, ptr %821, i64 %820
  %scevgep4061 = getelementptr i8, ptr %822, i64 8
  %823 = shl nuw nsw i64 %wide.trip.count2612, 3
  %824 = add nsw i64 %823, -8
  %825 = mul i64 %824, %815
  %826 = shl nuw nsw i64 %wide.trip.count2607, 3
  %827 = getelementptr i8, ptr %16, i64 %825
  %828 = getelementptr i8, ptr %827, i64 %820
  %829 = getelementptr i8, ptr %828, i64 %826
  %scevgep4062 = getelementptr i8, ptr %829, i64 -4
  %830 = shl nsw i64 %816, 3
  %831 = shl nsw i64 %25, 3
  %832 = getelementptr i8, ptr %12, i64 %830
  %833 = getelementptr i8, ptr %832, i64 %831
  %scevgep4063 = getelementptr i8, ptr %833, i64 8
  %834 = mul i64 %824, %816
  %835 = getelementptr i8, ptr %12, i64 %834
  %836 = getelementptr i8, ptr %835, i64 %831
  %837 = getelementptr i8, ptr %836, i64 %826
  %scevgep4064 = getelementptr i8, ptr %837, i64 -4
  %838 = getelementptr i8, ptr %16, i64 %819
  %839 = getelementptr i8, ptr %838, i64 %820
  %scevgep4065 = getelementptr i8, ptr %839, i64 12
  %840 = getelementptr i8, ptr %16, i64 %825
  %841 = getelementptr i8, ptr %840, i64 %820
  %scevgep4066 = getelementptr i8, ptr %841, i64 %826
  %842 = getelementptr i8, ptr %12, i64 %830
  %843 = getelementptr i8, ptr %842, i64 %831
  %scevgep4067 = getelementptr i8, ptr %843, i64 12
  %844 = getelementptr i8, ptr %12, i64 %834
  %845 = getelementptr i8, ptr %844, i64 %831
  %scevgep4068 = getelementptr i8, ptr %845, i64 %826
  %846 = add nsw i64 %wide.trip.count2607, -1
  %min.iters.check4082 = icmp ult i32 %814, 7
  %bound04069 = icmp ult ptr %scevgep4061, %scevgep4064
  %bound14070 = icmp ult ptr %scevgep4063, %scevgep4062
  %found.conflict4071 = and i1 %bound04069, %bound14070
  %847 = or i32 %30, %24
  %848 = icmp slt i32 %847, 0
  %849 = or i1 %found.conflict4071, %848
  %bound04074 = icmp ult ptr %scevgep4065, %scevgep4068
  %bound14075 = icmp ult ptr %scevgep4067, %scevgep4066
  %found.conflict4076 = and i1 %bound04074, %bound14075
  %850 = or i32 %30, %24
  %851 = icmp slt i32 %850, 0
  %852 = or i1 %found.conflict4076, %851
  %conflict.rdx4079 = or i1 %849, %852
  %n.vec4085 = and i64 %846, -2
  %ind.end4086 = or i64 %846, 1
  %cmp.n4099 = icmp eq i64 %846, %n.vec4085
  br label %853

853:                                              ; preds = %.lr.ph2065, %._crit_edge2059
  %indvars.iv2609 = phi i64 [ 1, %.lr.ph2065 ], [ %indvars.iv.next2610, %._crit_edge2059 ]
  %854 = phi <2 x float> [ %818, %.lr.ph2065 ], [ %881, %._crit_edge2059 ]
  br i1 %.not18412055, label %._crit_edge2059, label %.lr.ph2058

.lr.ph2058:                                       ; preds = %853
  %855 = mul nsw i64 %indvars.iv2609, %815
  %856 = mul nsw i64 %indvars.iv2609, %816
  %invariant.gep2797 = getelementptr %struct.complex, ptr %32, i64 %855
  %invariant.gep2799 = getelementptr %struct.complex, ptr %26, i64 %856
  %brmerge4359 = select i1 %min.iters.check4082, i1 true, i1 %conflict.rdx4079
  br i1 %brmerge4359, label %scalar.ph4081.preheader, label %vector.body4088

vector.body4088:                                  ; preds = %.lr.ph2058, %vector.body4088
  %index4089 = phi i64 [ %index.next4098, %vector.body4088 ], [ 0, %.lr.ph2058 ]
  %offset.idx4090 = or disjoint i64 %index4089, 1
  %857 = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %offset.idx4090
  %wide.vec4091 = load <4 x float>, ptr %857, align 4, !tbaa !9
  %858 = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %offset.idx4090
  %wide.vec4094 = load <4 x float>, ptr %858, align 4, !tbaa !9
  %859 = fadd <4 x float> %wide.vec4091, %wide.vec4094
  %860 = fadd <4 x float> %wide.vec4091, %wide.vec4094
  %interleaved.vec4097 = shufflevector <4 x float> %859, <4 x float> %860, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec4097, ptr %857, align 4, !tbaa !9
  %index.next4098 = add nuw i64 %index4089, 2
  %861 = icmp eq i64 %index.next4098, %n.vec4085
  br i1 %861, label %middle.block4080, label %vector.body4088, !llvm.loop !50

middle.block4080:                                 ; preds = %vector.body4088
  %862 = shufflevector <4 x float> %859, <4 x float> %860, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n4099, label %._crit_edge2059, label %scalar.ph4081.preheader

scalar.ph4081.preheader:                          ; preds = %.lr.ph2058, %middle.block4080
  %indvars.iv2604.ph = phi i64 [ 1, %.lr.ph2058 ], [ %ind.end4086, %middle.block4080 ]
  %863 = sub nsw i64 %wide.trip.count2607, %indvars.iv2604.ph
  %xtraiter4308 = and i64 %863, 3
  %lcmp.mod4309.not = icmp eq i64 %xtraiter4308, 0
  br i1 %lcmp.mod4309.not, label %scalar.ph4081.prol.loopexit, label %scalar.ph4081.prol

scalar.ph4081.prol:                               ; preds = %scalar.ph4081.preheader, %scalar.ph4081.prol
  %indvars.iv2604.prol = phi i64 [ %indvars.iv.next2605.prol, %scalar.ph4081.prol ], [ %indvars.iv2604.ph, %scalar.ph4081.preheader ]
  %prol.iter4310 = phi i64 [ %prol.iter4310.next, %scalar.ph4081.prol ], [ 0, %scalar.ph4081.preheader ]
  %gep2798.prol = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %indvars.iv2604.prol
  %gep2800.prol = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %indvars.iv2604.prol
  %864 = load <2 x float>, ptr %gep2798.prol, align 4, !tbaa !9
  %865 = load <2 x float>, ptr %gep2800.prol, align 4, !tbaa !9
  %866 = fadd <2 x float> %864, %865
  store <2 x float> %866, ptr %gep2798.prol, align 4, !tbaa !9
  %indvars.iv.next2605.prol = add nuw nsw i64 %indvars.iv2604.prol, 1
  %prol.iter4310.next = add i64 %prol.iter4310, 1
  %prol.iter4310.cmp.not = icmp eq i64 %prol.iter4310.next, %xtraiter4308
  br i1 %prol.iter4310.cmp.not, label %scalar.ph4081.prol.loopexit, label %scalar.ph4081.prol, !llvm.loop !51

scalar.ph4081.prol.loopexit:                      ; preds = %scalar.ph4081.prol, %scalar.ph4081.preheader
  %.lcssa4187.unr = phi <2 x float> [ poison, %scalar.ph4081.preheader ], [ %866, %scalar.ph4081.prol ]
  %indvars.iv2604.unr = phi i64 [ %indvars.iv2604.ph, %scalar.ph4081.preheader ], [ %indvars.iv.next2605.prol, %scalar.ph4081.prol ]
  %867 = sub nsw i64 %indvars.iv2604.ph, %wide.trip.count2607
  %868 = icmp ugt i64 %867, -4
  br i1 %868, label %._crit_edge2059, label %scalar.ph4081

scalar.ph4081:                                    ; preds = %scalar.ph4081.prol.loopexit, %scalar.ph4081
  %indvars.iv2604 = phi i64 [ %indvars.iv.next2605.3, %scalar.ph4081 ], [ %indvars.iv2604.unr, %scalar.ph4081.prol.loopexit ]
  %gep2798 = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %indvars.iv2604
  %gep2800 = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %indvars.iv2604
  %869 = load <2 x float>, ptr %gep2798, align 4, !tbaa !9
  %870 = load <2 x float>, ptr %gep2800, align 4, !tbaa !9
  %871 = fadd <2 x float> %869, %870
  store <2 x float> %871, ptr %gep2798, align 4, !tbaa !9
  %indvars.iv.next2605 = add nuw nsw i64 %indvars.iv2604, 1
  %gep2798.1 = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %indvars.iv.next2605
  %gep2800.1 = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %indvars.iv.next2605
  %872 = load <2 x float>, ptr %gep2798.1, align 4, !tbaa !9
  %873 = load <2 x float>, ptr %gep2800.1, align 4, !tbaa !9
  %874 = fadd <2 x float> %872, %873
  store <2 x float> %874, ptr %gep2798.1, align 4, !tbaa !9
  %indvars.iv.next2605.1 = add nuw nsw i64 %indvars.iv2604, 2
  %gep2798.2 = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %indvars.iv.next2605.1
  %gep2800.2 = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %indvars.iv.next2605.1
  %875 = load <2 x float>, ptr %gep2798.2, align 4, !tbaa !9
  %876 = load <2 x float>, ptr %gep2800.2, align 4, !tbaa !9
  %877 = fadd <2 x float> %875, %876
  store <2 x float> %877, ptr %gep2798.2, align 4, !tbaa !9
  %indvars.iv.next2605.2 = add nuw nsw i64 %indvars.iv2604, 3
  %gep2798.3 = getelementptr %struct.complex, ptr %invariant.gep2797, i64 %indvars.iv.next2605.2
  %gep2800.3 = getelementptr %struct.complex, ptr %invariant.gep2799, i64 %indvars.iv.next2605.2
  %878 = load <2 x float>, ptr %gep2798.3, align 4, !tbaa !9
  %879 = load <2 x float>, ptr %gep2800.3, align 4, !tbaa !9
  %880 = fadd <2 x float> %878, %879
  store <2 x float> %880, ptr %gep2798.3, align 4, !tbaa !9
  %indvars.iv.next2605.3 = add nuw nsw i64 %indvars.iv2604, 4
  %exitcond2608.not.3 = icmp eq i64 %indvars.iv.next2605.3, %wide.trip.count2607
  br i1 %exitcond2608.not.3, label %._crit_edge2059, label %scalar.ph4081, !llvm.loop !52

._crit_edge2059:                                  ; preds = %scalar.ph4081.prol.loopexit, %scalar.ph4081, %middle.block4080, %853
  %881 = phi <2 x float> [ %854, %853 ], [ %862, %middle.block4080 ], [ %.lcssa4187.unr, %scalar.ph4081.prol.loopexit ], [ %880, %scalar.ph4081 ]
  %indvars.iv.next2610 = add nuw nsw i64 %indvars.iv2609, 1
  %exitcond2613.not = icmp eq i64 %indvars.iv.next2610, %wide.trip.count2612
  br i1 %exitcond2613.not, label %._crit_edge2066.loopexit, label %853, !llvm.loop !53

._crit_edge2066.loopexit:                         ; preds = %._crit_edge2059
  store <2 x float> %881, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2066

._crit_edge2066:                                  ; preds = %._crit_edge2066.loopexit, %._crit_edge2054
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %882 = load i32, ptr %5, align 4, !tbaa !5
  %.not18372074 = icmp slt i32 %882, 1
  br i1 %.not18372074, label %._crit_edge2078, label %.lr.ph2077

.lr.ph2077:                                       ; preds = %._crit_edge2066
  %883 = load i32, ptr %6, align 4, !tbaa !5
  %.not18402067 = icmp slt i32 %883, 1
  %884 = add i32 %883, 1
  %885 = sext i32 %24 to i64
  %886 = sext i32 %30 to i64
  %887 = add nuw i32 %882, 1
  %wide.trip.count2622 = zext i32 %887 to i64
  %wide.trip.count2617 = zext i32 %884 to i64
  %888 = shl nsw i64 %885, 3
  %889 = shl nsw i64 %25, 3
  %890 = getelementptr i8, ptr %12, i64 %888
  %891 = getelementptr i8, ptr %890, i64 %889
  %scevgep4101 = getelementptr i8, ptr %891, i64 8
  %892 = shl nuw nsw i64 %wide.trip.count2622, 3
  %893 = add nsw i64 %892, -8
  %894 = mul i64 %893, %885
  %895 = shl nuw nsw i64 %wide.trip.count2617, 3
  %896 = getelementptr i8, ptr %12, i64 %894
  %897 = getelementptr i8, ptr %896, i64 %889
  %898 = getelementptr i8, ptr %897, i64 %895
  %scevgep4102 = getelementptr i8, ptr %898, i64 -4
  %899 = shl nsw i64 %886, 3
  %900 = shl nsw i64 %31, 3
  %901 = getelementptr i8, ptr %16, i64 %899
  %902 = getelementptr i8, ptr %901, i64 %900
  %scevgep4103 = getelementptr i8, ptr %902, i64 8
  %903 = mul i64 %893, %886
  %904 = getelementptr i8, ptr %16, i64 %903
  %905 = getelementptr i8, ptr %904, i64 %900
  %906 = getelementptr i8, ptr %905, i64 %895
  %scevgep4104 = getelementptr i8, ptr %906, i64 -4
  %907 = getelementptr i8, ptr %12, i64 %888
  %908 = getelementptr i8, ptr %907, i64 %889
  %scevgep4105 = getelementptr i8, ptr %908, i64 12
  %909 = getelementptr i8, ptr %12, i64 %894
  %910 = getelementptr i8, ptr %909, i64 %889
  %scevgep4106 = getelementptr i8, ptr %910, i64 %895
  %911 = getelementptr i8, ptr %16, i64 %899
  %912 = getelementptr i8, ptr %911, i64 %900
  %scevgep4107 = getelementptr i8, ptr %912, i64 12
  %913 = getelementptr i8, ptr %16, i64 %903
  %914 = getelementptr i8, ptr %913, i64 %900
  %scevgep4108 = getelementptr i8, ptr %914, i64 %895
  %915 = add nsw i64 %wide.trip.count2617, -1
  %min.iters.check4122 = icmp ult i32 %884, 7
  %bound04109 = icmp ult ptr %scevgep4101, %scevgep4104
  %bound14110 = icmp ult ptr %scevgep4103, %scevgep4102
  %found.conflict4111 = and i1 %bound04109, %bound14110
  %916 = or i32 %24, %30
  %917 = icmp slt i32 %916, 0
  %918 = or i1 %found.conflict4111, %917
  %bound04114 = icmp ult ptr %scevgep4105, %scevgep4108
  %bound14115 = icmp ult ptr %scevgep4107, %scevgep4106
  %found.conflict4116 = and i1 %bound04114, %bound14115
  %919 = or i32 %24, %30
  %920 = icmp slt i32 %919, 0
  %921 = or i1 %found.conflict4116, %920
  %conflict.rdx4119 = or i1 %918, %921
  %n.vec4125 = and i64 %915, -2
  %ind.end4126 = or i64 %915, 1
  %cmp.n4139 = icmp eq i64 %915, %n.vec4125
  br label %922

922:                                              ; preds = %.lr.ph2077, %._crit_edge2071
  %indvars.iv2619 = phi i64 [ 1, %.lr.ph2077 ], [ %indvars.iv.next2620, %._crit_edge2071 ]
  br i1 %.not18402067, label %._crit_edge2071, label %.lr.ph2070

.lr.ph2070:                                       ; preds = %922
  %923 = mul nsw i64 %indvars.iv2619, %885
  %924 = mul nsw i64 %indvars.iv2619, %886
  %invariant.gep2807 = getelementptr %struct.complex, ptr %26, i64 %923
  %invariant.gep2809 = getelementptr %struct.complex, ptr %32, i64 %924
  %brmerge4360 = select i1 %min.iters.check4122, i1 true, i1 %conflict.rdx4119
  br i1 %brmerge4360, label %scalar.ph4121.preheader, label %vector.body4128

vector.body4128:                                  ; preds = %.lr.ph2070, %vector.body4128
  %index4129 = phi i64 [ %index.next4138, %vector.body4128 ], [ 0, %.lr.ph2070 ]
  %offset.idx4130 = or disjoint i64 %index4129, 1
  %925 = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %offset.idx4130
  %wide.vec4131 = load <4 x float>, ptr %925, align 4, !tbaa !9
  %926 = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %offset.idx4130
  %wide.vec4134 = load <4 x float>, ptr %926, align 4, !tbaa !9
  %interleaved.vec4137 = fsub <4 x float> %wide.vec4131, %wide.vec4134
  store <4 x float> %interleaved.vec4137, ptr %925, align 4, !tbaa !9
  %index.next4138 = add nuw i64 %index4129, 2
  %927 = icmp eq i64 %index.next4138, %n.vec4125
  br i1 %927, label %middle.block4120, label %vector.body4128, !llvm.loop !54

middle.block4120:                                 ; preds = %vector.body4128
  br i1 %cmp.n4139, label %._crit_edge2071, label %scalar.ph4121.preheader

scalar.ph4121.preheader:                          ; preds = %.lr.ph2070, %middle.block4120
  %indvars.iv2614.ph = phi i64 [ 1, %.lr.ph2070 ], [ %ind.end4126, %middle.block4120 ]
  %928 = sub nsw i64 %wide.trip.count2617, %indvars.iv2614.ph
  %xtraiter4311 = and i64 %928, 3
  %lcmp.mod4312.not = icmp eq i64 %xtraiter4311, 0
  br i1 %lcmp.mod4312.not, label %scalar.ph4121.prol.loopexit, label %scalar.ph4121.prol

scalar.ph4121.prol:                               ; preds = %scalar.ph4121.preheader, %scalar.ph4121.prol
  %indvars.iv2614.prol = phi i64 [ %indvars.iv.next2615.prol, %scalar.ph4121.prol ], [ %indvars.iv2614.ph, %scalar.ph4121.preheader ]
  %prol.iter4313 = phi i64 [ %prol.iter4313.next, %scalar.ph4121.prol ], [ 0, %scalar.ph4121.preheader ]
  %gep2808.prol = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %indvars.iv2614.prol
  %gep2810.prol = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %indvars.iv2614.prol
  %929 = load <2 x float>, ptr %gep2808.prol, align 4, !tbaa !9
  %930 = load <2 x float>, ptr %gep2810.prol, align 4, !tbaa !9
  %931 = fsub <2 x float> %929, %930
  store <2 x float> %931, ptr %gep2808.prol, align 4, !tbaa !9
  %indvars.iv.next2615.prol = add nuw nsw i64 %indvars.iv2614.prol, 1
  %prol.iter4313.next = add i64 %prol.iter4313, 1
  %prol.iter4313.cmp.not = icmp eq i64 %prol.iter4313.next, %xtraiter4311
  br i1 %prol.iter4313.cmp.not, label %scalar.ph4121.prol.loopexit, label %scalar.ph4121.prol, !llvm.loop !55

scalar.ph4121.prol.loopexit:                      ; preds = %scalar.ph4121.prol, %scalar.ph4121.preheader
  %indvars.iv2614.unr = phi i64 [ %indvars.iv2614.ph, %scalar.ph4121.preheader ], [ %indvars.iv.next2615.prol, %scalar.ph4121.prol ]
  %932 = sub nsw i64 %indvars.iv2614.ph, %wide.trip.count2617
  %933 = icmp ugt i64 %932, -4
  br i1 %933, label %._crit_edge2071, label %scalar.ph4121

scalar.ph4121:                                    ; preds = %scalar.ph4121.prol.loopexit, %scalar.ph4121
  %indvars.iv2614 = phi i64 [ %indvars.iv.next2615.3, %scalar.ph4121 ], [ %indvars.iv2614.unr, %scalar.ph4121.prol.loopexit ]
  %gep2808 = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %indvars.iv2614
  %gep2810 = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %indvars.iv2614
  %934 = load <2 x float>, ptr %gep2808, align 4, !tbaa !9
  %935 = load <2 x float>, ptr %gep2810, align 4, !tbaa !9
  %936 = fsub <2 x float> %934, %935
  store <2 x float> %936, ptr %gep2808, align 4, !tbaa !9
  %indvars.iv.next2615 = add nuw nsw i64 %indvars.iv2614, 1
  %gep2808.1 = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %indvars.iv.next2615
  %gep2810.1 = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %indvars.iv.next2615
  %937 = load <2 x float>, ptr %gep2808.1, align 4, !tbaa !9
  %938 = load <2 x float>, ptr %gep2810.1, align 4, !tbaa !9
  %939 = fsub <2 x float> %937, %938
  store <2 x float> %939, ptr %gep2808.1, align 4, !tbaa !9
  %indvars.iv.next2615.1 = add nuw nsw i64 %indvars.iv2614, 2
  %gep2808.2 = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %indvars.iv.next2615.1
  %gep2810.2 = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %indvars.iv.next2615.1
  %940 = load <2 x float>, ptr %gep2808.2, align 4, !tbaa !9
  %941 = load <2 x float>, ptr %gep2810.2, align 4, !tbaa !9
  %942 = fsub <2 x float> %940, %941
  store <2 x float> %942, ptr %gep2808.2, align 4, !tbaa !9
  %indvars.iv.next2615.2 = add nuw nsw i64 %indvars.iv2614, 3
  %gep2808.3 = getelementptr %struct.complex, ptr %invariant.gep2807, i64 %indvars.iv.next2615.2
  %gep2810.3 = getelementptr %struct.complex, ptr %invariant.gep2809, i64 %indvars.iv.next2615.2
  %943 = load <2 x float>, ptr %gep2808.3, align 4, !tbaa !9
  %944 = load <2 x float>, ptr %gep2810.3, align 4, !tbaa !9
  %945 = fsub <2 x float> %943, %944
  store <2 x float> %945, ptr %gep2808.3, align 4, !tbaa !9
  %indvars.iv.next2615.3 = add nuw nsw i64 %indvars.iv2614, 4
  %exitcond2618.not.3 = icmp eq i64 %indvars.iv.next2615.3, %wide.trip.count2617
  br i1 %exitcond2618.not.3, label %._crit_edge2071, label %scalar.ph4121, !llvm.loop !56

._crit_edge2071:                                  ; preds = %scalar.ph4121.prol.loopexit, %scalar.ph4121, %middle.block4120, %922
  %indvars.iv.next2620 = add nuw nsw i64 %indvars.iv2619, 1
  %exitcond2623.not = icmp eq i64 %indvars.iv.next2620, %wide.trip.count2622
  br i1 %exitcond2623.not, label %._crit_edge2078, label %922, !llvm.loop !57

._crit_edge2078:                                  ; preds = %._crit_edge2071, %._crit_edge2066
  %946 = load i32, ptr %4, align 4, !tbaa !5
  %947 = load i32, ptr %7, align 4, !tbaa !5
  %948 = sub nsw i32 %946, %947
  store i32 %948, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %949 = add nsw i32 %.1870, %21
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds %struct.complex, ptr %23, i64 %950
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %951, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %808, ptr noundef nonnull %15) #3
  %952 = load i32, ptr %6, align 4, !tbaa !5
  %953 = load i32, ptr %7, align 4, !tbaa !5
  %954 = sub nsw i32 %952, %953
  store i32 %954, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %796, ptr noundef nonnull %9, ptr noundef %799, ptr noundef nonnull %17) #3
  %955 = load i32, ptr %5, align 4, !tbaa !5
  %.not18382086 = icmp slt i32 %955, 1
  br i1 %.not18382086, label %.thread1900, label %.lr.ph2089

.lr.ph2089:                                       ; preds = %._crit_edge2078
  %956 = load i32, ptr %7, align 4, !tbaa !5
  %.not18392079 = icmp slt i32 %956, 1
  %957 = add i32 %956, 1
  %958 = sext i32 %27 to i64
  %959 = add nuw i32 %955, 1
  %wide.trip.count2632 = zext i32 %959 to i64
  %wide.trip.count2627 = zext i32 %957 to i64
  %960 = add nsw i64 %wide.trip.count2627, -2
  %961 = add i32 %30, 1
  %962 = sub i32 %961, %956
  %963 = shl nsw i64 %958, 3
  %964 = shl nsw i64 %28, 3
  %965 = getelementptr i8, ptr %14, i64 %963
  %966 = getelementptr i8, ptr %965, i64 %964
  %scevgep4144 = getelementptr i8, ptr %966, i64 8
  %967 = shl nuw nsw i64 %wide.trip.count2632, 3
  %968 = add nsw i64 %967, -8
  %969 = mul i64 %968, %958
  %970 = shl nuw nsw i64 %wide.trip.count2627, 3
  %971 = getelementptr i8, ptr %14, i64 %969
  %972 = getelementptr i8, ptr %971, i64 %964
  %973 = getelementptr i8, ptr %972, i64 %970
  %scevgep4145 = getelementptr i8, ptr %973, i64 -4
  %974 = shl nsw i64 %31, 3
  %scevgep4146 = getelementptr i8, ptr %16, i64 %974
  %975 = add i32 %30, 1
  %976 = sub i32 %975, %956
  %977 = getelementptr i8, ptr %16, i64 %974
  %978 = getelementptr i8, ptr %977, i64 %970
  %scevgep4148 = getelementptr i8, ptr %978, i64 -12
  %979 = getelementptr i8, ptr %14, i64 %963
  %980 = getelementptr i8, ptr %979, i64 %964
  %scevgep4150 = getelementptr i8, ptr %980, i64 12
  %981 = getelementptr i8, ptr %14, i64 %969
  %982 = getelementptr i8, ptr %981, i64 %964
  %scevgep4151 = getelementptr i8, ptr %982, i64 %970
  %983 = or disjoint i64 %974, 4
  %scevgep4152 = getelementptr i8, ptr %16, i64 %983
  %984 = getelementptr i8, ptr %16, i64 %974
  %985 = getelementptr i8, ptr %984, i64 %970
  %scevgep4154 = getelementptr i8, ptr %985, i64 -8
  %986 = add nsw i64 %wide.trip.count2627, -1
  %min.iters.check4167 = icmp ult i32 %957, 9
  %987 = trunc i64 %960 to i32
  %988 = icmp ugt i64 %960, 4294967295
  %stride.check4163 = icmp slt i32 %27, 0
  %n.vec4170 = and i64 %986, -4
  %ind.end4171 = or disjoint i64 %n.vec4170, 1
  %cmp.n4185 = icmp eq i64 %986, %n.vec4170
  %989 = and i64 %wide.trip.count2627, 1
  %lcmp.mod4315.not.not = icmp eq i64 %989, 0
  %990 = add nsw i64 %wide.trip.count2627, -1
  br label %991

991:                                              ; preds = %.lr.ph2089, %._crit_edge2083
  %indvar4141 = phi i32 [ 0, %.lr.ph2089 ], [ %indvar.next4142, %._crit_edge2083 ]
  %indvars.iv2629 = phi i64 [ 1, %.lr.ph2089 ], [ %indvars.iv.next2630, %._crit_edge2083 ]
  %992 = mul i32 %30, %indvar4141
  %993 = add i32 %976, %992
  %994 = mul i32 %30, %indvar4141
  %995 = add i32 %962, %994
  br i1 %.not18392079, label %._crit_edge2083, label %.lr.ph2082

.lr.ph2082:                                       ; preds = %991
  %996 = mul nsw i64 %indvars.iv2629, %958
  %997 = load i32, ptr %6, align 4, !tbaa !5
  %998 = trunc i64 %indvars.iv2629 to i32
  %999 = mul i32 %30, %998
  %1000 = sub i32 %999, %956
  %invariant.gep2811 = getelementptr %struct.complex, ptr %29, i64 %996
  br i1 %min.iters.check4167, label %scalar.ph4166.preheader, label %vector.scevcheck4140

vector.scevcheck4140:                             ; preds = %.lr.ph2082
  %1001 = add i32 %997, %995
  %1002 = add i32 %1001, %987
  %1003 = icmp slt i32 %1002, %1001
  %1004 = or i1 %1003, %988
  br i1 %1004, label %scalar.ph4166.preheader, label %vector.memcheck4143

vector.memcheck4143:                              ; preds = %vector.scevcheck4140
  %1005 = add i32 %997, %993
  %1006 = sext i32 %1005 to i64
  %1007 = shl nsw i64 %1006, 3
  %scevgep4147 = getelementptr i8, ptr %scevgep4146, i64 %1007
  %scevgep4149 = getelementptr i8, ptr %scevgep4148, i64 %1007
  %scevgep4153 = getelementptr i8, ptr %scevgep4152, i64 %1007
  %scevgep4155 = getelementptr i8, ptr %scevgep4154, i64 %1007
  %bound04156 = icmp ult ptr %scevgep4144, %scevgep4149
  %bound14157 = icmp ult ptr %scevgep4147, %scevgep4145
  %found.conflict4158 = and i1 %bound04156, %bound14157
  %bound04160 = icmp ult ptr %scevgep4150, %scevgep4155
  %bound14161 = icmp ult ptr %scevgep4153, %scevgep4151
  %found.conflict4162 = and i1 %bound04160, %bound14161
  %1008 = or i1 %found.conflict4162, %stride.check4163
  %conflict.rdx4164 = or i1 %found.conflict4158, %1008
  br i1 %conflict.rdx4164, label %scalar.ph4166.preheader, label %vector.body4173

vector.body4173:                                  ; preds = %vector.memcheck4143, %vector.body4173
  %index4174 = phi i64 [ %index.next4184, %vector.body4173 ], [ 0, %vector.memcheck4143 ]
  %offset.idx4175 = or disjoint i64 %index4174, 1
  %1009 = trunc i64 %index4174 to i32
  %1010 = or disjoint i32 %1009, 1
  %1011 = add i32 %1000, %1010
  %1012 = add i32 %1011, %997
  %1013 = getelementptr %struct.complex, ptr %invariant.gep2811, i64 %offset.idx4175
  %wide.vec4177 = load <8 x float>, ptr %1013, align 4, !tbaa !9
  %1014 = sext i32 %1012 to i64
  %1015 = getelementptr inbounds %struct.complex, ptr %32, i64 %1014
  %wide.vec4180 = load <8 x float>, ptr %1015, align 4, !tbaa !9
  %interleaved.vec4183 = fsub <8 x float> %wide.vec4177, %wide.vec4180
  store <8 x float> %interleaved.vec4183, ptr %1013, align 4, !tbaa !9
  %index.next4184 = add nuw i64 %index4174, 4
  %1016 = icmp eq i64 %index.next4184, %n.vec4170
  br i1 %1016, label %middle.block4165, label %vector.body4173, !llvm.loop !58

middle.block4165:                                 ; preds = %vector.body4173
  br i1 %cmp.n4185, label %._crit_edge2083, label %scalar.ph4166.preheader

scalar.ph4166.preheader:                          ; preds = %middle.block4165, %vector.memcheck4143, %vector.scevcheck4140, %.lr.ph2082
  %indvars.iv2624.ph = phi i64 [ 1, %vector.memcheck4143 ], [ 1, %vector.scevcheck4140 ], [ 1, %.lr.ph2082 ], [ %ind.end4171, %middle.block4165 ]
  br i1 %lcmp.mod4315.not.not, label %scalar.ph4166.prol, label %scalar.ph4166.prol.loopexit

scalar.ph4166.prol:                               ; preds = %scalar.ph4166.preheader
  %1017 = trunc nuw nsw i64 %indvars.iv2624.ph to i32
  %1018 = add i32 %1000, %1017
  %1019 = add i32 %1018, %997
  %gep2812.prol = getelementptr %struct.complex, ptr %invariant.gep2811, i64 %indvars.iv2624.ph
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.complex, ptr %32, i64 %1020
  %1022 = load <2 x float>, ptr %gep2812.prol, align 4, !tbaa !9
  %1023 = load <2 x float>, ptr %1021, align 4, !tbaa !9
  %1024 = fsub <2 x float> %1022, %1023
  store <2 x float> %1024, ptr %gep2812.prol, align 4, !tbaa !9
  %indvars.iv.next2625.prol = add nuw nsw i64 %indvars.iv2624.ph, 1
  br label %scalar.ph4166.prol.loopexit

scalar.ph4166.prol.loopexit:                      ; preds = %scalar.ph4166.prol, %scalar.ph4166.preheader
  %indvars.iv2624.unr = phi i64 [ %indvars.iv2624.ph, %scalar.ph4166.preheader ], [ %indvars.iv.next2625.prol, %scalar.ph4166.prol ]
  %1025 = icmp eq i64 %indvars.iv2624.ph, %990
  br i1 %1025, label %._crit_edge2083, label %scalar.ph4166

scalar.ph4166:                                    ; preds = %scalar.ph4166.prol.loopexit, %scalar.ph4166
  %indvars.iv2624 = phi i64 [ %indvars.iv.next2625.1, %scalar.ph4166 ], [ %indvars.iv2624.unr, %scalar.ph4166.prol.loopexit ]
  %1026 = trunc nuw nsw i64 %indvars.iv2624 to i32
  %1027 = add i32 %1000, %1026
  %1028 = add i32 %1027, %997
  %gep2812 = getelementptr %struct.complex, ptr %invariant.gep2811, i64 %indvars.iv2624
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds %struct.complex, ptr %32, i64 %1029
  %1031 = load <2 x float>, ptr %gep2812, align 4, !tbaa !9
  %1032 = load <2 x float>, ptr %1030, align 4, !tbaa !9
  %1033 = fsub <2 x float> %1031, %1032
  store <2 x float> %1033, ptr %gep2812, align 4, !tbaa !9
  %indvars.iv.next2625 = add nuw nsw i64 %indvars.iv2624, 1
  %1034 = trunc nuw nsw i64 %indvars.iv.next2625 to i32
  %1035 = add i32 %1000, %1034
  %1036 = add i32 %1035, %997
  %gep2812.1 = getelementptr %struct.complex, ptr %invariant.gep2811, i64 %indvars.iv.next2625
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.complex, ptr %32, i64 %1037
  %1039 = load <2 x float>, ptr %gep2812.1, align 4, !tbaa !9
  %1040 = load <2 x float>, ptr %1038, align 4, !tbaa !9
  %1041 = fsub <2 x float> %1039, %1040
  store <2 x float> %1041, ptr %gep2812.1, align 4, !tbaa !9
  %indvars.iv.next2625.1 = add nuw nsw i64 %indvars.iv2624, 2
  %exitcond2628.not.1 = icmp eq i64 %indvars.iv.next2625.1, %wide.trip.count2627
  br i1 %exitcond2628.not.1, label %._crit_edge2083, label %scalar.ph4166, !llvm.loop !59

._crit_edge2083:                                  ; preds = %scalar.ph4166.prol.loopexit, %scalar.ph4166, %middle.block4165, %991
  %indvars.iv.next2630 = add nuw nsw i64 %indvars.iv2629, 1
  %exitcond2633.not = icmp eq i64 %indvars.iv.next2630, %wide.trip.count2632
  %indvar.next4142 = add i32 %indvar4141, 1
  br i1 %exitcond2633.not, label %.thread1900, label %991, !llvm.loop !60

1042:                                             ; preds = %695
  %or.cond15 = and i1 %54, %or.cond9
  br i1 %or.cond15, label %1043, label %1964

1043:                                             ; preds = %1042
  %1044 = load i32, ptr %7, align 4, !tbaa !5
  %1045 = add i32 %1044, 1
  %1046 = load i32, ptr %5, align 4, !tbaa !5
  %.not1823.not = icmp slt i32 %1044, %1046
  %.1871 = select i1 %.not1823.not, i32 %1045, i32 %1046
  %1047 = load i32, ptr %6, align 4, !tbaa !5
  %1048 = sub nsw i32 %1047, %1044
  %1049 = add nsw i32 %1048, 1
  %.not1824.not = icmp sgt i32 %1044, 0
  %1050 = select i1 %.not1824.not, i32 %1049, i32 %1047
  %.not18252008 = icmp slt i32 %1044, 1
  br i1 %.not18252008, label %._crit_edge2012, label %.lr.ph2011

.lr.ph2011:                                       ; preds = %1043
  %1051 = load i32, ptr %4, align 4, !tbaa !5
  %.not18322003 = icmp slt i32 %1051, 1
  %1052 = add i32 %1051, 1
  %1053 = sext i32 %27 to i64
  %wide.trip.count2562 = zext i32 %1045 to i64
  %wide.trip.count2557 = zext i32 %1052 to i64
  %1054 = shl nsw i64 %31, 3
  %1055 = getelementptr i8, ptr %16, i64 %1054
  %scevgep3847 = getelementptr i8, ptr %1055, i64 8
  %1056 = add i32 %1047, 1
  %1057 = sub i32 %1056, %1044
  %1058 = shl nuw nsw i64 %wide.trip.count2557, 3
  %1059 = getelementptr i8, ptr %16, i64 %1054
  %1060 = getelementptr i8, ptr %1059, i64 %1058
  %scevgep3851 = getelementptr i8, ptr %1060, i64 -4
  %1061 = shl nsw i64 %1053, 3
  %1062 = shl nsw i64 %28, 3
  %1063 = getelementptr i8, ptr %14, i64 %1061
  %1064 = getelementptr i8, ptr %1063, i64 %1062
  %scevgep3853 = getelementptr i8, ptr %1064, i64 8
  %1065 = shl nuw nsw i64 %wide.trip.count2562, 3
  %1066 = add nsw i64 %1065, -8
  %1067 = mul i64 %1066, %1053
  %1068 = getelementptr i8, ptr %14, i64 %1067
  %1069 = getelementptr i8, ptr %1068, i64 %1062
  %1070 = getelementptr i8, ptr %1069, i64 %1058
  %scevgep3854 = getelementptr i8, ptr %1070, i64 -4
  %1071 = getelementptr i8, ptr %16, i64 %1054
  %scevgep3855 = getelementptr i8, ptr %1071, i64 12
  %1072 = getelementptr i8, ptr %16, i64 %1054
  %scevgep3857 = getelementptr i8, ptr %1072, i64 %1058
  %1073 = getelementptr i8, ptr %14, i64 %1061
  %1074 = getelementptr i8, ptr %1073, i64 %1062
  %scevgep3859 = getelementptr i8, ptr %1074, i64 12
  %1075 = getelementptr i8, ptr %14, i64 %1067
  %1076 = getelementptr i8, ptr %1075, i64 %1062
  %scevgep3860 = getelementptr i8, ptr %1076, i64 %1058
  %1077 = add nsw i64 %wide.trip.count2557, -1
  %min.iters.check3872 = icmp ult i32 %1052, 11
  %stride.check3868 = icmp slt i32 %27, 0
  %n.vec3875 = and i64 %1077, -4
  %ind.end3876 = or disjoint i64 %n.vec3875, 1
  %cmp.n3890 = icmp eq i64 %1077, %n.vec3875
  br label %1078

1078:                                             ; preds = %.lr.ph2011, %._crit_edge2007
  %indvar3848 = phi i32 [ 0, %.lr.ph2011 ], [ %indvar.next3849, %._crit_edge2007 ]
  %indvars.iv2559 = phi i64 [ 1, %.lr.ph2011 ], [ %indvars.iv.next2560, %._crit_edge2007 ]
  %1079 = add i32 %1057, %indvar3848
  %1080 = mul i32 %30, %1079
  %1081 = sext i32 %1080 to i64
  %1082 = shl nsw i64 %1081, 3
  %scevgep3850 = getelementptr i8, ptr %scevgep3847, i64 %1082
  %scevgep3852 = getelementptr i8, ptr %scevgep3851, i64 %1082
  %scevgep3856 = getelementptr i8, ptr %scevgep3855, i64 %1082
  %scevgep3858 = getelementptr i8, ptr %scevgep3857, i64 %1082
  br i1 %.not18322003, label %._crit_edge2007, label %.lr.ph2006

.lr.ph2006:                                       ; preds = %1078
  %1083 = trunc nuw nsw i64 %indvars.iv2559 to i32
  %1084 = add nsw i32 %1048, %1083
  %1085 = mul nsw i32 %1084, %30
  %1086 = mul nsw i64 %indvars.iv2559, %1053
  %1087 = sext i32 %1085 to i64
  %invariant.gep2773 = getelementptr %struct.complex, ptr %29, i64 %1086
  %invariant.gep2775 = getelementptr %struct.complex, ptr %32, i64 %1087
  br i1 %min.iters.check3872, label %scalar.ph3871.preheader, label %vector.memcheck3846

vector.memcheck3846:                              ; preds = %.lr.ph2006
  %bound03861 = icmp ult ptr %scevgep3850, %scevgep3854
  %bound13862 = icmp ult ptr %scevgep3853, %scevgep3852
  %found.conflict3863 = and i1 %bound03861, %bound13862
  %bound03865 = icmp ult ptr %scevgep3856, %scevgep3860
  %bound13866 = icmp ult ptr %scevgep3859, %scevgep3858
  %found.conflict3867 = and i1 %bound03865, %bound13866
  %1088 = or i1 %found.conflict3867, %stride.check3868
  %conflict.rdx3869 = or i1 %found.conflict3863, %1088
  br i1 %conflict.rdx3869, label %scalar.ph3871.preheader, label %vector.body3878

vector.body3878:                                  ; preds = %vector.memcheck3846, %vector.body3878
  %index3879 = phi i64 [ %index.next3889, %vector.body3878 ], [ 0, %vector.memcheck3846 ]
  %offset.idx3880 = or disjoint i64 %index3879, 1
  %1089 = or disjoint i64 %index3879, 3
  %1090 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %offset.idx3880
  %1091 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %1089
  %wide.vec3881 = load <4 x float>, ptr %1090, align 4, !tbaa !9
  %wide.vec3882 = load <4 x float>, ptr %1091, align 4, !tbaa !9
  %1092 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %offset.idx3880
  %1093 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %1089
  store <4 x float> %wide.vec3881, ptr %1092, align 4, !tbaa !9
  store <4 x float> %wide.vec3882, ptr %1093, align 4, !tbaa !9
  %index.next3889 = add nuw i64 %index3879, 4
  %1094 = icmp eq i64 %index.next3889, %n.vec3875
  br i1 %1094, label %middle.block3870, label %vector.body3878, !llvm.loop !61

middle.block3870:                                 ; preds = %vector.body3878
  br i1 %cmp.n3890, label %._crit_edge2007, label %scalar.ph3871.preheader

scalar.ph3871.preheader:                          ; preds = %middle.block3870, %vector.memcheck3846, %.lr.ph2006
  %indvars.iv2554.ph = phi i64 [ 1, %vector.memcheck3846 ], [ 1, %.lr.ph2006 ], [ %ind.end3876, %middle.block3870 ]
  %1095 = sub nsw i64 %wide.trip.count2557, %indvars.iv2554.ph
  %xtraiter4293 = and i64 %1095, 3
  %lcmp.mod4294.not = icmp eq i64 %xtraiter4293, 0
  br i1 %lcmp.mod4294.not, label %scalar.ph3871.prol.loopexit, label %scalar.ph3871.prol

scalar.ph3871.prol:                               ; preds = %scalar.ph3871.preheader, %scalar.ph3871.prol
  %indvars.iv2554.prol = phi i64 [ %indvars.iv.next2555.prol, %scalar.ph3871.prol ], [ %indvars.iv2554.ph, %scalar.ph3871.preheader ]
  %prol.iter4295 = phi i64 [ %prol.iter4295.next, %scalar.ph3871.prol ], [ 0, %scalar.ph3871.preheader ]
  %gep2774.prol = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %indvars.iv2554.prol
  %gep2776.prol = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %indvars.iv2554.prol
  %1096 = load <2 x float>, ptr %gep2774.prol, align 4, !tbaa !9
  store <2 x float> %1096, ptr %gep2776.prol, align 4, !tbaa !9
  %indvars.iv.next2555.prol = add nuw nsw i64 %indvars.iv2554.prol, 1
  %prol.iter4295.next = add i64 %prol.iter4295, 1
  %prol.iter4295.cmp.not = icmp eq i64 %prol.iter4295.next, %xtraiter4293
  br i1 %prol.iter4295.cmp.not, label %scalar.ph3871.prol.loopexit, label %scalar.ph3871.prol, !llvm.loop !62

scalar.ph3871.prol.loopexit:                      ; preds = %scalar.ph3871.prol, %scalar.ph3871.preheader
  %indvars.iv2554.unr = phi i64 [ %indvars.iv2554.ph, %scalar.ph3871.preheader ], [ %indvars.iv.next2555.prol, %scalar.ph3871.prol ]
  %1097 = sub nsw i64 %indvars.iv2554.ph, %wide.trip.count2557
  %1098 = icmp ugt i64 %1097, -4
  br i1 %1098, label %._crit_edge2007, label %scalar.ph3871

scalar.ph3871:                                    ; preds = %scalar.ph3871.prol.loopexit, %scalar.ph3871
  %indvars.iv2554 = phi i64 [ %indvars.iv.next2555.3, %scalar.ph3871 ], [ %indvars.iv2554.unr, %scalar.ph3871.prol.loopexit ]
  %gep2774 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %indvars.iv2554
  %gep2776 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %indvars.iv2554
  %1099 = load <2 x float>, ptr %gep2774, align 4, !tbaa !9
  store <2 x float> %1099, ptr %gep2776, align 4, !tbaa !9
  %indvars.iv.next2555 = add nuw nsw i64 %indvars.iv2554, 1
  %gep2774.1 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %indvars.iv.next2555
  %gep2776.1 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %indvars.iv.next2555
  %1100 = load <2 x float>, ptr %gep2774.1, align 4, !tbaa !9
  store <2 x float> %1100, ptr %gep2776.1, align 4, !tbaa !9
  %indvars.iv.next2555.1 = add nuw nsw i64 %indvars.iv2554, 2
  %gep2774.2 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %indvars.iv.next2555.1
  %gep2776.2 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %indvars.iv.next2555.1
  %1101 = load <2 x float>, ptr %gep2774.2, align 4, !tbaa !9
  store <2 x float> %1101, ptr %gep2776.2, align 4, !tbaa !9
  %indvars.iv.next2555.2 = add nuw nsw i64 %indvars.iv2554, 3
  %gep2774.3 = getelementptr %struct.complex, ptr %invariant.gep2773, i64 %indvars.iv.next2555.2
  %gep2776.3 = getelementptr %struct.complex, ptr %invariant.gep2775, i64 %indvars.iv.next2555.2
  %1102 = load <2 x float>, ptr %gep2774.3, align 4, !tbaa !9
  store <2 x float> %1102, ptr %gep2776.3, align 4, !tbaa !9
  %indvars.iv.next2555.3 = add nuw nsw i64 %indvars.iv2554, 4
  %exitcond2558.not.3 = icmp eq i64 %indvars.iv.next2555.3, %wide.trip.count2557
  br i1 %exitcond2558.not.3, label %._crit_edge2007, label %scalar.ph3871, !llvm.loop !63

._crit_edge2007:                                  ; preds = %scalar.ph3871.prol.loopexit, %scalar.ph3871, %middle.block3870, %1078
  %indvars.iv.next2560 = add nuw nsw i64 %indvars.iv2559, 1
  %exitcond2563.not = icmp eq i64 %indvars.iv.next2560, %wide.trip.count2562
  %indvar.next3849 = add i32 %indvar3848, 1
  br i1 %exitcond2563.not, label %._crit_edge2012, label %1078, !llvm.loop !64

._crit_edge2012:                                  ; preds = %._crit_edge2007, %1043
  %1103 = mul nsw i32 %1050, %21
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr %struct.complex, ptr %23, i64 %1104
  %1106 = getelementptr i8, ptr %1105, i64 8
  %1107 = mul nsw i32 %1050, %30
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr %struct.complex, ptr %32, i64 %1108
  %1110 = getelementptr i8, ptr %1109, i64 8
  tail call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %1106, ptr noundef nonnull %9, ptr noundef %1110, ptr noundef nonnull %17) #3
  %1111 = load i32, ptr %5, align 4, !tbaa !5
  %1112 = load i32, ptr %7, align 4, !tbaa !5
  %1113 = sub nsw i32 %1111, %1112
  store i32 %1113, ptr %19, align 4, !tbaa !5
  %1114 = mul nsw i32 %.1871, %27
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr %struct.complex, ptr %29, i64 %1115
  %1117 = getelementptr i8, ptr %1116, i64 8
  %1118 = add nsw i32 %1103, %.1871
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds %struct.complex, ptr %23, i64 %1119
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %1117, ptr noundef nonnull %15, ptr noundef %1120, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %1110, ptr noundef nonnull %17) #3
  %1121 = load i32, ptr %6, align 4, !tbaa !5
  %1122 = load i32, ptr %7, align 4, !tbaa !5
  %1123 = sub nsw i32 %1121, %1122
  store i32 %1123, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b2, ptr noundef %16, ptr noundef nonnull %17) #3
  %1124 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %1124, ptr %19, align 4, !tbaa !5
  %.not18262020 = icmp slt i32 %1124, 1
  br i1 %.not18262020, label %._crit_edge2024, label %.lr.ph2023

.lr.ph2023:                                       ; preds = %._crit_edge2012
  %1125 = load i32, ptr %4, align 4, !tbaa !5
  %.not18312013 = icmp slt i32 %1125, 1
  %1126 = add i32 %1125, 1
  %1127 = sext i32 %30 to i64
  %1128 = sext i32 %24 to i64
  %1129 = add nuw i32 %1124, 1
  %wide.trip.count2572 = zext i32 %1129 to i64
  %wide.trip.count2567 = zext i32 %1126 to i64
  %1130 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %1131 = shl nsw i64 %1127, 3
  %1132 = shl nsw i64 %31, 3
  %1133 = getelementptr i8, ptr %16, i64 %1131
  %1134 = getelementptr i8, ptr %1133, i64 %1132
  %scevgep3892 = getelementptr i8, ptr %1134, i64 8
  %1135 = shl nuw nsw i64 %wide.trip.count2572, 3
  %1136 = add nsw i64 %1135, -8
  %1137 = mul i64 %1136, %1127
  %1138 = shl nuw nsw i64 %wide.trip.count2567, 3
  %1139 = getelementptr i8, ptr %16, i64 %1137
  %1140 = getelementptr i8, ptr %1139, i64 %1132
  %1141 = getelementptr i8, ptr %1140, i64 %1138
  %scevgep3893 = getelementptr i8, ptr %1141, i64 -4
  %1142 = shl nsw i64 %1128, 3
  %1143 = shl nsw i64 %25, 3
  %1144 = getelementptr i8, ptr %12, i64 %1142
  %1145 = getelementptr i8, ptr %1144, i64 %1143
  %scevgep3894 = getelementptr i8, ptr %1145, i64 8
  %1146 = mul i64 %1136, %1128
  %1147 = getelementptr i8, ptr %12, i64 %1146
  %1148 = getelementptr i8, ptr %1147, i64 %1143
  %1149 = getelementptr i8, ptr %1148, i64 %1138
  %scevgep3895 = getelementptr i8, ptr %1149, i64 -4
  %1150 = getelementptr i8, ptr %16, i64 %1131
  %1151 = getelementptr i8, ptr %1150, i64 %1132
  %scevgep3896 = getelementptr i8, ptr %1151, i64 12
  %1152 = getelementptr i8, ptr %16, i64 %1137
  %1153 = getelementptr i8, ptr %1152, i64 %1132
  %scevgep3897 = getelementptr i8, ptr %1153, i64 %1138
  %1154 = getelementptr i8, ptr %12, i64 %1142
  %1155 = getelementptr i8, ptr %1154, i64 %1143
  %scevgep3898 = getelementptr i8, ptr %1155, i64 12
  %1156 = getelementptr i8, ptr %12, i64 %1146
  %1157 = getelementptr i8, ptr %1156, i64 %1143
  %scevgep3899 = getelementptr i8, ptr %1157, i64 %1138
  %1158 = add nsw i64 %wide.trip.count2567, -1
  %min.iters.check3913 = icmp ult i32 %1126, 7
  %bound03900 = icmp ult ptr %scevgep3892, %scevgep3895
  %bound13901 = icmp ult ptr %scevgep3894, %scevgep3893
  %found.conflict3902 = and i1 %bound03900, %bound13901
  %1159 = or i32 %30, %24
  %1160 = icmp slt i32 %1159, 0
  %1161 = or i1 %found.conflict3902, %1160
  %bound03905 = icmp ult ptr %scevgep3896, %scevgep3899
  %bound13906 = icmp ult ptr %scevgep3898, %scevgep3897
  %found.conflict3907 = and i1 %bound03905, %bound13906
  %1162 = or i32 %30, %24
  %1163 = icmp slt i32 %1162, 0
  %1164 = or i1 %found.conflict3907, %1163
  %conflict.rdx3910 = or i1 %1161, %1164
  %n.vec3916 = and i64 %1158, -2
  %ind.end3917 = or i64 %1158, 1
  %cmp.n3930 = icmp eq i64 %1158, %n.vec3916
  br label %1165

1165:                                             ; preds = %.lr.ph2023, %._crit_edge2017
  %indvars.iv2569 = phi i64 [ 1, %.lr.ph2023 ], [ %indvars.iv.next2570, %._crit_edge2017 ]
  %1166 = phi <2 x float> [ %1130, %.lr.ph2023 ], [ %1193, %._crit_edge2017 ]
  br i1 %.not18312013, label %._crit_edge2017, label %.lr.ph2016

.lr.ph2016:                                       ; preds = %1165
  %1167 = mul nsw i64 %indvars.iv2569, %1127
  %1168 = mul nsw i64 %indvars.iv2569, %1128
  %invariant.gep2777 = getelementptr %struct.complex, ptr %32, i64 %1167
  %invariant.gep2779 = getelementptr %struct.complex, ptr %26, i64 %1168
  %brmerge4361 = select i1 %min.iters.check3913, i1 true, i1 %conflict.rdx3910
  br i1 %brmerge4361, label %scalar.ph3912.preheader, label %vector.body3919

vector.body3919:                                  ; preds = %.lr.ph2016, %vector.body3919
  %index3920 = phi i64 [ %index.next3929, %vector.body3919 ], [ 0, %.lr.ph2016 ]
  %offset.idx3921 = or disjoint i64 %index3920, 1
  %1169 = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %offset.idx3921
  %wide.vec3922 = load <4 x float>, ptr %1169, align 4, !tbaa !9
  %1170 = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %offset.idx3921
  %wide.vec3925 = load <4 x float>, ptr %1170, align 4, !tbaa !9
  %1171 = fadd <4 x float> %wide.vec3922, %wide.vec3925
  %1172 = fadd <4 x float> %wide.vec3922, %wide.vec3925
  %interleaved.vec3928 = shufflevector <4 x float> %1171, <4 x float> %1172, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3928, ptr %1169, align 4, !tbaa !9
  %index.next3929 = add nuw i64 %index3920, 2
  %1173 = icmp eq i64 %index.next3929, %n.vec3916
  br i1 %1173, label %middle.block3911, label %vector.body3919, !llvm.loop !65

middle.block3911:                                 ; preds = %vector.body3919
  %1174 = shufflevector <4 x float> %1171, <4 x float> %1172, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3930, label %._crit_edge2017, label %scalar.ph3912.preheader

scalar.ph3912.preheader:                          ; preds = %.lr.ph2016, %middle.block3911
  %indvars.iv2564.ph = phi i64 [ 1, %.lr.ph2016 ], [ %ind.end3917, %middle.block3911 ]
  %1175 = sub nsw i64 %wide.trip.count2567, %indvars.iv2564.ph
  %xtraiter4296 = and i64 %1175, 3
  %lcmp.mod4297.not = icmp eq i64 %xtraiter4296, 0
  br i1 %lcmp.mod4297.not, label %scalar.ph3912.prol.loopexit, label %scalar.ph3912.prol

scalar.ph3912.prol:                               ; preds = %scalar.ph3912.preheader, %scalar.ph3912.prol
  %indvars.iv2564.prol = phi i64 [ %indvars.iv.next2565.prol, %scalar.ph3912.prol ], [ %indvars.iv2564.ph, %scalar.ph3912.preheader ]
  %prol.iter4298 = phi i64 [ %prol.iter4298.next, %scalar.ph3912.prol ], [ 0, %scalar.ph3912.preheader ]
  %gep2778.prol = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %indvars.iv2564.prol
  %gep2780.prol = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %indvars.iv2564.prol
  %1176 = load <2 x float>, ptr %gep2778.prol, align 4, !tbaa !9
  %1177 = load <2 x float>, ptr %gep2780.prol, align 4, !tbaa !9
  %1178 = fadd <2 x float> %1176, %1177
  store <2 x float> %1178, ptr %gep2778.prol, align 4, !tbaa !9
  %indvars.iv.next2565.prol = add nuw nsw i64 %indvars.iv2564.prol, 1
  %prol.iter4298.next = add i64 %prol.iter4298, 1
  %prol.iter4298.cmp.not = icmp eq i64 %prol.iter4298.next, %xtraiter4296
  br i1 %prol.iter4298.cmp.not, label %scalar.ph3912.prol.loopexit, label %scalar.ph3912.prol, !llvm.loop !66

scalar.ph3912.prol.loopexit:                      ; preds = %scalar.ph3912.prol, %scalar.ph3912.preheader
  %.lcssa4192.unr = phi <2 x float> [ poison, %scalar.ph3912.preheader ], [ %1178, %scalar.ph3912.prol ]
  %indvars.iv2564.unr = phi i64 [ %indvars.iv2564.ph, %scalar.ph3912.preheader ], [ %indvars.iv.next2565.prol, %scalar.ph3912.prol ]
  %1179 = sub nsw i64 %indvars.iv2564.ph, %wide.trip.count2567
  %1180 = icmp ugt i64 %1179, -4
  br i1 %1180, label %._crit_edge2017, label %scalar.ph3912

scalar.ph3912:                                    ; preds = %scalar.ph3912.prol.loopexit, %scalar.ph3912
  %indvars.iv2564 = phi i64 [ %indvars.iv.next2565.3, %scalar.ph3912 ], [ %indvars.iv2564.unr, %scalar.ph3912.prol.loopexit ]
  %gep2778 = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %indvars.iv2564
  %gep2780 = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %indvars.iv2564
  %1181 = load <2 x float>, ptr %gep2778, align 4, !tbaa !9
  %1182 = load <2 x float>, ptr %gep2780, align 4, !tbaa !9
  %1183 = fadd <2 x float> %1181, %1182
  store <2 x float> %1183, ptr %gep2778, align 4, !tbaa !9
  %indvars.iv.next2565 = add nuw nsw i64 %indvars.iv2564, 1
  %gep2778.1 = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %indvars.iv.next2565
  %gep2780.1 = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %indvars.iv.next2565
  %1184 = load <2 x float>, ptr %gep2778.1, align 4, !tbaa !9
  %1185 = load <2 x float>, ptr %gep2780.1, align 4, !tbaa !9
  %1186 = fadd <2 x float> %1184, %1185
  store <2 x float> %1186, ptr %gep2778.1, align 4, !tbaa !9
  %indvars.iv.next2565.1 = add nuw nsw i64 %indvars.iv2564, 2
  %gep2778.2 = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %indvars.iv.next2565.1
  %gep2780.2 = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %indvars.iv.next2565.1
  %1187 = load <2 x float>, ptr %gep2778.2, align 4, !tbaa !9
  %1188 = load <2 x float>, ptr %gep2780.2, align 4, !tbaa !9
  %1189 = fadd <2 x float> %1187, %1188
  store <2 x float> %1189, ptr %gep2778.2, align 4, !tbaa !9
  %indvars.iv.next2565.2 = add nuw nsw i64 %indvars.iv2564, 3
  %gep2778.3 = getelementptr %struct.complex, ptr %invariant.gep2777, i64 %indvars.iv.next2565.2
  %gep2780.3 = getelementptr %struct.complex, ptr %invariant.gep2779, i64 %indvars.iv.next2565.2
  %1190 = load <2 x float>, ptr %gep2778.3, align 4, !tbaa !9
  %1191 = load <2 x float>, ptr %gep2780.3, align 4, !tbaa !9
  %1192 = fadd <2 x float> %1190, %1191
  store <2 x float> %1192, ptr %gep2778.3, align 4, !tbaa !9
  %indvars.iv.next2565.3 = add nuw nsw i64 %indvars.iv2564, 4
  %exitcond2568.not.3 = icmp eq i64 %indvars.iv.next2565.3, %wide.trip.count2567
  br i1 %exitcond2568.not.3, label %._crit_edge2017, label %scalar.ph3912, !llvm.loop !67

._crit_edge2017:                                  ; preds = %scalar.ph3912.prol.loopexit, %scalar.ph3912, %middle.block3911, %1165
  %1193 = phi <2 x float> [ %1166, %1165 ], [ %1174, %middle.block3911 ], [ %.lcssa4192.unr, %scalar.ph3912.prol.loopexit ], [ %1192, %scalar.ph3912 ]
  %indvars.iv.next2570 = add nuw nsw i64 %indvars.iv2569, 1
  %exitcond2573.not = icmp eq i64 %indvars.iv.next2570, %wide.trip.count2572
  br i1 %exitcond2573.not, label %._crit_edge2024.loopexit, label %1165, !llvm.loop !68

._crit_edge2024.loopexit:                         ; preds = %._crit_edge2017
  store <2 x float> %1193, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2024

._crit_edge2024:                                  ; preds = %._crit_edge2024.loopexit, %._crit_edge2012
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %1194 = load i32, ptr %6, align 4, !tbaa !5
  %.not18272032 = icmp slt i32 %1194, 1
  br i1 %.not18272032, label %._crit_edge2036, label %.lr.ph2035

.lr.ph2035:                                       ; preds = %._crit_edge2024
  %1195 = load i32, ptr %4, align 4, !tbaa !5
  %.not18302025 = icmp slt i32 %1195, 1
  %1196 = add i32 %1195, 1
  %1197 = sext i32 %24 to i64
  %1198 = sext i32 %30 to i64
  %1199 = add nuw i32 %1194, 1
  %wide.trip.count2582 = zext i32 %1199 to i64
  %wide.trip.count2577 = zext i32 %1196 to i64
  %1200 = shl nsw i64 %1197, 3
  %1201 = shl nsw i64 %25, 3
  %1202 = getelementptr i8, ptr %12, i64 %1200
  %1203 = getelementptr i8, ptr %1202, i64 %1201
  %scevgep3932 = getelementptr i8, ptr %1203, i64 8
  %1204 = shl nuw nsw i64 %wide.trip.count2582, 3
  %1205 = add nsw i64 %1204, -8
  %1206 = mul i64 %1205, %1197
  %1207 = shl nuw nsw i64 %wide.trip.count2577, 3
  %1208 = getelementptr i8, ptr %12, i64 %1206
  %1209 = getelementptr i8, ptr %1208, i64 %1201
  %1210 = getelementptr i8, ptr %1209, i64 %1207
  %scevgep3933 = getelementptr i8, ptr %1210, i64 -4
  %1211 = shl nsw i64 %1198, 3
  %1212 = shl nsw i64 %31, 3
  %1213 = getelementptr i8, ptr %16, i64 %1211
  %1214 = getelementptr i8, ptr %1213, i64 %1212
  %scevgep3934 = getelementptr i8, ptr %1214, i64 8
  %1215 = mul i64 %1205, %1198
  %1216 = getelementptr i8, ptr %16, i64 %1215
  %1217 = getelementptr i8, ptr %1216, i64 %1212
  %1218 = getelementptr i8, ptr %1217, i64 %1207
  %scevgep3935 = getelementptr i8, ptr %1218, i64 -4
  %1219 = getelementptr i8, ptr %12, i64 %1200
  %1220 = getelementptr i8, ptr %1219, i64 %1201
  %scevgep3936 = getelementptr i8, ptr %1220, i64 12
  %1221 = getelementptr i8, ptr %12, i64 %1206
  %1222 = getelementptr i8, ptr %1221, i64 %1201
  %scevgep3937 = getelementptr i8, ptr %1222, i64 %1207
  %1223 = getelementptr i8, ptr %16, i64 %1211
  %1224 = getelementptr i8, ptr %1223, i64 %1212
  %scevgep3938 = getelementptr i8, ptr %1224, i64 12
  %1225 = getelementptr i8, ptr %16, i64 %1215
  %1226 = getelementptr i8, ptr %1225, i64 %1212
  %scevgep3939 = getelementptr i8, ptr %1226, i64 %1207
  %1227 = add nsw i64 %wide.trip.count2577, -1
  %min.iters.check3953 = icmp ult i32 %1196, 7
  %bound03940 = icmp ult ptr %scevgep3932, %scevgep3935
  %bound13941 = icmp ult ptr %scevgep3934, %scevgep3933
  %found.conflict3942 = and i1 %bound03940, %bound13941
  %1228 = or i32 %24, %30
  %1229 = icmp slt i32 %1228, 0
  %1230 = or i1 %found.conflict3942, %1229
  %bound03945 = icmp ult ptr %scevgep3936, %scevgep3939
  %bound13946 = icmp ult ptr %scevgep3938, %scevgep3937
  %found.conflict3947 = and i1 %bound03945, %bound13946
  %1231 = or i32 %24, %30
  %1232 = icmp slt i32 %1231, 0
  %1233 = or i1 %found.conflict3947, %1232
  %conflict.rdx3950 = or i1 %1230, %1233
  %n.vec3956 = and i64 %1227, -2
  %ind.end3957 = or i64 %1227, 1
  %cmp.n3970 = icmp eq i64 %1227, %n.vec3956
  br label %1234

1234:                                             ; preds = %.lr.ph2035, %._crit_edge2029
  %indvars.iv2579 = phi i64 [ 1, %.lr.ph2035 ], [ %indvars.iv.next2580, %._crit_edge2029 ]
  br i1 %.not18302025, label %._crit_edge2029, label %.lr.ph2028

.lr.ph2028:                                       ; preds = %1234
  %1235 = mul nsw i64 %indvars.iv2579, %1197
  %1236 = mul nsw i64 %indvars.iv2579, %1198
  %invariant.gep2787 = getelementptr %struct.complex, ptr %26, i64 %1235
  %invariant.gep2789 = getelementptr %struct.complex, ptr %32, i64 %1236
  %brmerge4362 = select i1 %min.iters.check3953, i1 true, i1 %conflict.rdx3950
  br i1 %brmerge4362, label %scalar.ph3952.preheader, label %vector.body3959

vector.body3959:                                  ; preds = %.lr.ph2028, %vector.body3959
  %index3960 = phi i64 [ %index.next3969, %vector.body3959 ], [ 0, %.lr.ph2028 ]
  %offset.idx3961 = or disjoint i64 %index3960, 1
  %1237 = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %offset.idx3961
  %wide.vec3962 = load <4 x float>, ptr %1237, align 4, !tbaa !9
  %1238 = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %offset.idx3961
  %wide.vec3965 = load <4 x float>, ptr %1238, align 4, !tbaa !9
  %interleaved.vec3968 = fsub <4 x float> %wide.vec3962, %wide.vec3965
  store <4 x float> %interleaved.vec3968, ptr %1237, align 4, !tbaa !9
  %index.next3969 = add nuw i64 %index3960, 2
  %1239 = icmp eq i64 %index.next3969, %n.vec3956
  br i1 %1239, label %middle.block3951, label %vector.body3959, !llvm.loop !69

middle.block3951:                                 ; preds = %vector.body3959
  br i1 %cmp.n3970, label %._crit_edge2029, label %scalar.ph3952.preheader

scalar.ph3952.preheader:                          ; preds = %.lr.ph2028, %middle.block3951
  %indvars.iv2574.ph = phi i64 [ 1, %.lr.ph2028 ], [ %ind.end3957, %middle.block3951 ]
  %1240 = sub nsw i64 %wide.trip.count2577, %indvars.iv2574.ph
  %xtraiter4299 = and i64 %1240, 3
  %lcmp.mod4300.not = icmp eq i64 %xtraiter4299, 0
  br i1 %lcmp.mod4300.not, label %scalar.ph3952.prol.loopexit, label %scalar.ph3952.prol

scalar.ph3952.prol:                               ; preds = %scalar.ph3952.preheader, %scalar.ph3952.prol
  %indvars.iv2574.prol = phi i64 [ %indvars.iv.next2575.prol, %scalar.ph3952.prol ], [ %indvars.iv2574.ph, %scalar.ph3952.preheader ]
  %prol.iter4301 = phi i64 [ %prol.iter4301.next, %scalar.ph3952.prol ], [ 0, %scalar.ph3952.preheader ]
  %gep2788.prol = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %indvars.iv2574.prol
  %gep2790.prol = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %indvars.iv2574.prol
  %1241 = load <2 x float>, ptr %gep2788.prol, align 4, !tbaa !9
  %1242 = load <2 x float>, ptr %gep2790.prol, align 4, !tbaa !9
  %1243 = fsub <2 x float> %1241, %1242
  store <2 x float> %1243, ptr %gep2788.prol, align 4, !tbaa !9
  %indvars.iv.next2575.prol = add nuw nsw i64 %indvars.iv2574.prol, 1
  %prol.iter4301.next = add i64 %prol.iter4301, 1
  %prol.iter4301.cmp.not = icmp eq i64 %prol.iter4301.next, %xtraiter4299
  br i1 %prol.iter4301.cmp.not, label %scalar.ph3952.prol.loopexit, label %scalar.ph3952.prol, !llvm.loop !70

scalar.ph3952.prol.loopexit:                      ; preds = %scalar.ph3952.prol, %scalar.ph3952.preheader
  %indvars.iv2574.unr = phi i64 [ %indvars.iv2574.ph, %scalar.ph3952.preheader ], [ %indvars.iv.next2575.prol, %scalar.ph3952.prol ]
  %1244 = sub nsw i64 %indvars.iv2574.ph, %wide.trip.count2577
  %1245 = icmp ugt i64 %1244, -4
  br i1 %1245, label %._crit_edge2029, label %scalar.ph3952

scalar.ph3952:                                    ; preds = %scalar.ph3952.prol.loopexit, %scalar.ph3952
  %indvars.iv2574 = phi i64 [ %indvars.iv.next2575.3, %scalar.ph3952 ], [ %indvars.iv2574.unr, %scalar.ph3952.prol.loopexit ]
  %gep2788 = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %indvars.iv2574
  %gep2790 = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %indvars.iv2574
  %1246 = load <2 x float>, ptr %gep2788, align 4, !tbaa !9
  %1247 = load <2 x float>, ptr %gep2790, align 4, !tbaa !9
  %1248 = fsub <2 x float> %1246, %1247
  store <2 x float> %1248, ptr %gep2788, align 4, !tbaa !9
  %indvars.iv.next2575 = add nuw nsw i64 %indvars.iv2574, 1
  %gep2788.1 = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %indvars.iv.next2575
  %gep2790.1 = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %indvars.iv.next2575
  %1249 = load <2 x float>, ptr %gep2788.1, align 4, !tbaa !9
  %1250 = load <2 x float>, ptr %gep2790.1, align 4, !tbaa !9
  %1251 = fsub <2 x float> %1249, %1250
  store <2 x float> %1251, ptr %gep2788.1, align 4, !tbaa !9
  %indvars.iv.next2575.1 = add nuw nsw i64 %indvars.iv2574, 2
  %gep2788.2 = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %indvars.iv.next2575.1
  %gep2790.2 = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %indvars.iv.next2575.1
  %1252 = load <2 x float>, ptr %gep2788.2, align 4, !tbaa !9
  %1253 = load <2 x float>, ptr %gep2790.2, align 4, !tbaa !9
  %1254 = fsub <2 x float> %1252, %1253
  store <2 x float> %1254, ptr %gep2788.2, align 4, !tbaa !9
  %indvars.iv.next2575.2 = add nuw nsw i64 %indvars.iv2574, 3
  %gep2788.3 = getelementptr %struct.complex, ptr %invariant.gep2787, i64 %indvars.iv.next2575.2
  %gep2790.3 = getelementptr %struct.complex, ptr %invariant.gep2789, i64 %indvars.iv.next2575.2
  %1255 = load <2 x float>, ptr %gep2788.3, align 4, !tbaa !9
  %1256 = load <2 x float>, ptr %gep2790.3, align 4, !tbaa !9
  %1257 = fsub <2 x float> %1255, %1256
  store <2 x float> %1257, ptr %gep2788.3, align 4, !tbaa !9
  %indvars.iv.next2575.3 = add nuw nsw i64 %indvars.iv2574, 4
  %exitcond2578.not.3 = icmp eq i64 %indvars.iv.next2575.3, %wide.trip.count2577
  br i1 %exitcond2578.not.3, label %._crit_edge2029, label %scalar.ph3952, !llvm.loop !71

._crit_edge2029:                                  ; preds = %scalar.ph3952.prol.loopexit, %scalar.ph3952, %middle.block3951, %1234
  %indvars.iv.next2580 = add nuw nsw i64 %indvars.iv2579, 1
  %exitcond2583.not = icmp eq i64 %indvars.iv.next2580, %wide.trip.count2582
  br i1 %exitcond2583.not, label %._crit_edge2036, label %1234, !llvm.loop !72

._crit_edge2036:                                  ; preds = %._crit_edge2029, %._crit_edge2024
  %1258 = load i32, ptr %5, align 4, !tbaa !5
  %1259 = load i32, ptr %7, align 4, !tbaa !5
  %1260 = sub nsw i32 %1258, %1259
  store i32 %1260, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %1261 = add nsw i32 %.1871, %21
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds %struct.complex, ptr %23, i64 %1262
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %1263, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %1117, ptr noundef nonnull %15) #3
  %1264 = load i32, ptr %6, align 4, !tbaa !5
  %1265 = load i32, ptr %7, align 4, !tbaa !5
  %1266 = sub nsw i32 %1264, %1265
  store i32 %1266, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %1106, ptr noundef nonnull %9, ptr noundef %1110, ptr noundef nonnull %17) #3
  %1267 = load i32, ptr %7, align 4, !tbaa !5
  %.not18282044 = icmp slt i32 %1267, 1
  br i1 %.not18282044, label %.thread1900, label %.lr.ph2047

.lr.ph2047:                                       ; preds = %._crit_edge2036
  %1268 = load i32, ptr %4, align 4, !tbaa !5
  %.not18292037 = icmp slt i32 %1268, 1
  %1269 = add i32 %1268, 1
  %1270 = sext i32 %27 to i64
  %1271 = add nuw i32 %1267, 1
  %wide.trip.count2592 = zext i32 %1271 to i64
  %wide.trip.count2587 = zext i32 %1269 to i64
  %1272 = shl nsw i64 %1270, 3
  %1273 = shl nsw i64 %28, 3
  %1274 = getelementptr i8, ptr %14, i64 %1272
  %1275 = getelementptr i8, ptr %1274, i64 %1273
  %scevgep3972 = getelementptr i8, ptr %1275, i64 8
  %1276 = shl nuw nsw i64 %wide.trip.count2592, 3
  %1277 = add nsw i64 %1276, -8
  %1278 = mul i64 %1277, %1270
  %1279 = shl nuw nsw i64 %wide.trip.count2587, 3
  %1280 = getelementptr i8, ptr %14, i64 %1278
  %1281 = getelementptr i8, ptr %1280, i64 %1273
  %1282 = getelementptr i8, ptr %1281, i64 %1279
  %scevgep3973 = getelementptr i8, ptr %1282, i64 -4
  %1283 = shl nsw i64 %31, 3
  %1284 = getelementptr i8, ptr %16, i64 %1283
  %scevgep3974 = getelementptr i8, ptr %1284, i64 8
  %1285 = getelementptr i8, ptr %16, i64 %1283
  %1286 = getelementptr i8, ptr %1285, i64 %1279
  %scevgep3976 = getelementptr i8, ptr %1286, i64 -4
  %1287 = getelementptr i8, ptr %14, i64 %1272
  %1288 = getelementptr i8, ptr %1287, i64 %1273
  %scevgep3978 = getelementptr i8, ptr %1288, i64 12
  %1289 = getelementptr i8, ptr %14, i64 %1278
  %1290 = getelementptr i8, ptr %1289, i64 %1273
  %scevgep3979 = getelementptr i8, ptr %1290, i64 %1279
  %1291 = getelementptr i8, ptr %16, i64 %1283
  %scevgep3980 = getelementptr i8, ptr %1291, i64 12
  %1292 = getelementptr i8, ptr %16, i64 %1283
  %scevgep3982 = getelementptr i8, ptr %1292, i64 %1279
  %1293 = add nsw i64 %wide.trip.count2587, -1
  %min.iters.check3995 = icmp ult i32 %1269, 7
  %stride.check3991 = icmp slt i32 %27, 0
  %n.vec3998 = and i64 %1293, -2
  %ind.end3999 = or i64 %1293, 1
  %cmp.n4012 = icmp eq i64 %1293, %n.vec3998
  br label %1294

1294:                                             ; preds = %.lr.ph2047, %._crit_edge2041
  %indvars.iv2589 = phi i64 [ 1, %.lr.ph2047 ], [ %indvars.iv.next2590, %._crit_edge2041 ]
  br i1 %.not18292037, label %._crit_edge2041, label %.lr.ph2040

.lr.ph2040:                                       ; preds = %1294
  %1295 = mul nsw i64 %indvars.iv2589, %1270
  %1296 = load i32, ptr %6, align 4, !tbaa !5
  %1297 = trunc i64 %indvars.iv2589 to i32
  %1298 = sub i32 %1297, %1267
  %1299 = add i32 %1298, %1296
  %1300 = mul nsw i32 %1299, %30
  %1301 = sext i32 %1300 to i64
  %invariant.gep2791 = getelementptr %struct.complex, ptr %29, i64 %1295
  %invariant.gep2793 = getelementptr %struct.complex, ptr %32, i64 %1301
  br i1 %min.iters.check3995, label %scalar.ph3994.preheader, label %vector.memcheck3971

vector.memcheck3971:                              ; preds = %.lr.ph2040
  %1302 = shl nsw i64 %1301, 3
  %scevgep3975 = getelementptr i8, ptr %scevgep3974, i64 %1302
  %scevgep3977 = getelementptr i8, ptr %scevgep3976, i64 %1302
  %scevgep3981 = getelementptr i8, ptr %scevgep3980, i64 %1302
  %scevgep3983 = getelementptr i8, ptr %scevgep3982, i64 %1302
  %bound03984 = icmp ult ptr %scevgep3972, %scevgep3977
  %bound13985 = icmp ult ptr %scevgep3975, %scevgep3973
  %found.conflict3986 = and i1 %bound03984, %bound13985
  %bound03988 = icmp ult ptr %scevgep3978, %scevgep3983
  %bound13989 = icmp ult ptr %scevgep3981, %scevgep3979
  %found.conflict3990 = and i1 %bound03988, %bound13989
  %1303 = or i1 %found.conflict3990, %stride.check3991
  %conflict.rdx3992 = or i1 %found.conflict3986, %1303
  br i1 %conflict.rdx3992, label %scalar.ph3994.preheader, label %vector.body4001

vector.body4001:                                  ; preds = %vector.memcheck3971, %vector.body4001
  %index4002 = phi i64 [ %index.next4011, %vector.body4001 ], [ 0, %vector.memcheck3971 ]
  %offset.idx4003 = or disjoint i64 %index4002, 1
  %1304 = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %offset.idx4003
  %wide.vec4004 = load <4 x float>, ptr %1304, align 4, !tbaa !9
  %1305 = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %offset.idx4003
  %wide.vec4007 = load <4 x float>, ptr %1305, align 4, !tbaa !9
  %interleaved.vec4010 = fsub <4 x float> %wide.vec4004, %wide.vec4007
  store <4 x float> %interleaved.vec4010, ptr %1304, align 4, !tbaa !9
  %index.next4011 = add nuw i64 %index4002, 2
  %1306 = icmp eq i64 %index.next4011, %n.vec3998
  br i1 %1306, label %middle.block3993, label %vector.body4001, !llvm.loop !73

middle.block3993:                                 ; preds = %vector.body4001
  br i1 %cmp.n4012, label %._crit_edge2041, label %scalar.ph3994.preheader

scalar.ph3994.preheader:                          ; preds = %middle.block3993, %vector.memcheck3971, %.lr.ph2040
  %indvars.iv2584.ph = phi i64 [ 1, %vector.memcheck3971 ], [ 1, %.lr.ph2040 ], [ %ind.end3999, %middle.block3993 ]
  %1307 = sub nsw i64 %wide.trip.count2587, %indvars.iv2584.ph
  %xtraiter4302 = and i64 %1307, 3
  %lcmp.mod4303.not = icmp eq i64 %xtraiter4302, 0
  br i1 %lcmp.mod4303.not, label %scalar.ph3994.prol.loopexit, label %scalar.ph3994.prol

scalar.ph3994.prol:                               ; preds = %scalar.ph3994.preheader, %scalar.ph3994.prol
  %indvars.iv2584.prol = phi i64 [ %indvars.iv.next2585.prol, %scalar.ph3994.prol ], [ %indvars.iv2584.ph, %scalar.ph3994.preheader ]
  %prol.iter4304 = phi i64 [ %prol.iter4304.next, %scalar.ph3994.prol ], [ 0, %scalar.ph3994.preheader ]
  %gep2792.prol = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %indvars.iv2584.prol
  %gep2794.prol = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %indvars.iv2584.prol
  %1308 = load <2 x float>, ptr %gep2792.prol, align 4, !tbaa !9
  %1309 = load <2 x float>, ptr %gep2794.prol, align 4, !tbaa !9
  %1310 = fsub <2 x float> %1308, %1309
  store <2 x float> %1310, ptr %gep2792.prol, align 4, !tbaa !9
  %indvars.iv.next2585.prol = add nuw nsw i64 %indvars.iv2584.prol, 1
  %prol.iter4304.next = add i64 %prol.iter4304, 1
  %prol.iter4304.cmp.not = icmp eq i64 %prol.iter4304.next, %xtraiter4302
  br i1 %prol.iter4304.cmp.not, label %scalar.ph3994.prol.loopexit, label %scalar.ph3994.prol, !llvm.loop !74

scalar.ph3994.prol.loopexit:                      ; preds = %scalar.ph3994.prol, %scalar.ph3994.preheader
  %indvars.iv2584.unr = phi i64 [ %indvars.iv2584.ph, %scalar.ph3994.preheader ], [ %indvars.iv.next2585.prol, %scalar.ph3994.prol ]
  %1311 = sub nsw i64 %indvars.iv2584.ph, %wide.trip.count2587
  %1312 = icmp ugt i64 %1311, -4
  br i1 %1312, label %._crit_edge2041, label %scalar.ph3994

scalar.ph3994:                                    ; preds = %scalar.ph3994.prol.loopexit, %scalar.ph3994
  %indvars.iv2584 = phi i64 [ %indvars.iv.next2585.3, %scalar.ph3994 ], [ %indvars.iv2584.unr, %scalar.ph3994.prol.loopexit ]
  %gep2792 = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %indvars.iv2584
  %gep2794 = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %indvars.iv2584
  %1313 = load <2 x float>, ptr %gep2792, align 4, !tbaa !9
  %1314 = load <2 x float>, ptr %gep2794, align 4, !tbaa !9
  %1315 = fsub <2 x float> %1313, %1314
  store <2 x float> %1315, ptr %gep2792, align 4, !tbaa !9
  %indvars.iv.next2585 = add nuw nsw i64 %indvars.iv2584, 1
  %gep2792.1 = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %indvars.iv.next2585
  %gep2794.1 = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %indvars.iv.next2585
  %1316 = load <2 x float>, ptr %gep2792.1, align 4, !tbaa !9
  %1317 = load <2 x float>, ptr %gep2794.1, align 4, !tbaa !9
  %1318 = fsub <2 x float> %1316, %1317
  store <2 x float> %1318, ptr %gep2792.1, align 4, !tbaa !9
  %indvars.iv.next2585.1 = add nuw nsw i64 %indvars.iv2584, 2
  %gep2792.2 = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %indvars.iv.next2585.1
  %gep2794.2 = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %indvars.iv.next2585.1
  %1319 = load <2 x float>, ptr %gep2792.2, align 4, !tbaa !9
  %1320 = load <2 x float>, ptr %gep2794.2, align 4, !tbaa !9
  %1321 = fsub <2 x float> %1319, %1320
  store <2 x float> %1321, ptr %gep2792.2, align 4, !tbaa !9
  %indvars.iv.next2585.2 = add nuw nsw i64 %indvars.iv2584, 3
  %gep2792.3 = getelementptr %struct.complex, ptr %invariant.gep2791, i64 %indvars.iv.next2585.2
  %gep2794.3 = getelementptr %struct.complex, ptr %invariant.gep2793, i64 %indvars.iv.next2585.2
  %1322 = load <2 x float>, ptr %gep2792.3, align 4, !tbaa !9
  %1323 = load <2 x float>, ptr %gep2794.3, align 4, !tbaa !9
  %1324 = fsub <2 x float> %1322, %1323
  store <2 x float> %1324, ptr %gep2792.3, align 4, !tbaa !9
  %indvars.iv.next2585.3 = add nuw nsw i64 %indvars.iv2584, 4
  %exitcond2588.not.3 = icmp eq i64 %indvars.iv.next2585.3, %wide.trip.count2587
  br i1 %exitcond2588.not.3, label %._crit_edge2041, label %scalar.ph3994, !llvm.loop !75

._crit_edge2041:                                  ; preds = %scalar.ph3994.prol.loopexit, %scalar.ph3994, %middle.block3993, %1294
  %indvars.iv.next2590 = add nuw nsw i64 %indvars.iv2589, 1
  %exitcond2593.not = icmp eq i64 %indvars.iv.next2590, %wide.trip.count2592
  br i1 %exitcond2593.not, label %.thread1900, label %1294, !llvm.loop !76

1325:                                             ; preds = %412
  %or.cond19 = and i1 %.not1779, %49
  br i1 %or.cond19, label %1326, label %1681

1326:                                             ; preds = %1325
  %1327 = load i32, ptr %4, align 4, !tbaa !5
  %1328 = load i32, ptr %7, align 4, !tbaa !5
  %1329 = sub nsw i32 %1327, %1328
  %1330 = add nsw i32 %1329, 1
  %.not1813.not = icmp sgt i32 %1328, 0
  %.1872 = select i1 %.not1813.not, i32 %1330, i32 %1327
  %1331 = add i32 %1328, 1
  %1332 = load i32, ptr %6, align 4, !tbaa !5
  %.not1814.not = icmp slt i32 %1328, %1332
  %1333 = select i1 %.not1814.not, i32 %1331, i32 %1332
  %1334 = load i32, ptr %5, align 4, !tbaa !5
  %.not18152139 = icmp slt i32 %1334, 1
  br i1 %.not18152139, label %._crit_edge2141, label %.preheader1912.lr.ph

.preheader1912.lr.ph:                             ; preds = %1326
  %.not18222135 = icmp slt i32 %1328, 1
  %1335 = sext i32 %30 to i64
  %1336 = add nuw i32 %1334, 1
  %wide.trip.count2362 = zext i32 %1336 to i64
  %wide.trip.count2357 = zext i32 %1331 to i64
  %1337 = add nsw i64 %wide.trip.count2357, -2
  %1338 = add i32 %27, %1327
  %1339 = add i32 %1338, 1
  %1340 = sub i32 %1339, %1328
  %1341 = shl nsw i64 %1335, 3
  %1342 = shl nsw i64 %31, 3
  %1343 = getelementptr i8, ptr %16, i64 %1341
  %1344 = getelementptr i8, ptr %1343, i64 %1342
  %scevgep2980 = getelementptr i8, ptr %1344, i64 8
  %1345 = shl nuw nsw i64 %wide.trip.count2362, 3
  %1346 = add nsw i64 %1345, -8
  %1347 = mul i64 %1346, %1335
  %1348 = shl nuw nsw i64 %wide.trip.count2357, 3
  %1349 = getelementptr i8, ptr %16, i64 %1347
  %1350 = getelementptr i8, ptr %1349, i64 %1342
  %1351 = getelementptr i8, ptr %1350, i64 %1348
  %scevgep2981 = getelementptr i8, ptr %1351, i64 -4
  %1352 = shl nsw i64 %28, 3
  %scevgep2982 = getelementptr i8, ptr %14, i64 %1352
  %1353 = add i32 %27, %1327
  %1354 = add i32 %1353, 1
  %1355 = sub i32 %1354, %1328
  %1356 = getelementptr i8, ptr %14, i64 %1352
  %1357 = getelementptr i8, ptr %1356, i64 %1348
  %scevgep2984 = getelementptr i8, ptr %1357, i64 -12
  %1358 = getelementptr i8, ptr %16, i64 %1341
  %1359 = getelementptr i8, ptr %1358, i64 %1342
  %scevgep2986 = getelementptr i8, ptr %1359, i64 12
  %1360 = getelementptr i8, ptr %16, i64 %1347
  %1361 = getelementptr i8, ptr %1360, i64 %1342
  %scevgep2987 = getelementptr i8, ptr %1361, i64 %1348
  %1362 = or disjoint i64 %1352, 4
  %scevgep2988 = getelementptr i8, ptr %14, i64 %1362
  %1363 = getelementptr i8, ptr %14, i64 %1352
  %1364 = getelementptr i8, ptr %1363, i64 %1348
  %scevgep2990 = getelementptr i8, ptr %1364, i64 -8
  %1365 = add nsw i64 %wide.trip.count2357, -1
  %min.iters.check3003 = icmp ult i32 %1331, 13
  %1366 = trunc i64 %1337 to i32
  %1367 = icmp ugt i64 %1337, 4294967295
  %stride.check2999 = icmp slt i32 %30, 0
  %n.vec3006 = and i64 %1365, -4
  %ind.end3007 = or disjoint i64 %n.vec3006, 1
  %cmp.n3022 = icmp eq i64 %1365, %n.vec3006
  br label %.preheader1912

.preheader1912:                                   ; preds = %.preheader1912.lr.ph, %._crit_edge2138
  %indvar2977 = phi i32 [ 0, %.preheader1912.lr.ph ], [ %indvar.next2978, %._crit_edge2138 ]
  %indvars.iv2359 = phi i64 [ 1, %.preheader1912.lr.ph ], [ %indvars.iv.next2360, %._crit_edge2138 ]
  %1368 = mul i32 %27, %indvar2977
  %1369 = add i32 %1355, %1368
  %1370 = sext i32 %1369 to i64
  %1371 = shl nsw i64 %1370, 3
  %scevgep2983 = getelementptr i8, ptr %scevgep2982, i64 %1371
  %scevgep2985 = getelementptr i8, ptr %scevgep2984, i64 %1371
  %scevgep2989 = getelementptr i8, ptr %scevgep2988, i64 %1371
  %scevgep2991 = getelementptr i8, ptr %scevgep2990, i64 %1371
  %1372 = mul i32 %27, %indvar2977
  %1373 = add i32 %1340, %1372
  br i1 %.not18222135, label %._crit_edge2138, label %.lr.ph2137

.lr.ph2137:                                       ; preds = %.preheader1912
  %1374 = mul nsw i64 %indvars.iv2359, %1335
  %1375 = trunc i64 %indvars.iv2359 to i32
  %1376 = mul i32 %27, %1375
  %1377 = add i32 %1376, %1329
  %invariant.gep2675 = getelementptr %struct.complex, ptr %32, i64 %1374
  br i1 %min.iters.check3003, label %scalar.ph3002.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph2137
  %1378 = add i32 %1373, %1366
  %1379 = icmp slt i32 %1378, %1373
  %1380 = or i1 %1379, %1367
  br i1 %1380, label %scalar.ph3002.preheader, label %vector.memcheck2979

vector.memcheck2979:                              ; preds = %vector.scevcheck
  %bound02992 = icmp ult ptr %scevgep2980, %scevgep2985
  %bound12993 = icmp ult ptr %scevgep2983, %scevgep2981
  %found.conflict2994 = and i1 %bound02992, %bound12993
  %bound02996 = icmp ult ptr %scevgep2986, %scevgep2991
  %bound12997 = icmp ult ptr %scevgep2989, %scevgep2987
  %found.conflict2998 = and i1 %bound02996, %bound12997
  %1381 = or i1 %found.conflict2998, %stride.check2999
  %conflict.rdx3000 = or i1 %found.conflict2994, %1381
  br i1 %conflict.rdx3000, label %scalar.ph3002.preheader, label %vector.body3009

vector.body3009:                                  ; preds = %vector.memcheck2979, %vector.body3009
  %index3010 = phi i64 [ %index.next3021, %vector.body3009 ], [ 0, %vector.memcheck2979 ]
  %offset.idx3011 = or disjoint i64 %index3010, 1
  %1382 = or disjoint i64 %index3010, 3
  %1383 = trunc i64 %index3010 to i32
  %1384 = or disjoint i32 %1383, 1
  %1385 = or disjoint i32 %1383, 3
  %1386 = add i32 %1377, %1384
  %1387 = add i32 %1377, %1385
  %1388 = sext i32 %1386 to i64
  %1389 = sext i32 %1387 to i64
  %1390 = getelementptr inbounds %struct.complex, ptr %29, i64 %1388
  %1391 = getelementptr inbounds %struct.complex, ptr %29, i64 %1389
  %wide.vec3013 = load <4 x float>, ptr %1390, align 4, !tbaa !9
  %wide.vec3014 = load <4 x float>, ptr %1391, align 4, !tbaa !9
  %1392 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %offset.idx3011
  %1393 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %1382
  store <4 x float> %wide.vec3013, ptr %1392, align 4, !tbaa !9
  store <4 x float> %wide.vec3014, ptr %1393, align 4, !tbaa !9
  %index.next3021 = add nuw i64 %index3010, 4
  %1394 = icmp eq i64 %index.next3021, %n.vec3006
  br i1 %1394, label %middle.block3001, label %vector.body3009, !llvm.loop !77

middle.block3001:                                 ; preds = %vector.body3009
  br i1 %cmp.n3022, label %._crit_edge2138, label %scalar.ph3002.preheader

scalar.ph3002.preheader:                          ; preds = %middle.block3001, %vector.memcheck2979, %vector.scevcheck, %.lr.ph2137
  %indvars.iv2354.ph = phi i64 [ 1, %vector.memcheck2979 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph2137 ], [ %ind.end3007, %middle.block3001 ]
  %1395 = sub nsw i64 %wide.trip.count2357, %indvars.iv2354.ph
  %xtraiter4233 = and i64 %1395, 3
  %lcmp.mod4234.not = icmp eq i64 %xtraiter4233, 0
  br i1 %lcmp.mod4234.not, label %scalar.ph3002.prol.loopexit, label %scalar.ph3002.prol

scalar.ph3002.prol:                               ; preds = %scalar.ph3002.preheader, %scalar.ph3002.prol
  %indvars.iv2354.prol = phi i64 [ %indvars.iv.next2355.prol, %scalar.ph3002.prol ], [ %indvars.iv2354.ph, %scalar.ph3002.preheader ]
  %prol.iter4235 = phi i64 [ %prol.iter4235.next, %scalar.ph3002.prol ], [ 0, %scalar.ph3002.preheader ]
  %1396 = trunc nuw nsw i64 %indvars.iv2354.prol to i32
  %1397 = add i32 %1377, %1396
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds %struct.complex, ptr %29, i64 %1398
  %gep2676.prol = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %indvars.iv2354.prol
  %1400 = load <2 x float>, ptr %1399, align 4, !tbaa !9
  store <2 x float> %1400, ptr %gep2676.prol, align 4, !tbaa !9
  %indvars.iv.next2355.prol = add nuw nsw i64 %indvars.iv2354.prol, 1
  %prol.iter4235.next = add i64 %prol.iter4235, 1
  %prol.iter4235.cmp.not = icmp eq i64 %prol.iter4235.next, %xtraiter4233
  br i1 %prol.iter4235.cmp.not, label %scalar.ph3002.prol.loopexit, label %scalar.ph3002.prol, !llvm.loop !78

scalar.ph3002.prol.loopexit:                      ; preds = %scalar.ph3002.prol, %scalar.ph3002.preheader
  %indvars.iv2354.unr = phi i64 [ %indvars.iv2354.ph, %scalar.ph3002.preheader ], [ %indvars.iv.next2355.prol, %scalar.ph3002.prol ]
  %1401 = sub nsw i64 %indvars.iv2354.ph, %wide.trip.count2357
  %1402 = icmp ugt i64 %1401, -4
  br i1 %1402, label %._crit_edge2138, label %scalar.ph3002

scalar.ph3002:                                    ; preds = %scalar.ph3002.prol.loopexit, %scalar.ph3002
  %indvars.iv2354 = phi i64 [ %indvars.iv.next2355.3, %scalar.ph3002 ], [ %indvars.iv2354.unr, %scalar.ph3002.prol.loopexit ]
  %1403 = trunc nuw nsw i64 %indvars.iv2354 to i32
  %1404 = add i32 %1377, %1403
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds %struct.complex, ptr %29, i64 %1405
  %gep2676 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %indvars.iv2354
  %1407 = load <2 x float>, ptr %1406, align 4, !tbaa !9
  store <2 x float> %1407, ptr %gep2676, align 4, !tbaa !9
  %indvars.iv.next2355 = add nuw nsw i64 %indvars.iv2354, 1
  %1408 = trunc nuw nsw i64 %indvars.iv.next2355 to i32
  %1409 = add i32 %1377, %1408
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds %struct.complex, ptr %29, i64 %1410
  %gep2676.1 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %indvars.iv.next2355
  %1412 = load <2 x float>, ptr %1411, align 4, !tbaa !9
  store <2 x float> %1412, ptr %gep2676.1, align 4, !tbaa !9
  %indvars.iv.next2355.1 = add nuw nsw i64 %indvars.iv2354, 2
  %1413 = trunc nuw nsw i64 %indvars.iv.next2355.1 to i32
  %1414 = add i32 %1377, %1413
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds %struct.complex, ptr %29, i64 %1415
  %gep2676.2 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %indvars.iv.next2355.1
  %1417 = load <2 x float>, ptr %1416, align 4, !tbaa !9
  store <2 x float> %1417, ptr %gep2676.2, align 4, !tbaa !9
  %indvars.iv.next2355.2 = add nuw nsw i64 %indvars.iv2354, 3
  %1418 = trunc nuw nsw i64 %indvars.iv.next2355.2 to i32
  %1419 = add i32 %1377, %1418
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds %struct.complex, ptr %29, i64 %1420
  %gep2676.3 = getelementptr %struct.complex, ptr %invariant.gep2675, i64 %indvars.iv.next2355.2
  %1422 = load <2 x float>, ptr %1421, align 4, !tbaa !9
  store <2 x float> %1422, ptr %gep2676.3, align 4, !tbaa !9
  %indvars.iv.next2355.3 = add nuw nsw i64 %indvars.iv2354, 4
  %exitcond2358.not.3 = icmp eq i64 %indvars.iv.next2355.3, %wide.trip.count2357
  br i1 %exitcond2358.not.3, label %._crit_edge2138, label %scalar.ph3002, !llvm.loop !79

._crit_edge2138:                                  ; preds = %scalar.ph3002.prol.loopexit, %scalar.ph3002, %middle.block3001, %.preheader1912
  %indvars.iv.next2360 = add nuw nsw i64 %indvars.iv2359, 1
  %exitcond2363.not = icmp eq i64 %indvars.iv.next2360, %wide.trip.count2362
  %indvar.next2978 = add i32 %indvar2977, 1
  br i1 %exitcond2363.not, label %._crit_edge2141, label %.preheader1912, !llvm.loop !80

._crit_edge2141:                                  ; preds = %._crit_edge2138, %1326
  %1423 = mul nsw i32 %.1872, %21
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr %struct.complex, ptr %23, i64 %1424
  %1426 = getelementptr i8, ptr %1425, i64 8
  tail call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %1426, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %15) #3
  %1427 = load i32, ptr %4, align 4, !tbaa !5
  %1428 = load i32, ptr %7, align 4, !tbaa !5
  %1429 = sub nsw i32 %1427, %1428
  store i32 %1429, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull %17) #3
  %1430 = load i32, ptr %6, align 4, !tbaa !5
  %1431 = load i32, ptr %7, align 4, !tbaa !5
  %1432 = sub nsw i32 %1430, %1431
  store i32 %1432, ptr %19, align 4, !tbaa !5
  %1433 = add nsw i32 %1333, %21
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds %struct.complex, ptr %23, i64 %1434
  %1436 = add nsw i32 %1333, %30
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds %struct.complex, ptr %32, i64 %1437
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef %1435, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b2, ptr noundef %1438, ptr noundef nonnull %17) #3
  %1439 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %1439, ptr %19, align 4, !tbaa !5
  %.not18162149 = icmp slt i32 %1439, 1
  br i1 %.not18162149, label %._crit_edge2153, label %.lr.ph2152

.lr.ph2152:                                       ; preds = %._crit_edge2141
  %1440 = load i32, ptr %6, align 4, !tbaa !5
  %.not18212142 = icmp slt i32 %1440, 1
  %1441 = add i32 %1440, 1
  %1442 = sext i32 %30 to i64
  %1443 = sext i32 %24 to i64
  %1444 = add nuw i32 %1439, 1
  %wide.trip.count2372 = zext i32 %1444 to i64
  %wide.trip.count2367 = zext i32 %1441 to i64
  %1445 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %1446 = shl nsw i64 %1442, 3
  %1447 = shl nsw i64 %31, 3
  %1448 = getelementptr i8, ptr %16, i64 %1446
  %1449 = getelementptr i8, ptr %1448, i64 %1447
  %scevgep3024 = getelementptr i8, ptr %1449, i64 8
  %1450 = shl nuw nsw i64 %wide.trip.count2372, 3
  %1451 = add nsw i64 %1450, -8
  %1452 = mul i64 %1451, %1442
  %1453 = shl nuw nsw i64 %wide.trip.count2367, 3
  %1454 = getelementptr i8, ptr %16, i64 %1452
  %1455 = getelementptr i8, ptr %1454, i64 %1447
  %1456 = getelementptr i8, ptr %1455, i64 %1453
  %scevgep3025 = getelementptr i8, ptr %1456, i64 -4
  %1457 = shl nsw i64 %1443, 3
  %1458 = shl nsw i64 %25, 3
  %1459 = getelementptr i8, ptr %12, i64 %1457
  %1460 = getelementptr i8, ptr %1459, i64 %1458
  %scevgep3026 = getelementptr i8, ptr %1460, i64 8
  %1461 = mul i64 %1451, %1443
  %1462 = getelementptr i8, ptr %12, i64 %1461
  %1463 = getelementptr i8, ptr %1462, i64 %1458
  %1464 = getelementptr i8, ptr %1463, i64 %1453
  %scevgep3027 = getelementptr i8, ptr %1464, i64 -4
  %1465 = getelementptr i8, ptr %16, i64 %1446
  %1466 = getelementptr i8, ptr %1465, i64 %1447
  %scevgep3028 = getelementptr i8, ptr %1466, i64 12
  %1467 = getelementptr i8, ptr %16, i64 %1452
  %1468 = getelementptr i8, ptr %1467, i64 %1447
  %scevgep3029 = getelementptr i8, ptr %1468, i64 %1453
  %1469 = getelementptr i8, ptr %12, i64 %1457
  %1470 = getelementptr i8, ptr %1469, i64 %1458
  %scevgep3030 = getelementptr i8, ptr %1470, i64 12
  %1471 = getelementptr i8, ptr %12, i64 %1461
  %1472 = getelementptr i8, ptr %1471, i64 %1458
  %scevgep3031 = getelementptr i8, ptr %1472, i64 %1453
  %1473 = add nsw i64 %wide.trip.count2367, -1
  %min.iters.check3045 = icmp ult i32 %1441, 7
  %bound03032 = icmp ult ptr %scevgep3024, %scevgep3027
  %bound13033 = icmp ult ptr %scevgep3026, %scevgep3025
  %found.conflict3034 = and i1 %bound03032, %bound13033
  %1474 = or i32 %30, %24
  %1475 = icmp slt i32 %1474, 0
  %1476 = or i1 %found.conflict3034, %1475
  %bound03037 = icmp ult ptr %scevgep3028, %scevgep3031
  %bound13038 = icmp ult ptr %scevgep3030, %scevgep3029
  %found.conflict3039 = and i1 %bound03037, %bound13038
  %1477 = or i32 %30, %24
  %1478 = icmp slt i32 %1477, 0
  %1479 = or i1 %found.conflict3039, %1478
  %conflict.rdx3042 = or i1 %1476, %1479
  %n.vec3048 = and i64 %1473, -2
  %ind.end3049 = or i64 %1473, 1
  %cmp.n3062 = icmp eq i64 %1473, %n.vec3048
  br label %1480

1480:                                             ; preds = %.lr.ph2152, %._crit_edge2146
  %indvars.iv2369 = phi i64 [ 1, %.lr.ph2152 ], [ %indvars.iv.next2370, %._crit_edge2146 ]
  %1481 = phi <2 x float> [ %1445, %.lr.ph2152 ], [ %1508, %._crit_edge2146 ]
  br i1 %.not18212142, label %._crit_edge2146, label %.lr.ph2145

.lr.ph2145:                                       ; preds = %1480
  %1482 = mul nsw i64 %indvars.iv2369, %1442
  %1483 = mul nsw i64 %indvars.iv2369, %1443
  %invariant.gep2677 = getelementptr %struct.complex, ptr %32, i64 %1482
  %invariant.gep2679 = getelementptr %struct.complex, ptr %26, i64 %1483
  %brmerge4363 = select i1 %min.iters.check3045, i1 true, i1 %conflict.rdx3042
  br i1 %brmerge4363, label %scalar.ph3044.preheader, label %vector.body3051

vector.body3051:                                  ; preds = %.lr.ph2145, %vector.body3051
  %index3052 = phi i64 [ %index.next3061, %vector.body3051 ], [ 0, %.lr.ph2145 ]
  %offset.idx3053 = or disjoint i64 %index3052, 1
  %1484 = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %offset.idx3053
  %wide.vec3054 = load <4 x float>, ptr %1484, align 4, !tbaa !9
  %1485 = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %offset.idx3053
  %wide.vec3057 = load <4 x float>, ptr %1485, align 4, !tbaa !9
  %1486 = fadd <4 x float> %wide.vec3054, %wide.vec3057
  %1487 = fadd <4 x float> %wide.vec3054, %wide.vec3057
  %interleaved.vec3060 = shufflevector <4 x float> %1486, <4 x float> %1487, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3060, ptr %1484, align 4, !tbaa !9
  %index.next3061 = add nuw i64 %index3052, 2
  %1488 = icmp eq i64 %index.next3061, %n.vec3048
  br i1 %1488, label %middle.block3043, label %vector.body3051, !llvm.loop !81

middle.block3043:                                 ; preds = %vector.body3051
  %1489 = shufflevector <4 x float> %1486, <4 x float> %1487, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3062, label %._crit_edge2146, label %scalar.ph3044.preheader

scalar.ph3044.preheader:                          ; preds = %.lr.ph2145, %middle.block3043
  %indvars.iv2364.ph = phi i64 [ 1, %.lr.ph2145 ], [ %ind.end3049, %middle.block3043 ]
  %1490 = sub nsw i64 %wide.trip.count2367, %indvars.iv2364.ph
  %xtraiter4236 = and i64 %1490, 3
  %lcmp.mod4237.not = icmp eq i64 %xtraiter4236, 0
  br i1 %lcmp.mod4237.not, label %scalar.ph3044.prol.loopexit, label %scalar.ph3044.prol

scalar.ph3044.prol:                               ; preds = %scalar.ph3044.preheader, %scalar.ph3044.prol
  %indvars.iv2364.prol = phi i64 [ %indvars.iv.next2365.prol, %scalar.ph3044.prol ], [ %indvars.iv2364.ph, %scalar.ph3044.preheader ]
  %prol.iter4238 = phi i64 [ %prol.iter4238.next, %scalar.ph3044.prol ], [ 0, %scalar.ph3044.preheader ]
  %gep2678.prol = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %indvars.iv2364.prol
  %gep2680.prol = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %indvars.iv2364.prol
  %1491 = load <2 x float>, ptr %gep2678.prol, align 4, !tbaa !9
  %1492 = load <2 x float>, ptr %gep2680.prol, align 4, !tbaa !9
  %1493 = fadd <2 x float> %1491, %1492
  store <2 x float> %1493, ptr %gep2678.prol, align 4, !tbaa !9
  %indvars.iv.next2365.prol = add nuw nsw i64 %indvars.iv2364.prol, 1
  %prol.iter4238.next = add i64 %prol.iter4238, 1
  %prol.iter4238.cmp.not = icmp eq i64 %prol.iter4238.next, %xtraiter4236
  br i1 %prol.iter4238.cmp.not, label %scalar.ph3044.prol.loopexit, label %scalar.ph3044.prol, !llvm.loop !82

scalar.ph3044.prol.loopexit:                      ; preds = %scalar.ph3044.prol, %scalar.ph3044.preheader
  %.lcssa4217.unr = phi <2 x float> [ poison, %scalar.ph3044.preheader ], [ %1493, %scalar.ph3044.prol ]
  %indvars.iv2364.unr = phi i64 [ %indvars.iv2364.ph, %scalar.ph3044.preheader ], [ %indvars.iv.next2365.prol, %scalar.ph3044.prol ]
  %1494 = sub nsw i64 %indvars.iv2364.ph, %wide.trip.count2367
  %1495 = icmp ugt i64 %1494, -4
  br i1 %1495, label %._crit_edge2146, label %scalar.ph3044

scalar.ph3044:                                    ; preds = %scalar.ph3044.prol.loopexit, %scalar.ph3044
  %indvars.iv2364 = phi i64 [ %indvars.iv.next2365.3, %scalar.ph3044 ], [ %indvars.iv2364.unr, %scalar.ph3044.prol.loopexit ]
  %gep2678 = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %indvars.iv2364
  %gep2680 = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %indvars.iv2364
  %1496 = load <2 x float>, ptr %gep2678, align 4, !tbaa !9
  %1497 = load <2 x float>, ptr %gep2680, align 4, !tbaa !9
  %1498 = fadd <2 x float> %1496, %1497
  store <2 x float> %1498, ptr %gep2678, align 4, !tbaa !9
  %indvars.iv.next2365 = add nuw nsw i64 %indvars.iv2364, 1
  %gep2678.1 = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %indvars.iv.next2365
  %gep2680.1 = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %indvars.iv.next2365
  %1499 = load <2 x float>, ptr %gep2678.1, align 4, !tbaa !9
  %1500 = load <2 x float>, ptr %gep2680.1, align 4, !tbaa !9
  %1501 = fadd <2 x float> %1499, %1500
  store <2 x float> %1501, ptr %gep2678.1, align 4, !tbaa !9
  %indvars.iv.next2365.1 = add nuw nsw i64 %indvars.iv2364, 2
  %gep2678.2 = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %indvars.iv.next2365.1
  %gep2680.2 = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %indvars.iv.next2365.1
  %1502 = load <2 x float>, ptr %gep2678.2, align 4, !tbaa !9
  %1503 = load <2 x float>, ptr %gep2680.2, align 4, !tbaa !9
  %1504 = fadd <2 x float> %1502, %1503
  store <2 x float> %1504, ptr %gep2678.2, align 4, !tbaa !9
  %indvars.iv.next2365.2 = add nuw nsw i64 %indvars.iv2364, 3
  %gep2678.3 = getelementptr %struct.complex, ptr %invariant.gep2677, i64 %indvars.iv.next2365.2
  %gep2680.3 = getelementptr %struct.complex, ptr %invariant.gep2679, i64 %indvars.iv.next2365.2
  %1505 = load <2 x float>, ptr %gep2678.3, align 4, !tbaa !9
  %1506 = load <2 x float>, ptr %gep2680.3, align 4, !tbaa !9
  %1507 = fadd <2 x float> %1505, %1506
  store <2 x float> %1507, ptr %gep2678.3, align 4, !tbaa !9
  %indvars.iv.next2365.3 = add nuw nsw i64 %indvars.iv2364, 4
  %exitcond2368.not.3 = icmp eq i64 %indvars.iv.next2365.3, %wide.trip.count2367
  br i1 %exitcond2368.not.3, label %._crit_edge2146, label %scalar.ph3044, !llvm.loop !83

._crit_edge2146:                                  ; preds = %scalar.ph3044.prol.loopexit, %scalar.ph3044, %middle.block3043, %1480
  %1508 = phi <2 x float> [ %1481, %1480 ], [ %1489, %middle.block3043 ], [ %.lcssa4217.unr, %scalar.ph3044.prol.loopexit ], [ %1507, %scalar.ph3044 ]
  %indvars.iv.next2370 = add nuw nsw i64 %indvars.iv2369, 1
  %exitcond2373.not = icmp eq i64 %indvars.iv.next2370, %wide.trip.count2372
  br i1 %exitcond2373.not, label %._crit_edge2153.loopexit, label %1480, !llvm.loop !84

._crit_edge2153.loopexit:                         ; preds = %._crit_edge2146
  store <2 x float> %1508, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2153

._crit_edge2153:                                  ; preds = %._crit_edge2153.loopexit, %._crit_edge2141
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %1509 = load i32, ptr %5, align 4, !tbaa !5
  %.not18172161 = icmp slt i32 %1509, 1
  br i1 %.not18172161, label %._crit_edge2165, label %.lr.ph2164

.lr.ph2164:                                       ; preds = %._crit_edge2153
  %1510 = load i32, ptr %6, align 4, !tbaa !5
  %.not18202154 = icmp slt i32 %1510, 1
  %1511 = add i32 %1510, 1
  %1512 = sext i32 %24 to i64
  %1513 = sext i32 %30 to i64
  %1514 = add nuw i32 %1509, 1
  %wide.trip.count2382 = zext i32 %1514 to i64
  %wide.trip.count2377 = zext i32 %1511 to i64
  %1515 = shl nsw i64 %1512, 3
  %1516 = shl nsw i64 %25, 3
  %1517 = getelementptr i8, ptr %12, i64 %1515
  %1518 = getelementptr i8, ptr %1517, i64 %1516
  %scevgep3064 = getelementptr i8, ptr %1518, i64 8
  %1519 = shl nuw nsw i64 %wide.trip.count2382, 3
  %1520 = add nsw i64 %1519, -8
  %1521 = mul i64 %1520, %1512
  %1522 = shl nuw nsw i64 %wide.trip.count2377, 3
  %1523 = getelementptr i8, ptr %12, i64 %1521
  %1524 = getelementptr i8, ptr %1523, i64 %1516
  %1525 = getelementptr i8, ptr %1524, i64 %1522
  %scevgep3065 = getelementptr i8, ptr %1525, i64 -4
  %1526 = shl nsw i64 %1513, 3
  %1527 = shl nsw i64 %31, 3
  %1528 = getelementptr i8, ptr %16, i64 %1526
  %1529 = getelementptr i8, ptr %1528, i64 %1527
  %scevgep3066 = getelementptr i8, ptr %1529, i64 8
  %1530 = mul i64 %1520, %1513
  %1531 = getelementptr i8, ptr %16, i64 %1530
  %1532 = getelementptr i8, ptr %1531, i64 %1527
  %1533 = getelementptr i8, ptr %1532, i64 %1522
  %scevgep3067 = getelementptr i8, ptr %1533, i64 -4
  %1534 = getelementptr i8, ptr %12, i64 %1515
  %1535 = getelementptr i8, ptr %1534, i64 %1516
  %scevgep3068 = getelementptr i8, ptr %1535, i64 12
  %1536 = getelementptr i8, ptr %12, i64 %1521
  %1537 = getelementptr i8, ptr %1536, i64 %1516
  %scevgep3069 = getelementptr i8, ptr %1537, i64 %1522
  %1538 = getelementptr i8, ptr %16, i64 %1526
  %1539 = getelementptr i8, ptr %1538, i64 %1527
  %scevgep3070 = getelementptr i8, ptr %1539, i64 12
  %1540 = getelementptr i8, ptr %16, i64 %1530
  %1541 = getelementptr i8, ptr %1540, i64 %1527
  %scevgep3071 = getelementptr i8, ptr %1541, i64 %1522
  %1542 = add nsw i64 %wide.trip.count2377, -1
  %min.iters.check3085 = icmp ult i32 %1511, 7
  %bound03072 = icmp ult ptr %scevgep3064, %scevgep3067
  %bound13073 = icmp ult ptr %scevgep3066, %scevgep3065
  %found.conflict3074 = and i1 %bound03072, %bound13073
  %1543 = or i32 %24, %30
  %1544 = icmp slt i32 %1543, 0
  %1545 = or i1 %found.conflict3074, %1544
  %bound03077 = icmp ult ptr %scevgep3068, %scevgep3071
  %bound13078 = icmp ult ptr %scevgep3070, %scevgep3069
  %found.conflict3079 = and i1 %bound03077, %bound13078
  %1546 = or i32 %24, %30
  %1547 = icmp slt i32 %1546, 0
  %1548 = or i1 %found.conflict3079, %1547
  %conflict.rdx3082 = or i1 %1545, %1548
  %n.vec3088 = and i64 %1542, -2
  %ind.end3089 = or i64 %1542, 1
  %cmp.n3102 = icmp eq i64 %1542, %n.vec3088
  br label %1549

1549:                                             ; preds = %.lr.ph2164, %._crit_edge2158
  %indvars.iv2379 = phi i64 [ 1, %.lr.ph2164 ], [ %indvars.iv.next2380, %._crit_edge2158 ]
  br i1 %.not18202154, label %._crit_edge2158, label %.lr.ph2157

.lr.ph2157:                                       ; preds = %1549
  %1550 = mul nsw i64 %indvars.iv2379, %1512
  %1551 = mul nsw i64 %indvars.iv2379, %1513
  %invariant.gep2687 = getelementptr %struct.complex, ptr %26, i64 %1550
  %invariant.gep2689 = getelementptr %struct.complex, ptr %32, i64 %1551
  %brmerge4364 = select i1 %min.iters.check3085, i1 true, i1 %conflict.rdx3082
  br i1 %brmerge4364, label %scalar.ph3084.preheader, label %vector.body3091

vector.body3091:                                  ; preds = %.lr.ph2157, %vector.body3091
  %index3092 = phi i64 [ %index.next3101, %vector.body3091 ], [ 0, %.lr.ph2157 ]
  %offset.idx3093 = or disjoint i64 %index3092, 1
  %1552 = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %offset.idx3093
  %wide.vec3094 = load <4 x float>, ptr %1552, align 4, !tbaa !9
  %1553 = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %offset.idx3093
  %wide.vec3097 = load <4 x float>, ptr %1553, align 4, !tbaa !9
  %interleaved.vec3100 = fsub <4 x float> %wide.vec3094, %wide.vec3097
  store <4 x float> %interleaved.vec3100, ptr %1552, align 4, !tbaa !9
  %index.next3101 = add nuw i64 %index3092, 2
  %1554 = icmp eq i64 %index.next3101, %n.vec3088
  br i1 %1554, label %middle.block3083, label %vector.body3091, !llvm.loop !85

middle.block3083:                                 ; preds = %vector.body3091
  br i1 %cmp.n3102, label %._crit_edge2158, label %scalar.ph3084.preheader

scalar.ph3084.preheader:                          ; preds = %.lr.ph2157, %middle.block3083
  %indvars.iv2374.ph = phi i64 [ 1, %.lr.ph2157 ], [ %ind.end3089, %middle.block3083 ]
  %1555 = sub nsw i64 %wide.trip.count2377, %indvars.iv2374.ph
  %xtraiter4239 = and i64 %1555, 3
  %lcmp.mod4240.not = icmp eq i64 %xtraiter4239, 0
  br i1 %lcmp.mod4240.not, label %scalar.ph3084.prol.loopexit, label %scalar.ph3084.prol

scalar.ph3084.prol:                               ; preds = %scalar.ph3084.preheader, %scalar.ph3084.prol
  %indvars.iv2374.prol = phi i64 [ %indvars.iv.next2375.prol, %scalar.ph3084.prol ], [ %indvars.iv2374.ph, %scalar.ph3084.preheader ]
  %prol.iter4241 = phi i64 [ %prol.iter4241.next, %scalar.ph3084.prol ], [ 0, %scalar.ph3084.preheader ]
  %gep2688.prol = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %indvars.iv2374.prol
  %gep2690.prol = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %indvars.iv2374.prol
  %1556 = load <2 x float>, ptr %gep2688.prol, align 4, !tbaa !9
  %1557 = load <2 x float>, ptr %gep2690.prol, align 4, !tbaa !9
  %1558 = fsub <2 x float> %1556, %1557
  store <2 x float> %1558, ptr %gep2688.prol, align 4, !tbaa !9
  %indvars.iv.next2375.prol = add nuw nsw i64 %indvars.iv2374.prol, 1
  %prol.iter4241.next = add i64 %prol.iter4241, 1
  %prol.iter4241.cmp.not = icmp eq i64 %prol.iter4241.next, %xtraiter4239
  br i1 %prol.iter4241.cmp.not, label %scalar.ph3084.prol.loopexit, label %scalar.ph3084.prol, !llvm.loop !86

scalar.ph3084.prol.loopexit:                      ; preds = %scalar.ph3084.prol, %scalar.ph3084.preheader
  %indvars.iv2374.unr = phi i64 [ %indvars.iv2374.ph, %scalar.ph3084.preheader ], [ %indvars.iv.next2375.prol, %scalar.ph3084.prol ]
  %1559 = sub nsw i64 %indvars.iv2374.ph, %wide.trip.count2377
  %1560 = icmp ugt i64 %1559, -4
  br i1 %1560, label %._crit_edge2158, label %scalar.ph3084

scalar.ph3084:                                    ; preds = %scalar.ph3084.prol.loopexit, %scalar.ph3084
  %indvars.iv2374 = phi i64 [ %indvars.iv.next2375.3, %scalar.ph3084 ], [ %indvars.iv2374.unr, %scalar.ph3084.prol.loopexit ]
  %gep2688 = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %indvars.iv2374
  %gep2690 = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %indvars.iv2374
  %1561 = load <2 x float>, ptr %gep2688, align 4, !tbaa !9
  %1562 = load <2 x float>, ptr %gep2690, align 4, !tbaa !9
  %1563 = fsub <2 x float> %1561, %1562
  store <2 x float> %1563, ptr %gep2688, align 4, !tbaa !9
  %indvars.iv.next2375 = add nuw nsw i64 %indvars.iv2374, 1
  %gep2688.1 = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %indvars.iv.next2375
  %gep2690.1 = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %indvars.iv.next2375
  %1564 = load <2 x float>, ptr %gep2688.1, align 4, !tbaa !9
  %1565 = load <2 x float>, ptr %gep2690.1, align 4, !tbaa !9
  %1566 = fsub <2 x float> %1564, %1565
  store <2 x float> %1566, ptr %gep2688.1, align 4, !tbaa !9
  %indvars.iv.next2375.1 = add nuw nsw i64 %indvars.iv2374, 2
  %gep2688.2 = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %indvars.iv.next2375.1
  %gep2690.2 = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %indvars.iv.next2375.1
  %1567 = load <2 x float>, ptr %gep2688.2, align 4, !tbaa !9
  %1568 = load <2 x float>, ptr %gep2690.2, align 4, !tbaa !9
  %1569 = fsub <2 x float> %1567, %1568
  store <2 x float> %1569, ptr %gep2688.2, align 4, !tbaa !9
  %indvars.iv.next2375.2 = add nuw nsw i64 %indvars.iv2374, 3
  %gep2688.3 = getelementptr %struct.complex, ptr %invariant.gep2687, i64 %indvars.iv.next2375.2
  %gep2690.3 = getelementptr %struct.complex, ptr %invariant.gep2689, i64 %indvars.iv.next2375.2
  %1570 = load <2 x float>, ptr %gep2688.3, align 4, !tbaa !9
  %1571 = load <2 x float>, ptr %gep2690.3, align 4, !tbaa !9
  %1572 = fsub <2 x float> %1570, %1571
  store <2 x float> %1572, ptr %gep2688.3, align 4, !tbaa !9
  %indvars.iv.next2375.3 = add nuw nsw i64 %indvars.iv2374, 4
  %exitcond2378.not.3 = icmp eq i64 %indvars.iv.next2375.3, %wide.trip.count2377
  br i1 %exitcond2378.not.3, label %._crit_edge2158, label %scalar.ph3084, !llvm.loop !87

._crit_edge2158:                                  ; preds = %scalar.ph3084.prol.loopexit, %scalar.ph3084, %middle.block3083, %1549
  %indvars.iv.next2380 = add nuw nsw i64 %indvars.iv2379, 1
  %exitcond2383.not = icmp eq i64 %indvars.iv.next2380, %wide.trip.count2382
  br i1 %exitcond2383.not, label %._crit_edge2165, label %1549, !llvm.loop !88

._crit_edge2165:                                  ; preds = %._crit_edge2158, %._crit_edge2153
  %1573 = load i32, ptr %4, align 4, !tbaa !5
  %1574 = load i32, ptr %7, align 4, !tbaa !5
  %1575 = sub nsw i32 %1573, %1574
  store i32 %1575, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  %1576 = load i32, ptr %6, align 4, !tbaa !5
  %1577 = load i32, ptr %7, align 4, !tbaa !5
  %1578 = sub nsw i32 %1576, %1577
  store i32 %1578, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %1579 = add nsw i32 %1333, %1423
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds %struct.complex, ptr %23, i64 %1580
  %1582 = add nsw i32 %.1872, %27
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds %struct.complex, ptr %29, i64 %1583
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1581, ptr noundef nonnull %9, ptr noundef %1438, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %1584, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %1426, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %1585 = load i32, ptr %5, align 4, !tbaa !5
  %.not18182173 = icmp slt i32 %1585, 1
  br i1 %.not18182173, label %.thread1900, label %.lr.ph2176

.lr.ph2176:                                       ; preds = %._crit_edge2165
  %1586 = load i32, ptr %7, align 4, !tbaa !5
  %.not18192166 = icmp slt i32 %1586, 1
  %1587 = add i32 %1586, 1
  %1588 = sext i32 %30 to i64
  %1589 = add nuw i32 %1585, 1
  %wide.trip.count2392 = zext i32 %1589 to i64
  %wide.trip.count2387 = zext i32 %1587 to i64
  %1590 = add nsw i64 %wide.trip.count2387, -2
  %1591 = add i32 %27, 1
  %1592 = sub i32 %1591, %1586
  %1593 = shl nsw i64 %28, 3
  %scevgep3106 = getelementptr i8, ptr %14, i64 %1593
  %1594 = or disjoint i64 %1593, 4
  %scevgep3108 = getelementptr i8, ptr %14, i64 %1594
  %1595 = shl nsw i64 %1588, 3
  %1596 = shl nsw i64 %31, 3
  %1597 = getelementptr i8, ptr %16, i64 %1595
  %1598 = getelementptr i8, ptr %1597, i64 %1596
  %scevgep3114 = getelementptr i8, ptr %1598, i64 8
  %1599 = shl nuw nsw i64 %wide.trip.count2392, 3
  %1600 = add nsw i64 %1599, -8
  %1601 = mul i64 %1600, %1588
  %1602 = shl nuw nsw i64 %wide.trip.count2387, 3
  %1603 = getelementptr i8, ptr %16, i64 %1601
  %1604 = getelementptr i8, ptr %1603, i64 %1596
  %1605 = getelementptr i8, ptr %1604, i64 %1602
  %scevgep3115 = getelementptr i8, ptr %1605, i64 -4
  %1606 = shl nsw i64 %28, 3
  %scevgep3116 = getelementptr i8, ptr %14, i64 %1606
  %1607 = add i32 %27, 1
  %1608 = sub i32 %1607, %1586
  %1609 = add nsw i64 %1606, %1602
  %1610 = getelementptr i8, ptr %14, i64 %1609
  %scevgep3118 = getelementptr i8, ptr %1610, i64 -12
  %1611 = or disjoint i64 %1606, 4
  %scevgep3120 = getelementptr i8, ptr %14, i64 %1611
  %1612 = getelementptr i8, ptr %14, i64 %1609
  %scevgep3122 = getelementptr i8, ptr %1612, i64 -8
  %1613 = getelementptr i8, ptr %16, i64 %1595
  %1614 = getelementptr i8, ptr %1613, i64 %1596
  %scevgep3124 = getelementptr i8, ptr %1614, i64 12
  %1615 = getelementptr i8, ptr %16, i64 %1601
  %1616 = getelementptr i8, ptr %1615, i64 %1596
  %scevgep3125 = getelementptr i8, ptr %1616, i64 %1602
  %1617 = add nsw i64 %wide.trip.count2387, -1
  %min.iters.check3137 = icmp ult i32 %1587, 21
  %1618 = trunc i64 %1590 to i32
  %1619 = icmp ugt i64 %1590, 4294967295
  %mul.result = shl nsw i64 %1590, 3
  %mul.result3111 = shl nsw i64 %1590, 3
  %stride.check3133 = icmp slt i32 %30, 0
  %n.vec3140 = and i64 %1617, -4
  %ind.end3141 = or disjoint i64 %n.vec3140, 1
  %cmp.n3155 = icmp eq i64 %1617, %n.vec3140
  %1620 = and i64 %wide.trip.count2387, 1
  %lcmp.mod4243.not.not = icmp eq i64 %1620, 0
  %1621 = add nsw i64 %wide.trip.count2387, -1
  br label %1622

1622:                                             ; preds = %.lr.ph2176, %._crit_edge2170
  %indvar3104 = phi i32 [ 0, %.lr.ph2176 ], [ %indvar.next3105, %._crit_edge2170 ]
  %indvars.iv2389 = phi i64 [ 1, %.lr.ph2176 ], [ %indvars.iv.next2390, %._crit_edge2170 ]
  %1623 = mul i32 %27, %indvar3104
  %1624 = add i32 %1608, %1623
  %1625 = mul i32 %27, %indvar3104
  %1626 = add i32 %1592, %1625
  br i1 %.not18192166, label %._crit_edge2170, label %.lr.ph2169

.lr.ph2169:                                       ; preds = %1622
  %1627 = load i32, ptr %4, align 4, !tbaa !5
  %1628 = trunc i64 %indvars.iv2389 to i32
  %1629 = mul i32 %27, %1628
  %1630 = sub i32 %1629, %1586
  %1631 = mul nsw i64 %indvars.iv2389, %1588
  %invariant.gep2691 = getelementptr %struct.complex, ptr %32, i64 %1631
  br i1 %min.iters.check3137, label %scalar.ph3136.preheader, label %vector.scevcheck3103

vector.scevcheck3103:                             ; preds = %.lr.ph2169
  %1632 = add i32 %1627, %1626
  %1633 = add i32 %1632, %1618
  %1634 = icmp slt i32 %1633, %1632
  %1635 = or i1 %1634, %1619
  %1636 = sext i32 %1632 to i64
  %1637 = shl nsw i64 %1636, 3
  %scevgep3107 = getelementptr i8, ptr %scevgep3106, i64 %1637
  %1638 = getelementptr i8, ptr %scevgep3107, i64 %mul.result
  %1639 = icmp ult ptr %1638, %scevgep3107
  %scevgep3109 = getelementptr i8, ptr %scevgep3108, i64 %1637
  %1640 = getelementptr i8, ptr %scevgep3109, i64 %mul.result3111
  %1641 = icmp ult ptr %1640, %scevgep3109
  %1642 = or i1 %1639, %1635
  %1643 = or i1 %1641, %1642
  br i1 %1643, label %scalar.ph3136.preheader, label %vector.memcheck3113

vector.memcheck3113:                              ; preds = %vector.scevcheck3103
  %1644 = add i32 %1627, %1624
  %1645 = sext i32 %1644 to i64
  %1646 = shl nsw i64 %1645, 3
  %scevgep3117 = getelementptr i8, ptr %scevgep3116, i64 %1646
  %scevgep3119 = getelementptr i8, ptr %scevgep3118, i64 %1646
  %scevgep3121 = getelementptr i8, ptr %scevgep3120, i64 %1646
  %scevgep3123 = getelementptr i8, ptr %scevgep3122, i64 %1646
  %bound03126 = icmp ult ptr %scevgep3114, %scevgep3119
  %bound13127 = icmp ult ptr %scevgep3117, %scevgep3115
  %found.conflict3128 = and i1 %bound03126, %bound13127
  %bound03130 = icmp ult ptr %scevgep3121, %scevgep3125
  %bound13131 = icmp ult ptr %scevgep3124, %scevgep3123
  %found.conflict3132 = and i1 %bound03130, %bound13131
  %1647 = or i1 %found.conflict3132, %stride.check3133
  %conflict.rdx3134 = or i1 %found.conflict3128, %1647
  br i1 %conflict.rdx3134, label %scalar.ph3136.preheader, label %vector.body3143

vector.body3143:                                  ; preds = %vector.memcheck3113, %vector.body3143
  %index3144 = phi i64 [ %index.next3154, %vector.body3143 ], [ 0, %vector.memcheck3113 ]
  %offset.idx3145 = or disjoint i64 %index3144, 1
  %1648 = trunc i64 %index3144 to i32
  %1649 = or disjoint i32 %1648, 1
  %1650 = add i32 %1630, %1649
  %1651 = add i32 %1650, %1627
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds %struct.complex, ptr %29, i64 %1652
  %wide.vec3147 = load <8 x float>, ptr %1653, align 4, !tbaa !9
  %1654 = getelementptr %struct.complex, ptr %invariant.gep2691, i64 %offset.idx3145
  %wide.vec3150 = load <8 x float>, ptr %1654, align 4, !tbaa !9
  %interleaved.vec3153 = fsub <8 x float> %wide.vec3147, %wide.vec3150
  store <8 x float> %interleaved.vec3153, ptr %1653, align 4, !tbaa !9
  %index.next3154 = add nuw i64 %index3144, 4
  %1655 = icmp eq i64 %index.next3154, %n.vec3140
  br i1 %1655, label %middle.block3135, label %vector.body3143, !llvm.loop !89

middle.block3135:                                 ; preds = %vector.body3143
  br i1 %cmp.n3155, label %._crit_edge2170, label %scalar.ph3136.preheader

scalar.ph3136.preheader:                          ; preds = %middle.block3135, %vector.memcheck3113, %vector.scevcheck3103, %.lr.ph2169
  %indvars.iv2384.ph = phi i64 [ 1, %vector.memcheck3113 ], [ 1, %vector.scevcheck3103 ], [ 1, %.lr.ph2169 ], [ %ind.end3141, %middle.block3135 ]
  br i1 %lcmp.mod4243.not.not, label %scalar.ph3136.prol, label %scalar.ph3136.prol.loopexit

scalar.ph3136.prol:                               ; preds = %scalar.ph3136.preheader
  %1656 = trunc nuw nsw i64 %indvars.iv2384.ph to i32
  %1657 = add i32 %1630, %1656
  %1658 = add i32 %1657, %1627
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds %struct.complex, ptr %29, i64 %1659
  %gep2692.prol = getelementptr %struct.complex, ptr %invariant.gep2691, i64 %indvars.iv2384.ph
  %1661 = load <2 x float>, ptr %1660, align 4, !tbaa !9
  %1662 = load <2 x float>, ptr %gep2692.prol, align 4, !tbaa !9
  %1663 = fsub <2 x float> %1661, %1662
  store <2 x float> %1663, ptr %1660, align 4, !tbaa !9
  %indvars.iv.next2385.prol = add nuw nsw i64 %indvars.iv2384.ph, 1
  br label %scalar.ph3136.prol.loopexit

scalar.ph3136.prol.loopexit:                      ; preds = %scalar.ph3136.prol, %scalar.ph3136.preheader
  %indvars.iv2384.unr = phi i64 [ %indvars.iv2384.ph, %scalar.ph3136.preheader ], [ %indvars.iv.next2385.prol, %scalar.ph3136.prol ]
  %1664 = icmp eq i64 %indvars.iv2384.ph, %1621
  br i1 %1664, label %._crit_edge2170, label %scalar.ph3136

scalar.ph3136:                                    ; preds = %scalar.ph3136.prol.loopexit, %scalar.ph3136
  %indvars.iv2384 = phi i64 [ %indvars.iv.next2385.1, %scalar.ph3136 ], [ %indvars.iv2384.unr, %scalar.ph3136.prol.loopexit ]
  %1665 = trunc nuw nsw i64 %indvars.iv2384 to i32
  %1666 = add i32 %1630, %1665
  %1667 = add i32 %1666, %1627
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds %struct.complex, ptr %29, i64 %1668
  %gep2692 = getelementptr %struct.complex, ptr %invariant.gep2691, i64 %indvars.iv2384
  %1670 = load <2 x float>, ptr %1669, align 4, !tbaa !9
  %1671 = load <2 x float>, ptr %gep2692, align 4, !tbaa !9
  %1672 = fsub <2 x float> %1670, %1671
  store <2 x float> %1672, ptr %1669, align 4, !tbaa !9
  %indvars.iv.next2385 = add nuw nsw i64 %indvars.iv2384, 1
  %1673 = trunc nuw nsw i64 %indvars.iv.next2385 to i32
  %1674 = add i32 %1630, %1673
  %1675 = add i32 %1674, %1627
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds %struct.complex, ptr %29, i64 %1676
  %gep2692.1 = getelementptr %struct.complex, ptr %invariant.gep2691, i64 %indvars.iv.next2385
  %1678 = load <2 x float>, ptr %1677, align 4, !tbaa !9
  %1679 = load <2 x float>, ptr %gep2692.1, align 4, !tbaa !9
  %1680 = fsub <2 x float> %1678, %1679
  store <2 x float> %1680, ptr %1677, align 4, !tbaa !9
  %indvars.iv.next2385.1 = add nuw nsw i64 %indvars.iv2384, 2
  %exitcond2388.not.1 = icmp eq i64 %indvars.iv.next2385.1, %wide.trip.count2387
  br i1 %exitcond2388.not.1, label %._crit_edge2170, label %scalar.ph3136, !llvm.loop !90

._crit_edge2170:                                  ; preds = %scalar.ph3136.prol.loopexit, %scalar.ph3136, %middle.block3135, %1622
  %indvars.iv.next2390 = add nuw nsw i64 %indvars.iv2389, 1
  %exitcond2393.not = icmp eq i64 %indvars.iv.next2390, %wide.trip.count2392
  %indvar.next3105 = add i32 %indvar3104, 1
  br i1 %exitcond2393.not, label %.thread1900, label %1622, !llvm.loop !91

1681:                                             ; preds = %1325
  %or.cond23 = and i1 %54, %49
  br i1 %or.cond23, label %1682, label %.thread1900

1682:                                             ; preds = %1681
  %1683 = load i32, ptr %5, align 4, !tbaa !5
  %1684 = load i32, ptr %7, align 4, !tbaa !5
  %1685 = sub nsw i32 %1683, %1684
  %1686 = add nsw i32 %1685, 1
  %.not1803.not = icmp sgt i32 %1684, 0
  %.1873 = select i1 %.not1803.not, i32 %1686, i32 %1683
  %1687 = add i32 %1684, 1
  %1688 = load i32, ptr %6, align 4, !tbaa !5
  %.not1804.not = icmp slt i32 %1684, %1688
  %1689 = select i1 %.not1804.not, i32 %1687, i32 %1688
  %.not18052095 = icmp slt i32 %1684, 1
  br i1 %.not18052095, label %._crit_edge2099, label %.lr.ph2098

.lr.ph2098:                                       ; preds = %1682
  %1690 = load i32, ptr %4, align 4, !tbaa !5
  %.not18122090 = icmp slt i32 %1690, 1
  %1691 = add i32 %1690, 1
  %1692 = sext i32 %30 to i64
  %wide.trip.count2322 = zext i32 %1687 to i64
  %wide.trip.count = zext i32 %1691 to i64
  %1693 = shl nsw i64 %1692, 3
  %1694 = shl nsw i64 %31, 3
  %1695 = getelementptr i8, ptr %16, i64 %1693
  %1696 = getelementptr i8, ptr %1695, i64 %1694
  %scevgep = getelementptr i8, ptr %1696, i64 8
  %1697 = shl nuw nsw i64 %wide.trip.count2322, 3
  %1698 = add nsw i64 %1697, -8
  %1699 = mul i64 %1698, %1692
  %1700 = shl nuw nsw i64 %wide.trip.count, 3
  %1701 = getelementptr i8, ptr %16, i64 %1699
  %1702 = getelementptr i8, ptr %1701, i64 %1694
  %1703 = getelementptr i8, ptr %1702, i64 %1700
  %scevgep2835 = getelementptr i8, ptr %1703, i64 -4
  %1704 = shl nsw i64 %28, 3
  %1705 = getelementptr i8, ptr %14, i64 %1704
  %scevgep2836 = getelementptr i8, ptr %1705, i64 8
  %1706 = add i32 %1683, 1
  %1707 = sub i32 %1706, %1684
  %1708 = getelementptr i8, ptr %14, i64 %1704
  %1709 = getelementptr i8, ptr %1708, i64 %1700
  %scevgep2838 = getelementptr i8, ptr %1709, i64 -4
  %1710 = getelementptr i8, ptr %16, i64 %1693
  %1711 = getelementptr i8, ptr %1710, i64 %1694
  %scevgep2840 = getelementptr i8, ptr %1711, i64 12
  %1712 = getelementptr i8, ptr %16, i64 %1699
  %1713 = getelementptr i8, ptr %1712, i64 %1694
  %scevgep2841 = getelementptr i8, ptr %1713, i64 %1700
  %1714 = getelementptr i8, ptr %14, i64 %1704
  %scevgep2842 = getelementptr i8, ptr %1714, i64 12
  %1715 = getelementptr i8, ptr %14, i64 %1704
  %scevgep2844 = getelementptr i8, ptr %1715, i64 %1700
  %1716 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ult i32 %1691, 11
  %stride.check2849 = icmp slt i32 %30, 0
  %n.vec = and i64 %1716, -4
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %1716, %n.vec
  br label %1717

1717:                                             ; preds = %.lr.ph2098, %._crit_edge2094
  %indvar = phi i32 [ 0, %.lr.ph2098 ], [ %indvar.next, %._crit_edge2094 ]
  %indvars.iv2319 = phi i64 [ 1, %.lr.ph2098 ], [ %indvars.iv.next2320, %._crit_edge2094 ]
  %1718 = add i32 %1707, %indvar
  %1719 = mul i32 %27, %1718
  %1720 = sext i32 %1719 to i64
  %1721 = shl nsw i64 %1720, 3
  %scevgep2837 = getelementptr i8, ptr %scevgep2836, i64 %1721
  %scevgep2839 = getelementptr i8, ptr %scevgep2838, i64 %1721
  %scevgep2843 = getelementptr i8, ptr %scevgep2842, i64 %1721
  %scevgep2845 = getelementptr i8, ptr %scevgep2844, i64 %1721
  br i1 %.not18122090, label %._crit_edge2094, label %.lr.ph2093

.lr.ph2093:                                       ; preds = %1717
  %1722 = mul nsw i64 %indvars.iv2319, %1692
  %1723 = trunc nuw nsw i64 %indvars.iv2319 to i32
  %1724 = add nsw i32 %1685, %1723
  %1725 = mul nsw i32 %1724, %27
  %1726 = sext i32 %1725 to i64
  %invariant.gep = getelementptr %struct.complex, ptr %29, i64 %1726
  %invariant.gep2656 = getelementptr %struct.complex, ptr %32, i64 %1722
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph2093
  %bound0 = icmp ult ptr %scevgep, %scevgep2839
  %bound1 = icmp ult ptr %scevgep2837, %scevgep2835
  %found.conflict = and i1 %bound0, %bound1
  %bound02846 = icmp ult ptr %scevgep2840, %scevgep2845
  %bound12847 = icmp ult ptr %scevgep2843, %scevgep2841
  %found.conflict2848 = and i1 %bound02846, %bound12847
  %1727 = or i1 %found.conflict2848, %stride.check2849
  %conflict.rdx = or i1 %found.conflict, %1727
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %offset.idx = or disjoint i64 %index, 1
  %1728 = or disjoint i64 %index, 3
  %1729 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %1730 = getelementptr %struct.complex, ptr %invariant.gep, i64 %1728
  %wide.vec = load <4 x float>, ptr %1729, align 4, !tbaa !9
  %wide.vec2850 = load <4 x float>, ptr %1730, align 4, !tbaa !9
  %1731 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %offset.idx
  %1732 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %1728
  store <4 x float> %wide.vec, ptr %1731, align 4, !tbaa !9
  store <4 x float> %wide.vec2850, ptr %1732, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %1733 = icmp eq i64 %index.next, %n.vec
  br i1 %1733, label %middle.block, label %vector.body, !llvm.loop !92

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph2093
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph2093 ], [ %ind.end, %middle.block ]
  %1734 = sub nsw i64 %wide.trip.count, %indvars.iv.ph
  %xtraiter = and i64 %1734, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph.prol ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv.prol
  %gep2657.prol = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %indvars.iv.prol
  %1735 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !9
  store <2 x float> %1735, ptr %gep2657.prol, align 4, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !93

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %1736 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %1737 = icmp ugt i64 %1736, -4
  br i1 %1737, label %._crit_edge2094, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv
  %gep2657 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %indvars.iv
  %1738 = load <2 x float>, ptr %gep, align 4, !tbaa !9
  store <2 x float> %1738, ptr %gep2657, align 4, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv.next
  %gep2657.1 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %indvars.iv.next
  %1739 = load <2 x float>, ptr %gep.1, align 4, !tbaa !9
  store <2 x float> %1739, ptr %gep2657.1, align 4, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %gep.2 = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv.next.1
  %gep2657.2 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %indvars.iv.next.1
  %1740 = load <2 x float>, ptr %gep.2, align 4, !tbaa !9
  store <2 x float> %1740, ptr %gep2657.2, align 4, !tbaa !9
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %gep.3 = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv.next.2
  %gep2657.3 = getelementptr %struct.complex, ptr %invariant.gep2656, i64 %indvars.iv.next.2
  %1741 = load <2 x float>, ptr %gep.3, align 4, !tbaa !9
  store <2 x float> %1741, ptr %gep2657.3, align 4, !tbaa !9
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge2094, label %scalar.ph, !llvm.loop !94

._crit_edge2094:                                  ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %1717
  %indvars.iv.next2320 = add nuw nsw i64 %indvars.iv2319, 1
  %exitcond2323.not = icmp eq i64 %indvars.iv.next2320, %wide.trip.count2322
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond2323.not, label %._crit_edge2099, label %1717, !llvm.loop !95

._crit_edge2099:                                  ; preds = %._crit_edge2094, %1682
  %1742 = mul nsw i32 %.1873, %21
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr %struct.complex, ptr %23, i64 %1743
  %1745 = getelementptr i8, ptr %1744, i64 8
  tail call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %1745, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %1746 = load i32, ptr %5, align 4, !tbaa !5
  %1747 = load i32, ptr %7, align 4, !tbaa !5
  %1748 = sub nsw i32 %1746, %1747
  store i32 %1748, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %16, ptr noundef nonnull %17) #3
  %1749 = load i32, ptr %6, align 4, !tbaa !5
  %1750 = load i32, ptr %7, align 4, !tbaa !5
  %1751 = sub nsw i32 %1749, %1750
  store i32 %1751, ptr %19, align 4, !tbaa !5
  %1752 = add nsw i32 %1689, %21
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds %struct.complex, ptr %23, i64 %1753
  %1755 = mul nsw i32 %1689, %30
  %1756 = sext i32 %1755 to i64
  %1757 = getelementptr %struct.complex, ptr %32, i64 %1756
  %1758 = getelementptr i8, ptr %1757, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %1754, ptr noundef nonnull %9, ptr noundef nonnull @c_b2, ptr noundef %1758, ptr noundef nonnull %17) #3
  %1759 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %1759, ptr %19, align 4, !tbaa !5
  %.not18062107 = icmp slt i32 %1759, 1
  br i1 %.not18062107, label %._crit_edge2111, label %.lr.ph2110

.lr.ph2110:                                       ; preds = %._crit_edge2099
  %1760 = load i32, ptr %4, align 4, !tbaa !5
  %.not18112100 = icmp slt i32 %1760, 1
  %1761 = add i32 %1760, 1
  %1762 = sext i32 %30 to i64
  %1763 = sext i32 %24 to i64
  %1764 = add nuw i32 %1759, 1
  %wide.trip.count2332 = zext i32 %1764 to i64
  %wide.trip.count2327 = zext i32 %1761 to i64
  %1765 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %1766 = shl nsw i64 %1762, 3
  %1767 = shl nsw i64 %31, 3
  %1768 = getelementptr i8, ptr %16, i64 %1766
  %1769 = getelementptr i8, ptr %1768, i64 %1767
  %scevgep2856 = getelementptr i8, ptr %1769, i64 8
  %1770 = shl nuw nsw i64 %wide.trip.count2332, 3
  %1771 = add nsw i64 %1770, -8
  %1772 = mul i64 %1771, %1762
  %1773 = shl nuw nsw i64 %wide.trip.count2327, 3
  %1774 = getelementptr i8, ptr %16, i64 %1772
  %1775 = getelementptr i8, ptr %1774, i64 %1767
  %1776 = getelementptr i8, ptr %1775, i64 %1773
  %scevgep2857 = getelementptr i8, ptr %1776, i64 -4
  %1777 = shl nsw i64 %1763, 3
  %1778 = shl nsw i64 %25, 3
  %1779 = getelementptr i8, ptr %12, i64 %1777
  %1780 = getelementptr i8, ptr %1779, i64 %1778
  %scevgep2858 = getelementptr i8, ptr %1780, i64 8
  %1781 = mul i64 %1771, %1763
  %1782 = getelementptr i8, ptr %12, i64 %1781
  %1783 = getelementptr i8, ptr %1782, i64 %1778
  %1784 = getelementptr i8, ptr %1783, i64 %1773
  %scevgep2859 = getelementptr i8, ptr %1784, i64 -4
  %1785 = getelementptr i8, ptr %16, i64 %1766
  %1786 = getelementptr i8, ptr %1785, i64 %1767
  %scevgep2860 = getelementptr i8, ptr %1786, i64 12
  %1787 = getelementptr i8, ptr %16, i64 %1772
  %1788 = getelementptr i8, ptr %1787, i64 %1767
  %scevgep2861 = getelementptr i8, ptr %1788, i64 %1773
  %1789 = getelementptr i8, ptr %12, i64 %1777
  %1790 = getelementptr i8, ptr %1789, i64 %1778
  %scevgep2862 = getelementptr i8, ptr %1790, i64 12
  %1791 = getelementptr i8, ptr %12, i64 %1781
  %1792 = getelementptr i8, ptr %1791, i64 %1778
  %scevgep2863 = getelementptr i8, ptr %1792, i64 %1773
  %1793 = add nsw i64 %wide.trip.count2327, -1
  %min.iters.check2877 = icmp ult i32 %1761, 7
  %bound02864 = icmp ult ptr %scevgep2856, %scevgep2859
  %bound12865 = icmp ult ptr %scevgep2858, %scevgep2857
  %found.conflict2866 = and i1 %bound02864, %bound12865
  %1794 = or i32 %30, %24
  %1795 = icmp slt i32 %1794, 0
  %1796 = or i1 %found.conflict2866, %1795
  %bound02869 = icmp ult ptr %scevgep2860, %scevgep2863
  %bound12870 = icmp ult ptr %scevgep2862, %scevgep2861
  %found.conflict2871 = and i1 %bound02869, %bound12870
  %1797 = or i32 %30, %24
  %1798 = icmp slt i32 %1797, 0
  %1799 = or i1 %found.conflict2871, %1798
  %conflict.rdx2874 = or i1 %1796, %1799
  %n.vec2880 = and i64 %1793, -2
  %ind.end2881 = or i64 %1793, 1
  %cmp.n2894 = icmp eq i64 %1793, %n.vec2880
  br label %1800

1800:                                             ; preds = %.lr.ph2110, %._crit_edge2104
  %indvars.iv2329 = phi i64 [ 1, %.lr.ph2110 ], [ %indvars.iv.next2330, %._crit_edge2104 ]
  %1801 = phi <2 x float> [ %1765, %.lr.ph2110 ], [ %1828, %._crit_edge2104 ]
  br i1 %.not18112100, label %._crit_edge2104, label %.lr.ph2103

.lr.ph2103:                                       ; preds = %1800
  %1802 = mul nsw i64 %indvars.iv2329, %1762
  %1803 = mul nsw i64 %indvars.iv2329, %1763
  %invariant.gep2658 = getelementptr %struct.complex, ptr %32, i64 %1802
  %invariant.gep2660 = getelementptr %struct.complex, ptr %26, i64 %1803
  %brmerge4365 = select i1 %min.iters.check2877, i1 true, i1 %conflict.rdx2874
  br i1 %brmerge4365, label %scalar.ph2876.preheader, label %vector.body2883

vector.body2883:                                  ; preds = %.lr.ph2103, %vector.body2883
  %index2884 = phi i64 [ %index.next2893, %vector.body2883 ], [ 0, %.lr.ph2103 ]
  %offset.idx2885 = or disjoint i64 %index2884, 1
  %1804 = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %offset.idx2885
  %wide.vec2886 = load <4 x float>, ptr %1804, align 4, !tbaa !9
  %1805 = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %offset.idx2885
  %wide.vec2889 = load <4 x float>, ptr %1805, align 4, !tbaa !9
  %1806 = fadd <4 x float> %wide.vec2886, %wide.vec2889
  %1807 = fadd <4 x float> %wide.vec2886, %wide.vec2889
  %interleaved.vec2892 = shufflevector <4 x float> %1806, <4 x float> %1807, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec2892, ptr %1804, align 4, !tbaa !9
  %index.next2893 = add nuw i64 %index2884, 2
  %1808 = icmp eq i64 %index.next2893, %n.vec2880
  br i1 %1808, label %middle.block2875, label %vector.body2883, !llvm.loop !96

middle.block2875:                                 ; preds = %vector.body2883
  %1809 = shufflevector <4 x float> %1806, <4 x float> %1807, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n2894, label %._crit_edge2104, label %scalar.ph2876.preheader

scalar.ph2876.preheader:                          ; preds = %.lr.ph2103, %middle.block2875
  %indvars.iv2324.ph = phi i64 [ 1, %.lr.ph2103 ], [ %ind.end2881, %middle.block2875 ]
  %1810 = sub nsw i64 %wide.trip.count2327, %indvars.iv2324.ph
  %xtraiter4224 = and i64 %1810, 3
  %lcmp.mod4225.not = icmp eq i64 %xtraiter4224, 0
  br i1 %lcmp.mod4225.not, label %scalar.ph2876.prol.loopexit, label %scalar.ph2876.prol

scalar.ph2876.prol:                               ; preds = %scalar.ph2876.preheader, %scalar.ph2876.prol
  %indvars.iv2324.prol = phi i64 [ %indvars.iv.next2325.prol, %scalar.ph2876.prol ], [ %indvars.iv2324.ph, %scalar.ph2876.preheader ]
  %prol.iter4226 = phi i64 [ %prol.iter4226.next, %scalar.ph2876.prol ], [ 0, %scalar.ph2876.preheader ]
  %gep2659.prol = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %indvars.iv2324.prol
  %gep2661.prol = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %indvars.iv2324.prol
  %1811 = load <2 x float>, ptr %gep2659.prol, align 4, !tbaa !9
  %1812 = load <2 x float>, ptr %gep2661.prol, align 4, !tbaa !9
  %1813 = fadd <2 x float> %1811, %1812
  store <2 x float> %1813, ptr %gep2659.prol, align 4, !tbaa !9
  %indvars.iv.next2325.prol = add nuw nsw i64 %indvars.iv2324.prol, 1
  %prol.iter4226.next = add i64 %prol.iter4226, 1
  %prol.iter4226.cmp.not = icmp eq i64 %prol.iter4226.next, %xtraiter4224
  br i1 %prol.iter4226.cmp.not, label %scalar.ph2876.prol.loopexit, label %scalar.ph2876.prol, !llvm.loop !97

scalar.ph2876.prol.loopexit:                      ; preds = %scalar.ph2876.prol, %scalar.ph2876.preheader
  %.lcssa4222.unr = phi <2 x float> [ poison, %scalar.ph2876.preheader ], [ %1813, %scalar.ph2876.prol ]
  %indvars.iv2324.unr = phi i64 [ %indvars.iv2324.ph, %scalar.ph2876.preheader ], [ %indvars.iv.next2325.prol, %scalar.ph2876.prol ]
  %1814 = sub nsw i64 %indvars.iv2324.ph, %wide.trip.count2327
  %1815 = icmp ugt i64 %1814, -4
  br i1 %1815, label %._crit_edge2104, label %scalar.ph2876

scalar.ph2876:                                    ; preds = %scalar.ph2876.prol.loopexit, %scalar.ph2876
  %indvars.iv2324 = phi i64 [ %indvars.iv.next2325.3, %scalar.ph2876 ], [ %indvars.iv2324.unr, %scalar.ph2876.prol.loopexit ]
  %gep2659 = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %indvars.iv2324
  %gep2661 = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %indvars.iv2324
  %1816 = load <2 x float>, ptr %gep2659, align 4, !tbaa !9
  %1817 = load <2 x float>, ptr %gep2661, align 4, !tbaa !9
  %1818 = fadd <2 x float> %1816, %1817
  store <2 x float> %1818, ptr %gep2659, align 4, !tbaa !9
  %indvars.iv.next2325 = add nuw nsw i64 %indvars.iv2324, 1
  %gep2659.1 = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %indvars.iv.next2325
  %gep2661.1 = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %indvars.iv.next2325
  %1819 = load <2 x float>, ptr %gep2659.1, align 4, !tbaa !9
  %1820 = load <2 x float>, ptr %gep2661.1, align 4, !tbaa !9
  %1821 = fadd <2 x float> %1819, %1820
  store <2 x float> %1821, ptr %gep2659.1, align 4, !tbaa !9
  %indvars.iv.next2325.1 = add nuw nsw i64 %indvars.iv2324, 2
  %gep2659.2 = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %indvars.iv.next2325.1
  %gep2661.2 = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %indvars.iv.next2325.1
  %1822 = load <2 x float>, ptr %gep2659.2, align 4, !tbaa !9
  %1823 = load <2 x float>, ptr %gep2661.2, align 4, !tbaa !9
  %1824 = fadd <2 x float> %1822, %1823
  store <2 x float> %1824, ptr %gep2659.2, align 4, !tbaa !9
  %indvars.iv.next2325.2 = add nuw nsw i64 %indvars.iv2324, 3
  %gep2659.3 = getelementptr %struct.complex, ptr %invariant.gep2658, i64 %indvars.iv.next2325.2
  %gep2661.3 = getelementptr %struct.complex, ptr %invariant.gep2660, i64 %indvars.iv.next2325.2
  %1825 = load <2 x float>, ptr %gep2659.3, align 4, !tbaa !9
  %1826 = load <2 x float>, ptr %gep2661.3, align 4, !tbaa !9
  %1827 = fadd <2 x float> %1825, %1826
  store <2 x float> %1827, ptr %gep2659.3, align 4, !tbaa !9
  %indvars.iv.next2325.3 = add nuw nsw i64 %indvars.iv2324, 4
  %exitcond2328.not.3 = icmp eq i64 %indvars.iv.next2325.3, %wide.trip.count2327
  br i1 %exitcond2328.not.3, label %._crit_edge2104, label %scalar.ph2876, !llvm.loop !98

._crit_edge2104:                                  ; preds = %scalar.ph2876.prol.loopexit, %scalar.ph2876, %middle.block2875, %1800
  %1828 = phi <2 x float> [ %1801, %1800 ], [ %1809, %middle.block2875 ], [ %.lcssa4222.unr, %scalar.ph2876.prol.loopexit ], [ %1827, %scalar.ph2876 ]
  %indvars.iv.next2330 = add nuw nsw i64 %indvars.iv2329, 1
  %exitcond2333.not = icmp eq i64 %indvars.iv.next2330, %wide.trip.count2332
  br i1 %exitcond2333.not, label %._crit_edge2111.loopexit, label %1800, !llvm.loop !99

._crit_edge2111.loopexit:                         ; preds = %._crit_edge2104
  store <2 x float> %1828, ptr %20, align 8, !tbaa !9
  br label %._crit_edge2111

._crit_edge2111:                                  ; preds = %._crit_edge2111.loopexit, %._crit_edge2099
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %1829 = load i32, ptr %6, align 4, !tbaa !5
  %.not18072119 = icmp slt i32 %1829, 1
  br i1 %.not18072119, label %._crit_edge2123, label %.lr.ph2122

.lr.ph2122:                                       ; preds = %._crit_edge2111
  %1830 = load i32, ptr %4, align 4, !tbaa !5
  %.not18102112 = icmp slt i32 %1830, 1
  %1831 = add i32 %1830, 1
  %1832 = sext i32 %24 to i64
  %1833 = sext i32 %30 to i64
  %1834 = add nuw i32 %1829, 1
  %wide.trip.count2342 = zext i32 %1834 to i64
  %wide.trip.count2337 = zext i32 %1831 to i64
  %1835 = shl nsw i64 %1832, 3
  %1836 = shl nsw i64 %25, 3
  %1837 = getelementptr i8, ptr %12, i64 %1835
  %1838 = getelementptr i8, ptr %1837, i64 %1836
  %scevgep2896 = getelementptr i8, ptr %1838, i64 8
  %1839 = shl nuw nsw i64 %wide.trip.count2342, 3
  %1840 = add nsw i64 %1839, -8
  %1841 = mul i64 %1840, %1832
  %1842 = shl nuw nsw i64 %wide.trip.count2337, 3
  %1843 = getelementptr i8, ptr %12, i64 %1841
  %1844 = getelementptr i8, ptr %1843, i64 %1836
  %1845 = getelementptr i8, ptr %1844, i64 %1842
  %scevgep2897 = getelementptr i8, ptr %1845, i64 -4
  %1846 = shl nsw i64 %1833, 3
  %1847 = shl nsw i64 %31, 3
  %1848 = getelementptr i8, ptr %16, i64 %1846
  %1849 = getelementptr i8, ptr %1848, i64 %1847
  %scevgep2898 = getelementptr i8, ptr %1849, i64 8
  %1850 = mul i64 %1840, %1833
  %1851 = getelementptr i8, ptr %16, i64 %1850
  %1852 = getelementptr i8, ptr %1851, i64 %1847
  %1853 = getelementptr i8, ptr %1852, i64 %1842
  %scevgep2899 = getelementptr i8, ptr %1853, i64 -4
  %1854 = getelementptr i8, ptr %12, i64 %1835
  %1855 = getelementptr i8, ptr %1854, i64 %1836
  %scevgep2900 = getelementptr i8, ptr %1855, i64 12
  %1856 = getelementptr i8, ptr %12, i64 %1841
  %1857 = getelementptr i8, ptr %1856, i64 %1836
  %scevgep2901 = getelementptr i8, ptr %1857, i64 %1842
  %1858 = getelementptr i8, ptr %16, i64 %1846
  %1859 = getelementptr i8, ptr %1858, i64 %1847
  %scevgep2902 = getelementptr i8, ptr %1859, i64 12
  %1860 = getelementptr i8, ptr %16, i64 %1850
  %1861 = getelementptr i8, ptr %1860, i64 %1847
  %scevgep2903 = getelementptr i8, ptr %1861, i64 %1842
  %1862 = add nsw i64 %wide.trip.count2337, -1
  %min.iters.check2917 = icmp ult i32 %1831, 7
  %bound02904 = icmp ult ptr %scevgep2896, %scevgep2899
  %bound12905 = icmp ult ptr %scevgep2898, %scevgep2897
  %found.conflict2906 = and i1 %bound02904, %bound12905
  %1863 = or i32 %24, %30
  %1864 = icmp slt i32 %1863, 0
  %1865 = or i1 %found.conflict2906, %1864
  %bound02909 = icmp ult ptr %scevgep2900, %scevgep2903
  %bound12910 = icmp ult ptr %scevgep2902, %scevgep2901
  %found.conflict2911 = and i1 %bound02909, %bound12910
  %1866 = or i32 %24, %30
  %1867 = icmp slt i32 %1866, 0
  %1868 = or i1 %found.conflict2911, %1867
  %conflict.rdx2914 = or i1 %1865, %1868
  %n.vec2920 = and i64 %1862, -2
  %ind.end2921 = or i64 %1862, 1
  %cmp.n2934 = icmp eq i64 %1862, %n.vec2920
  br label %1869

1869:                                             ; preds = %.lr.ph2122, %._crit_edge2116
  %indvars.iv2339 = phi i64 [ 1, %.lr.ph2122 ], [ %indvars.iv.next2340, %._crit_edge2116 ]
  br i1 %.not18102112, label %._crit_edge2116, label %.lr.ph2115

.lr.ph2115:                                       ; preds = %1869
  %1870 = mul nsw i64 %indvars.iv2339, %1832
  %1871 = mul nsw i64 %indvars.iv2339, %1833
  %invariant.gep2667 = getelementptr %struct.complex, ptr %26, i64 %1870
  %invariant.gep2669 = getelementptr %struct.complex, ptr %32, i64 %1871
  %brmerge4366 = select i1 %min.iters.check2917, i1 true, i1 %conflict.rdx2914
  br i1 %brmerge4366, label %scalar.ph2916.preheader, label %vector.body2923

vector.body2923:                                  ; preds = %.lr.ph2115, %vector.body2923
  %index2924 = phi i64 [ %index.next2933, %vector.body2923 ], [ 0, %.lr.ph2115 ]
  %offset.idx2925 = or disjoint i64 %index2924, 1
  %1872 = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %offset.idx2925
  %wide.vec2926 = load <4 x float>, ptr %1872, align 4, !tbaa !9
  %1873 = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %offset.idx2925
  %wide.vec2929 = load <4 x float>, ptr %1873, align 4, !tbaa !9
  %interleaved.vec2932 = fsub <4 x float> %wide.vec2926, %wide.vec2929
  store <4 x float> %interleaved.vec2932, ptr %1872, align 4, !tbaa !9
  %index.next2933 = add nuw i64 %index2924, 2
  %1874 = icmp eq i64 %index.next2933, %n.vec2920
  br i1 %1874, label %middle.block2915, label %vector.body2923, !llvm.loop !100

middle.block2915:                                 ; preds = %vector.body2923
  br i1 %cmp.n2934, label %._crit_edge2116, label %scalar.ph2916.preheader

scalar.ph2916.preheader:                          ; preds = %.lr.ph2115, %middle.block2915
  %indvars.iv2334.ph = phi i64 [ 1, %.lr.ph2115 ], [ %ind.end2921, %middle.block2915 ]
  %1875 = sub nsw i64 %wide.trip.count2337, %indvars.iv2334.ph
  %xtraiter4227 = and i64 %1875, 3
  %lcmp.mod4228.not = icmp eq i64 %xtraiter4227, 0
  br i1 %lcmp.mod4228.not, label %scalar.ph2916.prol.loopexit, label %scalar.ph2916.prol

scalar.ph2916.prol:                               ; preds = %scalar.ph2916.preheader, %scalar.ph2916.prol
  %indvars.iv2334.prol = phi i64 [ %indvars.iv.next2335.prol, %scalar.ph2916.prol ], [ %indvars.iv2334.ph, %scalar.ph2916.preheader ]
  %prol.iter4229 = phi i64 [ %prol.iter4229.next, %scalar.ph2916.prol ], [ 0, %scalar.ph2916.preheader ]
  %gep2668.prol = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %indvars.iv2334.prol
  %gep2670.prol = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %indvars.iv2334.prol
  %1876 = load <2 x float>, ptr %gep2668.prol, align 4, !tbaa !9
  %1877 = load <2 x float>, ptr %gep2670.prol, align 4, !tbaa !9
  %1878 = fsub <2 x float> %1876, %1877
  store <2 x float> %1878, ptr %gep2668.prol, align 4, !tbaa !9
  %indvars.iv.next2335.prol = add nuw nsw i64 %indvars.iv2334.prol, 1
  %prol.iter4229.next = add i64 %prol.iter4229, 1
  %prol.iter4229.cmp.not = icmp eq i64 %prol.iter4229.next, %xtraiter4227
  br i1 %prol.iter4229.cmp.not, label %scalar.ph2916.prol.loopexit, label %scalar.ph2916.prol, !llvm.loop !101

scalar.ph2916.prol.loopexit:                      ; preds = %scalar.ph2916.prol, %scalar.ph2916.preheader
  %indvars.iv2334.unr = phi i64 [ %indvars.iv2334.ph, %scalar.ph2916.preheader ], [ %indvars.iv.next2335.prol, %scalar.ph2916.prol ]
  %1879 = sub nsw i64 %indvars.iv2334.ph, %wide.trip.count2337
  %1880 = icmp ugt i64 %1879, -4
  br i1 %1880, label %._crit_edge2116, label %scalar.ph2916

scalar.ph2916:                                    ; preds = %scalar.ph2916.prol.loopexit, %scalar.ph2916
  %indvars.iv2334 = phi i64 [ %indvars.iv.next2335.3, %scalar.ph2916 ], [ %indvars.iv2334.unr, %scalar.ph2916.prol.loopexit ]
  %gep2668 = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %indvars.iv2334
  %gep2670 = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %indvars.iv2334
  %1881 = load <2 x float>, ptr %gep2668, align 4, !tbaa !9
  %1882 = load <2 x float>, ptr %gep2670, align 4, !tbaa !9
  %1883 = fsub <2 x float> %1881, %1882
  store <2 x float> %1883, ptr %gep2668, align 4, !tbaa !9
  %indvars.iv.next2335 = add nuw nsw i64 %indvars.iv2334, 1
  %gep2668.1 = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %indvars.iv.next2335
  %gep2670.1 = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %indvars.iv.next2335
  %1884 = load <2 x float>, ptr %gep2668.1, align 4, !tbaa !9
  %1885 = load <2 x float>, ptr %gep2670.1, align 4, !tbaa !9
  %1886 = fsub <2 x float> %1884, %1885
  store <2 x float> %1886, ptr %gep2668.1, align 4, !tbaa !9
  %indvars.iv.next2335.1 = add nuw nsw i64 %indvars.iv2334, 2
  %gep2668.2 = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %indvars.iv.next2335.1
  %gep2670.2 = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %indvars.iv.next2335.1
  %1887 = load <2 x float>, ptr %gep2668.2, align 4, !tbaa !9
  %1888 = load <2 x float>, ptr %gep2670.2, align 4, !tbaa !9
  %1889 = fsub <2 x float> %1887, %1888
  store <2 x float> %1889, ptr %gep2668.2, align 4, !tbaa !9
  %indvars.iv.next2335.2 = add nuw nsw i64 %indvars.iv2334, 3
  %gep2668.3 = getelementptr %struct.complex, ptr %invariant.gep2667, i64 %indvars.iv.next2335.2
  %gep2670.3 = getelementptr %struct.complex, ptr %invariant.gep2669, i64 %indvars.iv.next2335.2
  %1890 = load <2 x float>, ptr %gep2668.3, align 4, !tbaa !9
  %1891 = load <2 x float>, ptr %gep2670.3, align 4, !tbaa !9
  %1892 = fsub <2 x float> %1890, %1891
  store <2 x float> %1892, ptr %gep2668.3, align 4, !tbaa !9
  %indvars.iv.next2335.3 = add nuw nsw i64 %indvars.iv2334, 4
  %exitcond2338.not.3 = icmp eq i64 %indvars.iv.next2335.3, %wide.trip.count2337
  br i1 %exitcond2338.not.3, label %._crit_edge2116, label %scalar.ph2916, !llvm.loop !102

._crit_edge2116:                                  ; preds = %scalar.ph2916.prol.loopexit, %scalar.ph2916, %middle.block2915, %1869
  %indvars.iv.next2340 = add nuw nsw i64 %indvars.iv2339, 1
  %exitcond2343.not = icmp eq i64 %indvars.iv.next2340, %wide.trip.count2342
  br i1 %exitcond2343.not, label %._crit_edge2123, label %1869, !llvm.loop !103

._crit_edge2123:                                  ; preds = %._crit_edge2116, %._crit_edge2111
  %1893 = load i32, ptr %5, align 4, !tbaa !5
  %1894 = load i32, ptr %7, align 4, !tbaa !5
  %1895 = sub nsw i32 %1893, %1894
  store i32 %1895, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  %1896 = load i32, ptr %6, align 4, !tbaa !5
  %1897 = load i32, ptr %7, align 4, !tbaa !5
  %1898 = sub nsw i32 %1896, %1897
  store i32 %1898, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %1899 = add nsw i32 %1689, %1742
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds %struct.complex, ptr %23, i64 %1900
  %1902 = mul nsw i32 %.1873, %27
  %1903 = sext i32 %1902 to i64
  %1904 = getelementptr %struct.complex, ptr %29, i64 %1903
  %1905 = getelementptr i8, ptr %1904, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1758, ptr noundef nonnull %17, ptr noundef %1901, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %1905, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %1745, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17) #3
  %1906 = load i32, ptr %7, align 4, !tbaa !5
  %.not18082131 = icmp slt i32 %1906, 1
  br i1 %.not18082131, label %.thread1900, label %.lr.ph2134

.lr.ph2134:                                       ; preds = %._crit_edge2123
  %1907 = load i32, ptr %4, align 4, !tbaa !5
  %.not18092124 = icmp slt i32 %1907, 1
  %1908 = add i32 %1907, 1
  %1909 = sext i32 %30 to i64
  %1910 = add nuw i32 %1906, 1
  %wide.trip.count2352 = zext i32 %1910 to i64
  %wide.trip.count2347 = zext i32 %1908 to i64
  %1911 = shl nsw i64 %28, 3
  %1912 = getelementptr i8, ptr %14, i64 %1911
  %scevgep2936 = getelementptr i8, ptr %1912, i64 8
  %1913 = shl nuw nsw i64 %wide.trip.count2347, 3
  %1914 = getelementptr i8, ptr %14, i64 %1911
  %1915 = getelementptr i8, ptr %1914, i64 %1913
  %scevgep2938 = getelementptr i8, ptr %1915, i64 -4
  %1916 = shl nsw i64 %1909, 3
  %1917 = shl nsw i64 %31, 3
  %1918 = getelementptr i8, ptr %16, i64 %1916
  %1919 = getelementptr i8, ptr %1918, i64 %1917
  %scevgep2940 = getelementptr i8, ptr %1919, i64 8
  %1920 = shl nuw nsw i64 %wide.trip.count2352, 3
  %1921 = add nsw i64 %1920, -8
  %1922 = mul i64 %1921, %1909
  %1923 = getelementptr i8, ptr %16, i64 %1922
  %1924 = getelementptr i8, ptr %1923, i64 %1917
  %1925 = getelementptr i8, ptr %1924, i64 %1913
  %scevgep2941 = getelementptr i8, ptr %1925, i64 -4
  %1926 = getelementptr i8, ptr %14, i64 %1911
  %scevgep2942 = getelementptr i8, ptr %1926, i64 12
  %1927 = getelementptr i8, ptr %14, i64 %1911
  %scevgep2944 = getelementptr i8, ptr %1927, i64 %1913
  %1928 = getelementptr i8, ptr %16, i64 %1916
  %1929 = getelementptr i8, ptr %1928, i64 %1917
  %scevgep2946 = getelementptr i8, ptr %1929, i64 12
  %1930 = getelementptr i8, ptr %16, i64 %1922
  %1931 = getelementptr i8, ptr %1930, i64 %1917
  %scevgep2947 = getelementptr i8, ptr %1931, i64 %1913
  %1932 = add nsw i64 %wide.trip.count2347, -1
  %min.iters.check2959 = icmp ult i32 %1908, 7
  %stride.check2955 = icmp slt i32 %30, 0
  %n.vec2962 = and i64 %1932, -2
  %ind.end2963 = or i64 %1932, 1
  %cmp.n2976 = icmp eq i64 %1932, %n.vec2962
  br label %1933

1933:                                             ; preds = %.lr.ph2134, %._crit_edge2128
  %indvars.iv2349 = phi i64 [ 1, %.lr.ph2134 ], [ %indvars.iv.next2350, %._crit_edge2128 ]
  br i1 %.not18092124, label %._crit_edge2128, label %.lr.ph2127

.lr.ph2127:                                       ; preds = %1933
  %1934 = load i32, ptr %5, align 4, !tbaa !5
  %1935 = trunc i64 %indvars.iv2349 to i32
  %1936 = sub i32 %1935, %1906
  %1937 = add i32 %1936, %1934
  %1938 = mul nsw i32 %1937, %27
  %1939 = mul nsw i64 %indvars.iv2349, %1909
  %1940 = sext i32 %1938 to i64
  %invariant.gep2671 = getelementptr %struct.complex, ptr %29, i64 %1940
  %invariant.gep2673 = getelementptr %struct.complex, ptr %32, i64 %1939
  br i1 %min.iters.check2959, label %scalar.ph2958.preheader, label %vector.memcheck2935

vector.memcheck2935:                              ; preds = %.lr.ph2127
  %1941 = shl nsw i64 %1940, 3
  %scevgep2937 = getelementptr i8, ptr %scevgep2936, i64 %1941
  %scevgep2939 = getelementptr i8, ptr %scevgep2938, i64 %1941
  %scevgep2943 = getelementptr i8, ptr %scevgep2942, i64 %1941
  %scevgep2945 = getelementptr i8, ptr %scevgep2944, i64 %1941
  %bound02948 = icmp ult ptr %scevgep2937, %scevgep2941
  %bound12949 = icmp ult ptr %scevgep2940, %scevgep2939
  %found.conflict2950 = and i1 %bound02948, %bound12949
  %bound02952 = icmp ult ptr %scevgep2943, %scevgep2947
  %bound12953 = icmp ult ptr %scevgep2946, %scevgep2945
  %found.conflict2954 = and i1 %bound02952, %bound12953
  %1942 = or i1 %found.conflict2954, %stride.check2955
  %conflict.rdx2956 = or i1 %found.conflict2950, %1942
  br i1 %conflict.rdx2956, label %scalar.ph2958.preheader, label %vector.body2965

vector.body2965:                                  ; preds = %vector.memcheck2935, %vector.body2965
  %index2966 = phi i64 [ %index.next2975, %vector.body2965 ], [ 0, %vector.memcheck2935 ]
  %offset.idx2967 = or disjoint i64 %index2966, 1
  %1943 = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %offset.idx2967
  %wide.vec2968 = load <4 x float>, ptr %1943, align 4, !tbaa !9
  %1944 = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %offset.idx2967
  %wide.vec2971 = load <4 x float>, ptr %1944, align 4, !tbaa !9
  %interleaved.vec2974 = fsub <4 x float> %wide.vec2968, %wide.vec2971
  store <4 x float> %interleaved.vec2974, ptr %1943, align 4, !tbaa !9
  %index.next2975 = add nuw i64 %index2966, 2
  %1945 = icmp eq i64 %index.next2975, %n.vec2962
  br i1 %1945, label %middle.block2957, label %vector.body2965, !llvm.loop !104

middle.block2957:                                 ; preds = %vector.body2965
  br i1 %cmp.n2976, label %._crit_edge2128, label %scalar.ph2958.preheader

scalar.ph2958.preheader:                          ; preds = %middle.block2957, %vector.memcheck2935, %.lr.ph2127
  %indvars.iv2344.ph = phi i64 [ 1, %vector.memcheck2935 ], [ 1, %.lr.ph2127 ], [ %ind.end2963, %middle.block2957 ]
  %1946 = sub nsw i64 %wide.trip.count2347, %indvars.iv2344.ph
  %xtraiter4230 = and i64 %1946, 3
  %lcmp.mod4231.not = icmp eq i64 %xtraiter4230, 0
  br i1 %lcmp.mod4231.not, label %scalar.ph2958.prol.loopexit, label %scalar.ph2958.prol

scalar.ph2958.prol:                               ; preds = %scalar.ph2958.preheader, %scalar.ph2958.prol
  %indvars.iv2344.prol = phi i64 [ %indvars.iv.next2345.prol, %scalar.ph2958.prol ], [ %indvars.iv2344.ph, %scalar.ph2958.preheader ]
  %prol.iter4232 = phi i64 [ %prol.iter4232.next, %scalar.ph2958.prol ], [ 0, %scalar.ph2958.preheader ]
  %gep2672.prol = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %indvars.iv2344.prol
  %gep2674.prol = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %indvars.iv2344.prol
  %1947 = load <2 x float>, ptr %gep2672.prol, align 4, !tbaa !9
  %1948 = load <2 x float>, ptr %gep2674.prol, align 4, !tbaa !9
  %1949 = fsub <2 x float> %1947, %1948
  store <2 x float> %1949, ptr %gep2672.prol, align 4, !tbaa !9
  %indvars.iv.next2345.prol = add nuw nsw i64 %indvars.iv2344.prol, 1
  %prol.iter4232.next = add i64 %prol.iter4232, 1
  %prol.iter4232.cmp.not = icmp eq i64 %prol.iter4232.next, %xtraiter4230
  br i1 %prol.iter4232.cmp.not, label %scalar.ph2958.prol.loopexit, label %scalar.ph2958.prol, !llvm.loop !105

scalar.ph2958.prol.loopexit:                      ; preds = %scalar.ph2958.prol, %scalar.ph2958.preheader
  %indvars.iv2344.unr = phi i64 [ %indvars.iv2344.ph, %scalar.ph2958.preheader ], [ %indvars.iv.next2345.prol, %scalar.ph2958.prol ]
  %1950 = sub nsw i64 %indvars.iv2344.ph, %wide.trip.count2347
  %1951 = icmp ugt i64 %1950, -4
  br i1 %1951, label %._crit_edge2128, label %scalar.ph2958

scalar.ph2958:                                    ; preds = %scalar.ph2958.prol.loopexit, %scalar.ph2958
  %indvars.iv2344 = phi i64 [ %indvars.iv.next2345.3, %scalar.ph2958 ], [ %indvars.iv2344.unr, %scalar.ph2958.prol.loopexit ]
  %gep2672 = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %indvars.iv2344
  %gep2674 = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %indvars.iv2344
  %1952 = load <2 x float>, ptr %gep2672, align 4, !tbaa !9
  %1953 = load <2 x float>, ptr %gep2674, align 4, !tbaa !9
  %1954 = fsub <2 x float> %1952, %1953
  store <2 x float> %1954, ptr %gep2672, align 4, !tbaa !9
  %indvars.iv.next2345 = add nuw nsw i64 %indvars.iv2344, 1
  %gep2672.1 = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %indvars.iv.next2345
  %gep2674.1 = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %indvars.iv.next2345
  %1955 = load <2 x float>, ptr %gep2672.1, align 4, !tbaa !9
  %1956 = load <2 x float>, ptr %gep2674.1, align 4, !tbaa !9
  %1957 = fsub <2 x float> %1955, %1956
  store <2 x float> %1957, ptr %gep2672.1, align 4, !tbaa !9
  %indvars.iv.next2345.1 = add nuw nsw i64 %indvars.iv2344, 2
  %gep2672.2 = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %indvars.iv.next2345.1
  %gep2674.2 = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %indvars.iv.next2345.1
  %1958 = load <2 x float>, ptr %gep2672.2, align 4, !tbaa !9
  %1959 = load <2 x float>, ptr %gep2674.2, align 4, !tbaa !9
  %1960 = fsub <2 x float> %1958, %1959
  store <2 x float> %1960, ptr %gep2672.2, align 4, !tbaa !9
  %indvars.iv.next2345.2 = add nuw nsw i64 %indvars.iv2344, 3
  %gep2672.3 = getelementptr %struct.complex, ptr %invariant.gep2671, i64 %indvars.iv.next2345.2
  %gep2674.3 = getelementptr %struct.complex, ptr %invariant.gep2673, i64 %indvars.iv.next2345.2
  %1961 = load <2 x float>, ptr %gep2672.3, align 4, !tbaa !9
  %1962 = load <2 x float>, ptr %gep2674.3, align 4, !tbaa !9
  %1963 = fsub <2 x float> %1961, %1962
  store <2 x float> %1963, ptr %gep2672.3, align 4, !tbaa !9
  %indvars.iv.next2345.3 = add nuw nsw i64 %indvars.iv2344, 4
  %exitcond2348.not.3 = icmp eq i64 %indvars.iv.next2345.3, %wide.trip.count2347
  br i1 %exitcond2348.not.3, label %._crit_edge2128, label %scalar.ph2958, !llvm.loop !106

._crit_edge2128:                                  ; preds = %scalar.ph2958.prol.loopexit, %scalar.ph2958, %middle.block2957, %1933
  %indvars.iv.next2350 = add nuw nsw i64 %indvars.iv2349, 1
  %exitcond2353.not = icmp eq i64 %indvars.iv.next2350, %wide.trip.count2352
  br i1 %exitcond2353.not, label %.thread1900, label %1933, !llvm.loop !107

1964:                                             ; preds = %1042
  %or.cond25 = and i1 %49, %.not1782
  %or.cond27 = and i1 %.not1779, %or.cond25
  br i1 %or.cond27, label %1965, label %2310

1965:                                             ; preds = %1964
  %1966 = load i32, ptr %7, align 4, !tbaa !5
  %1967 = add i32 %1966, 1
  %1968 = load i32, ptr %4, align 4, !tbaa !5
  %.not1793.not = icmp slt i32 %1966, %1968
  %.1874 = select i1 %.not1793.not, i32 %1967, i32 %1968
  %1969 = load i32, ptr %6, align 4, !tbaa !5
  %1970 = sub nsw i32 %1969, %1966
  %1971 = add nsw i32 %1970, 1
  %.not1794.not = icmp sgt i32 %1966, 0
  %1972 = select i1 %.not1794.not, i32 %1971, i32 %1969
  %1973 = load i32, ptr %5, align 4, !tbaa !5
  %.not17951965 = icmp slt i32 %1973, 1
  br i1 %.not17951965, label %._crit_edge1967, label %.preheader1918.lr.ph

.preheader1918.lr.ph:                             ; preds = %1965
  %.not18021961 = icmp slt i32 %1966, 1
  %1974 = sext i32 %27 to i64
  %1975 = add nuw i32 %1973, 1
  %wide.trip.count2522 = zext i32 %1975 to i64
  %wide.trip.count2517 = zext i32 %1967 to i64
  %1976 = add nsw i64 %wide.trip.count2517, -2
  %1977 = add i32 %30, %1969
  %1978 = add i32 %1977, 1
  %1979 = sub i32 %1978, %1966
  %1980 = shl nsw i64 %1974, 3
  %1981 = shl nsw i64 %28, 3
  %1982 = getelementptr i8, ptr %14, i64 %1980
  %1983 = getelementptr i8, ptr %1982, i64 %1981
  %scevgep3677 = getelementptr i8, ptr %1983, i64 8
  %1984 = shl nuw nsw i64 %wide.trip.count2522, 3
  %1985 = add nsw i64 %1984, -8
  %1986 = mul i64 %1985, %1974
  %1987 = shl nuw nsw i64 %wide.trip.count2517, 3
  %1988 = getelementptr i8, ptr %14, i64 %1986
  %1989 = getelementptr i8, ptr %1988, i64 %1981
  %1990 = getelementptr i8, ptr %1989, i64 %1987
  %scevgep3678 = getelementptr i8, ptr %1990, i64 -4
  %1991 = shl nsw i64 %31, 3
  %scevgep3679 = getelementptr i8, ptr %16, i64 %1991
  %1992 = add i32 %30, %1969
  %1993 = add i32 %1992, 1
  %1994 = sub i32 %1993, %1966
  %1995 = add nsw i64 %1991, %1987
  %1996 = getelementptr i8, ptr %16, i64 %1995
  %scevgep3681 = getelementptr i8, ptr %1996, i64 -12
  %1997 = or disjoint i64 %1991, 4
  %scevgep3683 = getelementptr i8, ptr %16, i64 %1997
  %1998 = getelementptr i8, ptr %16, i64 %1995
  %scevgep3685 = getelementptr i8, ptr %1998, i64 -8
  %1999 = getelementptr i8, ptr %14, i64 %1980
  %2000 = getelementptr i8, ptr %1999, i64 %1981
  %scevgep3687 = getelementptr i8, ptr %2000, i64 12
  %2001 = getelementptr i8, ptr %14, i64 %1986
  %2002 = getelementptr i8, ptr %2001, i64 %1981
  %scevgep3688 = getelementptr i8, ptr %2002, i64 %1987
  %2003 = add nsw i64 %wide.trip.count2517, -1
  %min.iters.check3700 = icmp ult i32 %1967, 13
  %2004 = trunc i64 %1976 to i32
  %2005 = icmp ugt i64 %1976, 4294967295
  %stride.check3696 = icmp slt i32 %27, 0
  %n.vec3703 = and i64 %2003, -4
  %ind.end3704 = or disjoint i64 %n.vec3703, 1
  %cmp.n3719 = icmp eq i64 %2003, %n.vec3703
  br label %.preheader1918

.preheader1918:                                   ; preds = %.preheader1918.lr.ph, %._crit_edge1964
  %indvar3674 = phi i32 [ 0, %.preheader1918.lr.ph ], [ %indvar.next3675, %._crit_edge1964 ]
  %indvars.iv2519 = phi i64 [ 1, %.preheader1918.lr.ph ], [ %indvars.iv.next2520, %._crit_edge1964 ]
  %2006 = mul i32 %30, %indvar3674
  %2007 = add i32 %1994, %2006
  %2008 = sext i32 %2007 to i64
  %2009 = shl nsw i64 %2008, 3
  %scevgep3680 = getelementptr i8, ptr %scevgep3679, i64 %2009
  %scevgep3682 = getelementptr i8, ptr %scevgep3681, i64 %2009
  %scevgep3684 = getelementptr i8, ptr %scevgep3683, i64 %2009
  %scevgep3686 = getelementptr i8, ptr %scevgep3685, i64 %2009
  %2010 = mul i32 %30, %indvar3674
  %2011 = add i32 %1979, %2010
  br i1 %.not18021961, label %._crit_edge1964, label %.lr.ph1963

.lr.ph1963:                                       ; preds = %.preheader1918
  %2012 = trunc i64 %indvars.iv2519 to i32
  %2013 = mul i32 %30, %2012
  %2014 = add i32 %2013, %1970
  %2015 = mul nsw i64 %indvars.iv2519, %1974
  %invariant.gep2755 = getelementptr %struct.complex, ptr %29, i64 %2015
  br i1 %min.iters.check3700, label %scalar.ph3699.preheader, label %vector.scevcheck3673

vector.scevcheck3673:                             ; preds = %.lr.ph1963
  %2016 = add i32 %2011, %2004
  %2017 = icmp slt i32 %2016, %2011
  %2018 = or i1 %2017, %2005
  br i1 %2018, label %scalar.ph3699.preheader, label %vector.memcheck3676

vector.memcheck3676:                              ; preds = %vector.scevcheck3673
  %bound03689 = icmp ult ptr %scevgep3677, %scevgep3682
  %bound13690 = icmp ult ptr %scevgep3680, %scevgep3678
  %found.conflict3691 = and i1 %bound03689, %bound13690
  %bound03693 = icmp ult ptr %scevgep3684, %scevgep3688
  %bound13694 = icmp ult ptr %scevgep3687, %scevgep3686
  %found.conflict3695 = and i1 %bound03693, %bound13694
  %2019 = or i1 %found.conflict3695, %stride.check3696
  %conflict.rdx3697 = or i1 %found.conflict3691, %2019
  br i1 %conflict.rdx3697, label %scalar.ph3699.preheader, label %vector.body3706

vector.body3706:                                  ; preds = %vector.memcheck3676, %vector.body3706
  %index3707 = phi i64 [ %index.next3718, %vector.body3706 ], [ 0, %vector.memcheck3676 ]
  %offset.idx3708 = or disjoint i64 %index3707, 1
  %2020 = or disjoint i64 %index3707, 3
  %2021 = trunc i64 %index3707 to i32
  %2022 = or disjoint i32 %2021, 1
  %2023 = or disjoint i32 %2021, 3
  %2024 = add i32 %2014, %2022
  %2025 = add i32 %2014, %2023
  %2026 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %offset.idx3708
  %2027 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %2020
  %wide.vec3710 = load <4 x float>, ptr %2026, align 4, !tbaa !9
  %wide.vec3711 = load <4 x float>, ptr %2027, align 4, !tbaa !9
  %2028 = sext i32 %2024 to i64
  %2029 = sext i32 %2025 to i64
  %2030 = getelementptr inbounds %struct.complex, ptr %32, i64 %2028
  %2031 = getelementptr inbounds %struct.complex, ptr %32, i64 %2029
  store <4 x float> %wide.vec3710, ptr %2030, align 4, !tbaa !9
  store <4 x float> %wide.vec3711, ptr %2031, align 4, !tbaa !9
  %index.next3718 = add nuw i64 %index3707, 4
  %2032 = icmp eq i64 %index.next3718, %n.vec3703
  br i1 %2032, label %middle.block3698, label %vector.body3706, !llvm.loop !108

middle.block3698:                                 ; preds = %vector.body3706
  br i1 %cmp.n3719, label %._crit_edge1964, label %scalar.ph3699.preheader

scalar.ph3699.preheader:                          ; preds = %middle.block3698, %vector.memcheck3676, %vector.scevcheck3673, %.lr.ph1963
  %indvars.iv2514.ph = phi i64 [ 1, %vector.memcheck3676 ], [ 1, %vector.scevcheck3673 ], [ 1, %.lr.ph1963 ], [ %ind.end3704, %middle.block3698 ]
  %2033 = sub nsw i64 %wide.trip.count2517, %indvars.iv2514.ph
  %xtraiter4281 = and i64 %2033, 3
  %lcmp.mod4282.not = icmp eq i64 %xtraiter4281, 0
  br i1 %lcmp.mod4282.not, label %scalar.ph3699.prol.loopexit, label %scalar.ph3699.prol

scalar.ph3699.prol:                               ; preds = %scalar.ph3699.preheader, %scalar.ph3699.prol
  %indvars.iv2514.prol = phi i64 [ %indvars.iv.next2515.prol, %scalar.ph3699.prol ], [ %indvars.iv2514.ph, %scalar.ph3699.preheader ]
  %prol.iter4283 = phi i64 [ %prol.iter4283.next, %scalar.ph3699.prol ], [ 0, %scalar.ph3699.preheader ]
  %2034 = trunc nuw nsw i64 %indvars.iv2514.prol to i32
  %2035 = add i32 %2014, %2034
  %gep2756.prol = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %indvars.iv2514.prol
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds %struct.complex, ptr %32, i64 %2036
  %2038 = load <2 x float>, ptr %gep2756.prol, align 4, !tbaa !9
  store <2 x float> %2038, ptr %2037, align 4, !tbaa !9
  %indvars.iv.next2515.prol = add nuw nsw i64 %indvars.iv2514.prol, 1
  %prol.iter4283.next = add i64 %prol.iter4283, 1
  %prol.iter4283.cmp.not = icmp eq i64 %prol.iter4283.next, %xtraiter4281
  br i1 %prol.iter4283.cmp.not, label %scalar.ph3699.prol.loopexit, label %scalar.ph3699.prol, !llvm.loop !109

scalar.ph3699.prol.loopexit:                      ; preds = %scalar.ph3699.prol, %scalar.ph3699.preheader
  %indvars.iv2514.unr = phi i64 [ %indvars.iv2514.ph, %scalar.ph3699.preheader ], [ %indvars.iv.next2515.prol, %scalar.ph3699.prol ]
  %2039 = sub nsw i64 %indvars.iv2514.ph, %wide.trip.count2517
  %2040 = icmp ugt i64 %2039, -4
  br i1 %2040, label %._crit_edge1964, label %scalar.ph3699

scalar.ph3699:                                    ; preds = %scalar.ph3699.prol.loopexit, %scalar.ph3699
  %indvars.iv2514 = phi i64 [ %indvars.iv.next2515.3, %scalar.ph3699 ], [ %indvars.iv2514.unr, %scalar.ph3699.prol.loopexit ]
  %2041 = trunc nuw nsw i64 %indvars.iv2514 to i32
  %2042 = add i32 %2014, %2041
  %gep2756 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %indvars.iv2514
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds %struct.complex, ptr %32, i64 %2043
  %2045 = load <2 x float>, ptr %gep2756, align 4, !tbaa !9
  store <2 x float> %2045, ptr %2044, align 4, !tbaa !9
  %indvars.iv.next2515 = add nuw nsw i64 %indvars.iv2514, 1
  %2046 = trunc nuw nsw i64 %indvars.iv.next2515 to i32
  %2047 = add i32 %2014, %2046
  %gep2756.1 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %indvars.iv.next2515
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds %struct.complex, ptr %32, i64 %2048
  %2050 = load <2 x float>, ptr %gep2756.1, align 4, !tbaa !9
  store <2 x float> %2050, ptr %2049, align 4, !tbaa !9
  %indvars.iv.next2515.1 = add nuw nsw i64 %indvars.iv2514, 2
  %2051 = trunc nuw nsw i64 %indvars.iv.next2515.1 to i32
  %2052 = add i32 %2014, %2051
  %gep2756.2 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %indvars.iv.next2515.1
  %2053 = sext i32 %2052 to i64
  %2054 = getelementptr inbounds %struct.complex, ptr %32, i64 %2053
  %2055 = load <2 x float>, ptr %gep2756.2, align 4, !tbaa !9
  store <2 x float> %2055, ptr %2054, align 4, !tbaa !9
  %indvars.iv.next2515.2 = add nuw nsw i64 %indvars.iv2514, 3
  %2056 = trunc nuw nsw i64 %indvars.iv.next2515.2 to i32
  %2057 = add i32 %2014, %2056
  %gep2756.3 = getelementptr %struct.complex, ptr %invariant.gep2755, i64 %indvars.iv.next2515.2
  %2058 = sext i32 %2057 to i64
  %2059 = getelementptr inbounds %struct.complex, ptr %32, i64 %2058
  %2060 = load <2 x float>, ptr %gep2756.3, align 4, !tbaa !9
  store <2 x float> %2060, ptr %2059, align 4, !tbaa !9
  %indvars.iv.next2515.3 = add nuw nsw i64 %indvars.iv2514, 4
  %exitcond2518.not.3 = icmp eq i64 %indvars.iv.next2515.3, %wide.trip.count2517
  br i1 %exitcond2518.not.3, label %._crit_edge1964, label %scalar.ph3699, !llvm.loop !110

._crit_edge1964:                                  ; preds = %scalar.ph3699.prol.loopexit, %scalar.ph3699, %middle.block3698, %.preheader1918
  %indvars.iv.next2520 = add nuw nsw i64 %indvars.iv2519, 1
  %exitcond2523.not = icmp eq i64 %indvars.iv.next2520, %wide.trip.count2522
  %indvar.next3675 = add i32 %indvar3674, 1
  br i1 %exitcond2523.not, label %._crit_edge1967, label %.preheader1918, !llvm.loop !111

._crit_edge1967:                                  ; preds = %._crit_edge1964, %1965
  %2061 = add nsw i32 %1972, %21
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds %struct.complex, ptr %23, i64 %2062
  %2064 = add nsw i32 %1972, %30
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds %struct.complex, ptr %32, i64 %2065
  tail call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %2063, ptr noundef nonnull %9, ptr noundef %2066, ptr noundef nonnull %17) #3
  %2067 = load i32, ptr %4, align 4, !tbaa !5
  %2068 = load i32, ptr %7, align 4, !tbaa !5
  %2069 = sub nsw i32 %2067, %2068
  store i32 %2069, ptr %19, align 4, !tbaa !5
  %2070 = mul nsw i32 %.1874, %21
  %2071 = add nsw i32 %1972, %2070
  %2072 = sext i32 %2071 to i64
  %2073 = getelementptr inbounds %struct.complex, ptr %23, i64 %2072
  %2074 = add nsw i32 %.1874, %27
  %2075 = sext i32 %2074 to i64
  %2076 = getelementptr inbounds %struct.complex, ptr %29, i64 %2075
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %2073, ptr noundef nonnull %9, ptr noundef %2076, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef %2066, ptr noundef nonnull %17) #3
  %2077 = load i32, ptr %6, align 4, !tbaa !5
  %2078 = load i32, ptr %7, align 4, !tbaa !5
  %2079 = sub nsw i32 %2077, %2078
  store i32 %2079, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull @c_b2, ptr noundef %16, ptr noundef nonnull %17) #3
  %2080 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %2080, ptr %19, align 4, !tbaa !5
  %.not17961975 = icmp slt i32 %2080, 1
  br i1 %.not17961975, label %._crit_edge1979, label %.lr.ph1978

.lr.ph1978:                                       ; preds = %._crit_edge1967
  %2081 = load i32, ptr %6, align 4, !tbaa !5
  %.not18011968 = icmp slt i32 %2081, 1
  %2082 = add i32 %2081, 1
  %2083 = sext i32 %30 to i64
  %2084 = sext i32 %24 to i64
  %2085 = add nuw i32 %2080, 1
  %wide.trip.count2532 = zext i32 %2085 to i64
  %wide.trip.count2527 = zext i32 %2082 to i64
  %2086 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %2087 = shl nsw i64 %2083, 3
  %2088 = shl nsw i64 %31, 3
  %2089 = getelementptr i8, ptr %16, i64 %2087
  %2090 = getelementptr i8, ptr %2089, i64 %2088
  %scevgep3721 = getelementptr i8, ptr %2090, i64 8
  %2091 = shl nuw nsw i64 %wide.trip.count2532, 3
  %2092 = add nsw i64 %2091, -8
  %2093 = mul i64 %2092, %2083
  %2094 = shl nuw nsw i64 %wide.trip.count2527, 3
  %2095 = getelementptr i8, ptr %16, i64 %2093
  %2096 = getelementptr i8, ptr %2095, i64 %2088
  %2097 = getelementptr i8, ptr %2096, i64 %2094
  %scevgep3722 = getelementptr i8, ptr %2097, i64 -4
  %2098 = shl nsw i64 %2084, 3
  %2099 = shl nsw i64 %25, 3
  %2100 = getelementptr i8, ptr %12, i64 %2098
  %2101 = getelementptr i8, ptr %2100, i64 %2099
  %scevgep3723 = getelementptr i8, ptr %2101, i64 8
  %2102 = mul i64 %2092, %2084
  %2103 = getelementptr i8, ptr %12, i64 %2102
  %2104 = getelementptr i8, ptr %2103, i64 %2099
  %2105 = getelementptr i8, ptr %2104, i64 %2094
  %scevgep3724 = getelementptr i8, ptr %2105, i64 -4
  %2106 = getelementptr i8, ptr %16, i64 %2087
  %2107 = getelementptr i8, ptr %2106, i64 %2088
  %scevgep3725 = getelementptr i8, ptr %2107, i64 12
  %2108 = getelementptr i8, ptr %16, i64 %2093
  %2109 = getelementptr i8, ptr %2108, i64 %2088
  %scevgep3726 = getelementptr i8, ptr %2109, i64 %2094
  %2110 = getelementptr i8, ptr %12, i64 %2098
  %2111 = getelementptr i8, ptr %2110, i64 %2099
  %scevgep3727 = getelementptr i8, ptr %2111, i64 12
  %2112 = getelementptr i8, ptr %12, i64 %2102
  %2113 = getelementptr i8, ptr %2112, i64 %2099
  %scevgep3728 = getelementptr i8, ptr %2113, i64 %2094
  %2114 = add nsw i64 %wide.trip.count2527, -1
  %min.iters.check3742 = icmp ult i32 %2082, 7
  %bound03729 = icmp ult ptr %scevgep3721, %scevgep3724
  %bound13730 = icmp ult ptr %scevgep3723, %scevgep3722
  %found.conflict3731 = and i1 %bound03729, %bound13730
  %2115 = or i32 %30, %24
  %2116 = icmp slt i32 %2115, 0
  %2117 = or i1 %found.conflict3731, %2116
  %bound03734 = icmp ult ptr %scevgep3725, %scevgep3728
  %bound13735 = icmp ult ptr %scevgep3727, %scevgep3726
  %found.conflict3736 = and i1 %bound03734, %bound13735
  %2118 = or i32 %30, %24
  %2119 = icmp slt i32 %2118, 0
  %2120 = or i1 %found.conflict3736, %2119
  %conflict.rdx3739 = or i1 %2117, %2120
  %n.vec3745 = and i64 %2114, -2
  %ind.end3746 = or i64 %2114, 1
  %cmp.n3759 = icmp eq i64 %2114, %n.vec3745
  br label %2121

2121:                                             ; preds = %.lr.ph1978, %._crit_edge1972
  %indvars.iv2529 = phi i64 [ 1, %.lr.ph1978 ], [ %indvars.iv.next2530, %._crit_edge1972 ]
  %2122 = phi <2 x float> [ %2086, %.lr.ph1978 ], [ %2149, %._crit_edge1972 ]
  br i1 %.not18011968, label %._crit_edge1972, label %.lr.ph1971

.lr.ph1971:                                       ; preds = %2121
  %2123 = mul nsw i64 %indvars.iv2529, %2083
  %2124 = mul nsw i64 %indvars.iv2529, %2084
  %invariant.gep2757 = getelementptr %struct.complex, ptr %32, i64 %2123
  %invariant.gep2759 = getelementptr %struct.complex, ptr %26, i64 %2124
  %brmerge4367 = select i1 %min.iters.check3742, i1 true, i1 %conflict.rdx3739
  br i1 %brmerge4367, label %scalar.ph3741.preheader, label %vector.body3748

vector.body3748:                                  ; preds = %.lr.ph1971, %vector.body3748
  %index3749 = phi i64 [ %index.next3758, %vector.body3748 ], [ 0, %.lr.ph1971 ]
  %offset.idx3750 = or disjoint i64 %index3749, 1
  %2125 = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %offset.idx3750
  %wide.vec3751 = load <4 x float>, ptr %2125, align 4, !tbaa !9
  %2126 = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %offset.idx3750
  %wide.vec3754 = load <4 x float>, ptr %2126, align 4, !tbaa !9
  %2127 = fadd <4 x float> %wide.vec3751, %wide.vec3754
  %2128 = fadd <4 x float> %wide.vec3751, %wide.vec3754
  %interleaved.vec3757 = shufflevector <4 x float> %2127, <4 x float> %2128, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3757, ptr %2125, align 4, !tbaa !9
  %index.next3758 = add nuw i64 %index3749, 2
  %2129 = icmp eq i64 %index.next3758, %n.vec3745
  br i1 %2129, label %middle.block3740, label %vector.body3748, !llvm.loop !112

middle.block3740:                                 ; preds = %vector.body3748
  %2130 = shufflevector <4 x float> %2127, <4 x float> %2128, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3759, label %._crit_edge1972, label %scalar.ph3741.preheader

scalar.ph3741.preheader:                          ; preds = %.lr.ph1971, %middle.block3740
  %indvars.iv2524.ph = phi i64 [ 1, %.lr.ph1971 ], [ %ind.end3746, %middle.block3740 ]
  %2131 = sub nsw i64 %wide.trip.count2527, %indvars.iv2524.ph
  %xtraiter4284 = and i64 %2131, 3
  %lcmp.mod4285.not = icmp eq i64 %xtraiter4284, 0
  br i1 %lcmp.mod4285.not, label %scalar.ph3741.prol.loopexit, label %scalar.ph3741.prol

scalar.ph3741.prol:                               ; preds = %scalar.ph3741.preheader, %scalar.ph3741.prol
  %indvars.iv2524.prol = phi i64 [ %indvars.iv.next2525.prol, %scalar.ph3741.prol ], [ %indvars.iv2524.ph, %scalar.ph3741.preheader ]
  %prol.iter4286 = phi i64 [ %prol.iter4286.next, %scalar.ph3741.prol ], [ 0, %scalar.ph3741.preheader ]
  %gep2758.prol = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %indvars.iv2524.prol
  %gep2760.prol = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %indvars.iv2524.prol
  %2132 = load <2 x float>, ptr %gep2758.prol, align 4, !tbaa !9
  %2133 = load <2 x float>, ptr %gep2760.prol, align 4, !tbaa !9
  %2134 = fadd <2 x float> %2132, %2133
  store <2 x float> %2134, ptr %gep2758.prol, align 4, !tbaa !9
  %indvars.iv.next2525.prol = add nuw nsw i64 %indvars.iv2524.prol, 1
  %prol.iter4286.next = add i64 %prol.iter4286, 1
  %prol.iter4286.cmp.not = icmp eq i64 %prol.iter4286.next, %xtraiter4284
  br i1 %prol.iter4286.cmp.not, label %scalar.ph3741.prol.loopexit, label %scalar.ph3741.prol, !llvm.loop !113

scalar.ph3741.prol.loopexit:                      ; preds = %scalar.ph3741.prol, %scalar.ph3741.preheader
  %.lcssa4197.unr = phi <2 x float> [ poison, %scalar.ph3741.preheader ], [ %2134, %scalar.ph3741.prol ]
  %indvars.iv2524.unr = phi i64 [ %indvars.iv2524.ph, %scalar.ph3741.preheader ], [ %indvars.iv.next2525.prol, %scalar.ph3741.prol ]
  %2135 = sub nsw i64 %indvars.iv2524.ph, %wide.trip.count2527
  %2136 = icmp ugt i64 %2135, -4
  br i1 %2136, label %._crit_edge1972, label %scalar.ph3741

scalar.ph3741:                                    ; preds = %scalar.ph3741.prol.loopexit, %scalar.ph3741
  %indvars.iv2524 = phi i64 [ %indvars.iv.next2525.3, %scalar.ph3741 ], [ %indvars.iv2524.unr, %scalar.ph3741.prol.loopexit ]
  %gep2758 = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %indvars.iv2524
  %gep2760 = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %indvars.iv2524
  %2137 = load <2 x float>, ptr %gep2758, align 4, !tbaa !9
  %2138 = load <2 x float>, ptr %gep2760, align 4, !tbaa !9
  %2139 = fadd <2 x float> %2137, %2138
  store <2 x float> %2139, ptr %gep2758, align 4, !tbaa !9
  %indvars.iv.next2525 = add nuw nsw i64 %indvars.iv2524, 1
  %gep2758.1 = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %indvars.iv.next2525
  %gep2760.1 = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %indvars.iv.next2525
  %2140 = load <2 x float>, ptr %gep2758.1, align 4, !tbaa !9
  %2141 = load <2 x float>, ptr %gep2760.1, align 4, !tbaa !9
  %2142 = fadd <2 x float> %2140, %2141
  store <2 x float> %2142, ptr %gep2758.1, align 4, !tbaa !9
  %indvars.iv.next2525.1 = add nuw nsw i64 %indvars.iv2524, 2
  %gep2758.2 = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %indvars.iv.next2525.1
  %gep2760.2 = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %indvars.iv.next2525.1
  %2143 = load <2 x float>, ptr %gep2758.2, align 4, !tbaa !9
  %2144 = load <2 x float>, ptr %gep2760.2, align 4, !tbaa !9
  %2145 = fadd <2 x float> %2143, %2144
  store <2 x float> %2145, ptr %gep2758.2, align 4, !tbaa !9
  %indvars.iv.next2525.2 = add nuw nsw i64 %indvars.iv2524, 3
  %gep2758.3 = getelementptr %struct.complex, ptr %invariant.gep2757, i64 %indvars.iv.next2525.2
  %gep2760.3 = getelementptr %struct.complex, ptr %invariant.gep2759, i64 %indvars.iv.next2525.2
  %2146 = load <2 x float>, ptr %gep2758.3, align 4, !tbaa !9
  %2147 = load <2 x float>, ptr %gep2760.3, align 4, !tbaa !9
  %2148 = fadd <2 x float> %2146, %2147
  store <2 x float> %2148, ptr %gep2758.3, align 4, !tbaa !9
  %indvars.iv.next2525.3 = add nuw nsw i64 %indvars.iv2524, 4
  %exitcond2528.not.3 = icmp eq i64 %indvars.iv.next2525.3, %wide.trip.count2527
  br i1 %exitcond2528.not.3, label %._crit_edge1972, label %scalar.ph3741, !llvm.loop !114

._crit_edge1972:                                  ; preds = %scalar.ph3741.prol.loopexit, %scalar.ph3741, %middle.block3740, %2121
  %2149 = phi <2 x float> [ %2122, %2121 ], [ %2130, %middle.block3740 ], [ %.lcssa4197.unr, %scalar.ph3741.prol.loopexit ], [ %2148, %scalar.ph3741 ]
  %indvars.iv.next2530 = add nuw nsw i64 %indvars.iv2529, 1
  %exitcond2533.not = icmp eq i64 %indvars.iv.next2530, %wide.trip.count2532
  br i1 %exitcond2533.not, label %._crit_edge1979.loopexit, label %2121, !llvm.loop !115

._crit_edge1979.loopexit:                         ; preds = %._crit_edge1972
  store <2 x float> %2149, ptr %20, align 8, !tbaa !9
  br label %._crit_edge1979

._crit_edge1979:                                  ; preds = %._crit_edge1979.loopexit, %._crit_edge1967
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.7, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %2150 = load i32, ptr %5, align 4, !tbaa !5
  %.not17971987 = icmp slt i32 %2150, 1
  br i1 %.not17971987, label %._crit_edge1991, label %.lr.ph1990

.lr.ph1990:                                       ; preds = %._crit_edge1979
  %2151 = load i32, ptr %6, align 4, !tbaa !5
  %.not18001980 = icmp slt i32 %2151, 1
  %2152 = add i32 %2151, 1
  %2153 = sext i32 %24 to i64
  %2154 = sext i32 %30 to i64
  %2155 = add nuw i32 %2150, 1
  %wide.trip.count2542 = zext i32 %2155 to i64
  %wide.trip.count2537 = zext i32 %2152 to i64
  %2156 = shl nsw i64 %2153, 3
  %2157 = shl nsw i64 %25, 3
  %2158 = getelementptr i8, ptr %12, i64 %2156
  %2159 = getelementptr i8, ptr %2158, i64 %2157
  %scevgep3761 = getelementptr i8, ptr %2159, i64 8
  %2160 = shl nuw nsw i64 %wide.trip.count2542, 3
  %2161 = add nsw i64 %2160, -8
  %2162 = mul i64 %2161, %2153
  %2163 = shl nuw nsw i64 %wide.trip.count2537, 3
  %2164 = getelementptr i8, ptr %12, i64 %2162
  %2165 = getelementptr i8, ptr %2164, i64 %2157
  %2166 = getelementptr i8, ptr %2165, i64 %2163
  %scevgep3762 = getelementptr i8, ptr %2166, i64 -4
  %2167 = shl nsw i64 %2154, 3
  %2168 = shl nsw i64 %31, 3
  %2169 = getelementptr i8, ptr %16, i64 %2167
  %2170 = getelementptr i8, ptr %2169, i64 %2168
  %scevgep3763 = getelementptr i8, ptr %2170, i64 8
  %2171 = mul i64 %2161, %2154
  %2172 = getelementptr i8, ptr %16, i64 %2171
  %2173 = getelementptr i8, ptr %2172, i64 %2168
  %2174 = getelementptr i8, ptr %2173, i64 %2163
  %scevgep3764 = getelementptr i8, ptr %2174, i64 -4
  %2175 = getelementptr i8, ptr %12, i64 %2156
  %2176 = getelementptr i8, ptr %2175, i64 %2157
  %scevgep3765 = getelementptr i8, ptr %2176, i64 12
  %2177 = getelementptr i8, ptr %12, i64 %2162
  %2178 = getelementptr i8, ptr %2177, i64 %2157
  %scevgep3766 = getelementptr i8, ptr %2178, i64 %2163
  %2179 = getelementptr i8, ptr %16, i64 %2167
  %2180 = getelementptr i8, ptr %2179, i64 %2168
  %scevgep3767 = getelementptr i8, ptr %2180, i64 12
  %2181 = getelementptr i8, ptr %16, i64 %2171
  %2182 = getelementptr i8, ptr %2181, i64 %2168
  %scevgep3768 = getelementptr i8, ptr %2182, i64 %2163
  %2183 = add nsw i64 %wide.trip.count2537, -1
  %min.iters.check3782 = icmp ult i32 %2152, 7
  %bound03769 = icmp ult ptr %scevgep3761, %scevgep3764
  %bound13770 = icmp ult ptr %scevgep3763, %scevgep3762
  %found.conflict3771 = and i1 %bound03769, %bound13770
  %2184 = or i32 %24, %30
  %2185 = icmp slt i32 %2184, 0
  %2186 = or i1 %found.conflict3771, %2185
  %bound03774 = icmp ult ptr %scevgep3765, %scevgep3768
  %bound13775 = icmp ult ptr %scevgep3767, %scevgep3766
  %found.conflict3776 = and i1 %bound03774, %bound13775
  %2187 = or i32 %24, %30
  %2188 = icmp slt i32 %2187, 0
  %2189 = or i1 %found.conflict3776, %2188
  %conflict.rdx3779 = or i1 %2186, %2189
  %n.vec3785 = and i64 %2183, -2
  %ind.end3786 = or i64 %2183, 1
  %cmp.n3799 = icmp eq i64 %2183, %n.vec3785
  br label %2190

2190:                                             ; preds = %.lr.ph1990, %._crit_edge1984
  %indvars.iv2539 = phi i64 [ 1, %.lr.ph1990 ], [ %indvars.iv.next2540, %._crit_edge1984 ]
  br i1 %.not18001980, label %._crit_edge1984, label %.lr.ph1983

.lr.ph1983:                                       ; preds = %2190
  %2191 = mul nsw i64 %indvars.iv2539, %2153
  %2192 = mul nsw i64 %indvars.iv2539, %2154
  %invariant.gep2767 = getelementptr %struct.complex, ptr %26, i64 %2191
  %invariant.gep2769 = getelementptr %struct.complex, ptr %32, i64 %2192
  %brmerge4368 = select i1 %min.iters.check3782, i1 true, i1 %conflict.rdx3779
  br i1 %brmerge4368, label %scalar.ph3781.preheader, label %vector.body3788

vector.body3788:                                  ; preds = %.lr.ph1983, %vector.body3788
  %index3789 = phi i64 [ %index.next3798, %vector.body3788 ], [ 0, %.lr.ph1983 ]
  %offset.idx3790 = or disjoint i64 %index3789, 1
  %2193 = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %offset.idx3790
  %wide.vec3791 = load <4 x float>, ptr %2193, align 4, !tbaa !9
  %2194 = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %offset.idx3790
  %wide.vec3794 = load <4 x float>, ptr %2194, align 4, !tbaa !9
  %interleaved.vec3797 = fsub <4 x float> %wide.vec3791, %wide.vec3794
  store <4 x float> %interleaved.vec3797, ptr %2193, align 4, !tbaa !9
  %index.next3798 = add nuw i64 %index3789, 2
  %2195 = icmp eq i64 %index.next3798, %n.vec3785
  br i1 %2195, label %middle.block3780, label %vector.body3788, !llvm.loop !116

middle.block3780:                                 ; preds = %vector.body3788
  br i1 %cmp.n3799, label %._crit_edge1984, label %scalar.ph3781.preheader

scalar.ph3781.preheader:                          ; preds = %.lr.ph1983, %middle.block3780
  %indvars.iv2534.ph = phi i64 [ 1, %.lr.ph1983 ], [ %ind.end3786, %middle.block3780 ]
  %2196 = sub nsw i64 %wide.trip.count2537, %indvars.iv2534.ph
  %xtraiter4287 = and i64 %2196, 3
  %lcmp.mod4288.not = icmp eq i64 %xtraiter4287, 0
  br i1 %lcmp.mod4288.not, label %scalar.ph3781.prol.loopexit, label %scalar.ph3781.prol

scalar.ph3781.prol:                               ; preds = %scalar.ph3781.preheader, %scalar.ph3781.prol
  %indvars.iv2534.prol = phi i64 [ %indvars.iv.next2535.prol, %scalar.ph3781.prol ], [ %indvars.iv2534.ph, %scalar.ph3781.preheader ]
  %prol.iter4289 = phi i64 [ %prol.iter4289.next, %scalar.ph3781.prol ], [ 0, %scalar.ph3781.preheader ]
  %gep2768.prol = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %indvars.iv2534.prol
  %gep2770.prol = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %indvars.iv2534.prol
  %2197 = load <2 x float>, ptr %gep2768.prol, align 4, !tbaa !9
  %2198 = load <2 x float>, ptr %gep2770.prol, align 4, !tbaa !9
  %2199 = fsub <2 x float> %2197, %2198
  store <2 x float> %2199, ptr %gep2768.prol, align 4, !tbaa !9
  %indvars.iv.next2535.prol = add nuw nsw i64 %indvars.iv2534.prol, 1
  %prol.iter4289.next = add i64 %prol.iter4289, 1
  %prol.iter4289.cmp.not = icmp eq i64 %prol.iter4289.next, %xtraiter4287
  br i1 %prol.iter4289.cmp.not, label %scalar.ph3781.prol.loopexit, label %scalar.ph3781.prol, !llvm.loop !117

scalar.ph3781.prol.loopexit:                      ; preds = %scalar.ph3781.prol, %scalar.ph3781.preheader
  %indvars.iv2534.unr = phi i64 [ %indvars.iv2534.ph, %scalar.ph3781.preheader ], [ %indvars.iv.next2535.prol, %scalar.ph3781.prol ]
  %2200 = sub nsw i64 %indvars.iv2534.ph, %wide.trip.count2537
  %2201 = icmp ugt i64 %2200, -4
  br i1 %2201, label %._crit_edge1984, label %scalar.ph3781

scalar.ph3781:                                    ; preds = %scalar.ph3781.prol.loopexit, %scalar.ph3781
  %indvars.iv2534 = phi i64 [ %indvars.iv.next2535.3, %scalar.ph3781 ], [ %indvars.iv2534.unr, %scalar.ph3781.prol.loopexit ]
  %gep2768 = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %indvars.iv2534
  %gep2770 = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %indvars.iv2534
  %2202 = load <2 x float>, ptr %gep2768, align 4, !tbaa !9
  %2203 = load <2 x float>, ptr %gep2770, align 4, !tbaa !9
  %2204 = fsub <2 x float> %2202, %2203
  store <2 x float> %2204, ptr %gep2768, align 4, !tbaa !9
  %indvars.iv.next2535 = add nuw nsw i64 %indvars.iv2534, 1
  %gep2768.1 = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %indvars.iv.next2535
  %gep2770.1 = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %indvars.iv.next2535
  %2205 = load <2 x float>, ptr %gep2768.1, align 4, !tbaa !9
  %2206 = load <2 x float>, ptr %gep2770.1, align 4, !tbaa !9
  %2207 = fsub <2 x float> %2205, %2206
  store <2 x float> %2207, ptr %gep2768.1, align 4, !tbaa !9
  %indvars.iv.next2535.1 = add nuw nsw i64 %indvars.iv2534, 2
  %gep2768.2 = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %indvars.iv.next2535.1
  %gep2770.2 = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %indvars.iv.next2535.1
  %2208 = load <2 x float>, ptr %gep2768.2, align 4, !tbaa !9
  %2209 = load <2 x float>, ptr %gep2770.2, align 4, !tbaa !9
  %2210 = fsub <2 x float> %2208, %2209
  store <2 x float> %2210, ptr %gep2768.2, align 4, !tbaa !9
  %indvars.iv.next2535.2 = add nuw nsw i64 %indvars.iv2534, 3
  %gep2768.3 = getelementptr %struct.complex, ptr %invariant.gep2767, i64 %indvars.iv.next2535.2
  %gep2770.3 = getelementptr %struct.complex, ptr %invariant.gep2769, i64 %indvars.iv.next2535.2
  %2211 = load <2 x float>, ptr %gep2768.3, align 4, !tbaa !9
  %2212 = load <2 x float>, ptr %gep2770.3, align 4, !tbaa !9
  %2213 = fsub <2 x float> %2211, %2212
  store <2 x float> %2213, ptr %gep2768.3, align 4, !tbaa !9
  %indvars.iv.next2535.3 = add nuw nsw i64 %indvars.iv2534, 4
  %exitcond2538.not.3 = icmp eq i64 %indvars.iv.next2535.3, %wide.trip.count2537
  br i1 %exitcond2538.not.3, label %._crit_edge1984, label %scalar.ph3781, !llvm.loop !118

._crit_edge1984:                                  ; preds = %scalar.ph3781.prol.loopexit, %scalar.ph3781, %middle.block3780, %2190
  %indvars.iv.next2540 = add nuw nsw i64 %indvars.iv2539, 1
  %exitcond2543.not = icmp eq i64 %indvars.iv.next2540, %wide.trip.count2542
  br i1 %exitcond2543.not, label %._crit_edge1991, label %2190, !llvm.loop !119

._crit_edge1991:                                  ; preds = %._crit_edge1984, %._crit_edge1979
  %2214 = load i32, ptr %4, align 4, !tbaa !5
  %2215 = load i32, ptr %7, align 4, !tbaa !5
  %2216 = sub nsw i32 %2214, %2215
  store i32 %2216, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %2217 = sext i32 %2070 to i64
  %2218 = getelementptr %struct.complex, ptr %23, i64 %2217
  %2219 = getelementptr i8, ptr %2218, i64 8
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %2219, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %2076, ptr noundef nonnull %15) #3
  %2220 = load i32, ptr %6, align 4, !tbaa !5
  %2221 = load i32, ptr %7, align 4, !tbaa !5
  %2222 = sub nsw i32 %2220, %2221
  store i32 %2222, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %7, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %2063, ptr noundef nonnull %9, ptr noundef %2066, ptr noundef nonnull %17) #3
  %2223 = load i32, ptr %5, align 4, !tbaa !5
  %.not17981999 = icmp slt i32 %2223, 1
  br i1 %.not17981999, label %.thread1900, label %.lr.ph2002

.lr.ph2002:                                       ; preds = %._crit_edge1991
  %2224 = load i32, ptr %7, align 4, !tbaa !5
  %.not17991992 = icmp slt i32 %2224, 1
  %2225 = add i32 %2224, 1
  %2226 = sext i32 %27 to i64
  %2227 = add nuw i32 %2223, 1
  %wide.trip.count2552 = zext i32 %2227 to i64
  %wide.trip.count2547 = zext i32 %2225 to i64
  %2228 = add nsw i64 %wide.trip.count2547, -2
  %2229 = add i32 %30, 1
  %2230 = sub i32 %2229, %2224
  %2231 = shl nsw i64 %2226, 3
  %2232 = shl nsw i64 %28, 3
  %2233 = getelementptr i8, ptr %14, i64 %2231
  %2234 = getelementptr i8, ptr %2233, i64 %2232
  %scevgep3804 = getelementptr i8, ptr %2234, i64 8
  %2235 = shl nuw nsw i64 %wide.trip.count2552, 3
  %2236 = add nsw i64 %2235, -8
  %2237 = mul i64 %2236, %2226
  %2238 = shl nuw nsw i64 %wide.trip.count2547, 3
  %2239 = getelementptr i8, ptr %14, i64 %2237
  %2240 = getelementptr i8, ptr %2239, i64 %2232
  %2241 = getelementptr i8, ptr %2240, i64 %2238
  %scevgep3805 = getelementptr i8, ptr %2241, i64 -4
  %2242 = shl nsw i64 %31, 3
  %scevgep3806 = getelementptr i8, ptr %16, i64 %2242
  %2243 = add i32 %30, 1
  %2244 = sub i32 %2243, %2224
  %2245 = getelementptr i8, ptr %16, i64 %2242
  %2246 = getelementptr i8, ptr %2245, i64 %2238
  %scevgep3808 = getelementptr i8, ptr %2246, i64 -12
  %2247 = getelementptr i8, ptr %14, i64 %2231
  %2248 = getelementptr i8, ptr %2247, i64 %2232
  %scevgep3810 = getelementptr i8, ptr %2248, i64 12
  %2249 = getelementptr i8, ptr %14, i64 %2237
  %2250 = getelementptr i8, ptr %2249, i64 %2232
  %scevgep3811 = getelementptr i8, ptr %2250, i64 %2238
  %2251 = or disjoint i64 %2242, 4
  %scevgep3812 = getelementptr i8, ptr %16, i64 %2251
  %2252 = getelementptr i8, ptr %16, i64 %2242
  %2253 = getelementptr i8, ptr %2252, i64 %2238
  %scevgep3814 = getelementptr i8, ptr %2253, i64 -8
  %2254 = add nsw i64 %wide.trip.count2547, -1
  %min.iters.check3827 = icmp ult i32 %2225, 9
  %2255 = trunc i64 %2228 to i32
  %2256 = icmp ugt i64 %2228, 4294967295
  %stride.check3823 = icmp slt i32 %27, 0
  %n.vec3830 = and i64 %2254, -4
  %ind.end3831 = or disjoint i64 %n.vec3830, 1
  %cmp.n3845 = icmp eq i64 %2254, %n.vec3830
  %2257 = and i64 %wide.trip.count2547, 1
  %lcmp.mod4291.not.not = icmp eq i64 %2257, 0
  %2258 = add nsw i64 %wide.trip.count2547, -1
  br label %2259

2259:                                             ; preds = %.lr.ph2002, %._crit_edge1996
  %indvar3801 = phi i32 [ 0, %.lr.ph2002 ], [ %indvar.next3802, %._crit_edge1996 ]
  %indvars.iv2549 = phi i64 [ 1, %.lr.ph2002 ], [ %indvars.iv.next2550, %._crit_edge1996 ]
  %2260 = mul i32 %30, %indvar3801
  %2261 = add i32 %2244, %2260
  %2262 = mul i32 %30, %indvar3801
  %2263 = add i32 %2230, %2262
  br i1 %.not17991992, label %._crit_edge1996, label %.lr.ph1995

.lr.ph1995:                                       ; preds = %2259
  %2264 = mul nsw i64 %indvars.iv2549, %2226
  %2265 = load i32, ptr %6, align 4, !tbaa !5
  %2266 = trunc i64 %indvars.iv2549 to i32
  %2267 = mul i32 %30, %2266
  %2268 = sub i32 %2267, %2224
  %invariant.gep2771 = getelementptr %struct.complex, ptr %29, i64 %2264
  br i1 %min.iters.check3827, label %scalar.ph3826.preheader, label %vector.scevcheck3800

vector.scevcheck3800:                             ; preds = %.lr.ph1995
  %2269 = add i32 %2265, %2263
  %2270 = add i32 %2269, %2255
  %2271 = icmp slt i32 %2270, %2269
  %2272 = or i1 %2271, %2256
  br i1 %2272, label %scalar.ph3826.preheader, label %vector.memcheck3803

vector.memcheck3803:                              ; preds = %vector.scevcheck3800
  %2273 = add i32 %2265, %2261
  %2274 = sext i32 %2273 to i64
  %2275 = shl nsw i64 %2274, 3
  %scevgep3807 = getelementptr i8, ptr %scevgep3806, i64 %2275
  %scevgep3809 = getelementptr i8, ptr %scevgep3808, i64 %2275
  %scevgep3813 = getelementptr i8, ptr %scevgep3812, i64 %2275
  %scevgep3815 = getelementptr i8, ptr %scevgep3814, i64 %2275
  %bound03816 = icmp ult ptr %scevgep3804, %scevgep3809
  %bound13817 = icmp ult ptr %scevgep3807, %scevgep3805
  %found.conflict3818 = and i1 %bound03816, %bound13817
  %bound03820 = icmp ult ptr %scevgep3810, %scevgep3815
  %bound13821 = icmp ult ptr %scevgep3813, %scevgep3811
  %found.conflict3822 = and i1 %bound03820, %bound13821
  %2276 = or i1 %found.conflict3822, %stride.check3823
  %conflict.rdx3824 = or i1 %found.conflict3818, %2276
  br i1 %conflict.rdx3824, label %scalar.ph3826.preheader, label %vector.body3833

vector.body3833:                                  ; preds = %vector.memcheck3803, %vector.body3833
  %index3834 = phi i64 [ %index.next3844, %vector.body3833 ], [ 0, %vector.memcheck3803 ]
  %offset.idx3835 = or disjoint i64 %index3834, 1
  %2277 = trunc i64 %index3834 to i32
  %2278 = or disjoint i32 %2277, 1
  %2279 = add i32 %2268, %2278
  %2280 = add i32 %2279, %2265
  %2281 = getelementptr %struct.complex, ptr %invariant.gep2771, i64 %offset.idx3835
  %wide.vec3837 = load <8 x float>, ptr %2281, align 4, !tbaa !9
  %2282 = sext i32 %2280 to i64
  %2283 = getelementptr inbounds %struct.complex, ptr %32, i64 %2282
  %wide.vec3840 = load <8 x float>, ptr %2283, align 4, !tbaa !9
  %interleaved.vec3843 = fsub <8 x float> %wide.vec3837, %wide.vec3840
  store <8 x float> %interleaved.vec3843, ptr %2281, align 4, !tbaa !9
  %index.next3844 = add nuw i64 %index3834, 4
  %2284 = icmp eq i64 %index.next3844, %n.vec3830
  br i1 %2284, label %middle.block3825, label %vector.body3833, !llvm.loop !120

middle.block3825:                                 ; preds = %vector.body3833
  br i1 %cmp.n3845, label %._crit_edge1996, label %scalar.ph3826.preheader

scalar.ph3826.preheader:                          ; preds = %middle.block3825, %vector.memcheck3803, %vector.scevcheck3800, %.lr.ph1995
  %indvars.iv2544.ph = phi i64 [ 1, %vector.memcheck3803 ], [ 1, %vector.scevcheck3800 ], [ 1, %.lr.ph1995 ], [ %ind.end3831, %middle.block3825 ]
  br i1 %lcmp.mod4291.not.not, label %scalar.ph3826.prol, label %scalar.ph3826.prol.loopexit

scalar.ph3826.prol:                               ; preds = %scalar.ph3826.preheader
  %2285 = trunc nuw nsw i64 %indvars.iv2544.ph to i32
  %2286 = add i32 %2268, %2285
  %2287 = add i32 %2286, %2265
  %gep2772.prol = getelementptr %struct.complex, ptr %invariant.gep2771, i64 %indvars.iv2544.ph
  %2288 = sext i32 %2287 to i64
  %2289 = getelementptr inbounds %struct.complex, ptr %32, i64 %2288
  %2290 = load <2 x float>, ptr %gep2772.prol, align 4, !tbaa !9
  %2291 = load <2 x float>, ptr %2289, align 4, !tbaa !9
  %2292 = fsub <2 x float> %2290, %2291
  store <2 x float> %2292, ptr %gep2772.prol, align 4, !tbaa !9
  %indvars.iv.next2545.prol = add nuw nsw i64 %indvars.iv2544.ph, 1
  br label %scalar.ph3826.prol.loopexit

scalar.ph3826.prol.loopexit:                      ; preds = %scalar.ph3826.prol, %scalar.ph3826.preheader
  %indvars.iv2544.unr = phi i64 [ %indvars.iv2544.ph, %scalar.ph3826.preheader ], [ %indvars.iv.next2545.prol, %scalar.ph3826.prol ]
  %2293 = icmp eq i64 %indvars.iv2544.ph, %2258
  br i1 %2293, label %._crit_edge1996, label %scalar.ph3826

scalar.ph3826:                                    ; preds = %scalar.ph3826.prol.loopexit, %scalar.ph3826
  %indvars.iv2544 = phi i64 [ %indvars.iv.next2545.1, %scalar.ph3826 ], [ %indvars.iv2544.unr, %scalar.ph3826.prol.loopexit ]
  %2294 = trunc nuw nsw i64 %indvars.iv2544 to i32
  %2295 = add i32 %2268, %2294
  %2296 = add i32 %2295, %2265
  %gep2772 = getelementptr %struct.complex, ptr %invariant.gep2771, i64 %indvars.iv2544
  %2297 = sext i32 %2296 to i64
  %2298 = getelementptr inbounds %struct.complex, ptr %32, i64 %2297
  %2299 = load <2 x float>, ptr %gep2772, align 4, !tbaa !9
  %2300 = load <2 x float>, ptr %2298, align 4, !tbaa !9
  %2301 = fsub <2 x float> %2299, %2300
  store <2 x float> %2301, ptr %gep2772, align 4, !tbaa !9
  %indvars.iv.next2545 = add nuw nsw i64 %indvars.iv2544, 1
  %2302 = trunc nuw nsw i64 %indvars.iv.next2545 to i32
  %2303 = add i32 %2268, %2302
  %2304 = add i32 %2303, %2265
  %gep2772.1 = getelementptr %struct.complex, ptr %invariant.gep2771, i64 %indvars.iv.next2545
  %2305 = sext i32 %2304 to i64
  %2306 = getelementptr inbounds %struct.complex, ptr %32, i64 %2305
  %2307 = load <2 x float>, ptr %gep2772.1, align 4, !tbaa !9
  %2308 = load <2 x float>, ptr %2306, align 4, !tbaa !9
  %2309 = fsub <2 x float> %2307, %2308
  store <2 x float> %2309, ptr %gep2772.1, align 4, !tbaa !9
  %indvars.iv.next2545.1 = add nuw nsw i64 %indvars.iv2544, 2
  %exitcond2548.not.1 = icmp eq i64 %indvars.iv.next2545.1, %wide.trip.count2547
  br i1 %exitcond2548.not.1, label %._crit_edge1996, label %scalar.ph3826, !llvm.loop !121

._crit_edge1996:                                  ; preds = %scalar.ph3826.prol.loopexit, %scalar.ph3826, %middle.block3825, %2259
  %indvars.iv.next2550 = add nuw nsw i64 %indvars.iv2549, 1
  %exitcond2553.not = icmp eq i64 %indvars.iv.next2550, %wide.trip.count2552
  %indvar.next3802 = add i32 %indvar3801, 1
  br i1 %exitcond2553.not, label %.thread1900, label %2259, !llvm.loop !122

2310:                                             ; preds = %1964
  %or.cond31 = and i1 %54, %or.cond25
  br i1 %or.cond31, label %2311, label %.thread1900

2311:                                             ; preds = %2310
  %2312 = load i32, ptr %7, align 4, !tbaa !5
  %2313 = add i32 %2312, 1
  %2314 = load i32, ptr %5, align 4, !tbaa !5
  %.not1783.not = icmp slt i32 %2312, %2314
  %.1875 = select i1 %.not1783.not, i32 %2313, i32 %2314
  %2315 = load i32, ptr %6, align 4, !tbaa !5
  %2316 = sub nsw i32 %2315, %2312
  %2317 = add nsw i32 %2316, 1
  %.not1784.not = icmp sgt i32 %2312, 0
  %2318 = select i1 %.not1784.not, i32 %2317, i32 %2315
  %.not17851922 = icmp slt i32 %2312, 1
  br i1 %.not17851922, label %._crit_edge1926, label %.lr.ph1925

.lr.ph1925:                                       ; preds = %2311
  %2319 = load i32, ptr %4, align 4, !tbaa !5
  %.not17921920 = icmp slt i32 %2319, 1
  %2320 = add i32 %2319, 1
  %2321 = sext i32 %27 to i64
  %wide.trip.count2482 = zext i32 %2313 to i64
  %wide.trip.count2477 = zext i32 %2320 to i64
  %2322 = shl nsw i64 %31, 3
  %2323 = getelementptr i8, ptr %16, i64 %2322
  %scevgep3507 = getelementptr i8, ptr %2323, i64 8
  %2324 = add i32 %2315, 1
  %2325 = sub i32 %2324, %2312
  %2326 = shl nuw nsw i64 %wide.trip.count2477, 3
  %2327 = getelementptr i8, ptr %16, i64 %2322
  %2328 = getelementptr i8, ptr %2327, i64 %2326
  %scevgep3511 = getelementptr i8, ptr %2328, i64 -4
  %2329 = shl nsw i64 %2321, 3
  %2330 = shl nsw i64 %28, 3
  %2331 = getelementptr i8, ptr %14, i64 %2329
  %2332 = getelementptr i8, ptr %2331, i64 %2330
  %scevgep3513 = getelementptr i8, ptr %2332, i64 8
  %2333 = shl nuw nsw i64 %wide.trip.count2482, 3
  %2334 = add nsw i64 %2333, -8
  %2335 = mul i64 %2334, %2321
  %2336 = getelementptr i8, ptr %14, i64 %2335
  %2337 = getelementptr i8, ptr %2336, i64 %2330
  %2338 = getelementptr i8, ptr %2337, i64 %2326
  %scevgep3514 = getelementptr i8, ptr %2338, i64 -4
  %2339 = getelementptr i8, ptr %16, i64 %2322
  %scevgep3515 = getelementptr i8, ptr %2339, i64 12
  %2340 = getelementptr i8, ptr %16, i64 %2322
  %scevgep3517 = getelementptr i8, ptr %2340, i64 %2326
  %2341 = getelementptr i8, ptr %14, i64 %2329
  %2342 = getelementptr i8, ptr %2341, i64 %2330
  %scevgep3519 = getelementptr i8, ptr %2342, i64 12
  %2343 = getelementptr i8, ptr %14, i64 %2335
  %2344 = getelementptr i8, ptr %2343, i64 %2330
  %scevgep3520 = getelementptr i8, ptr %2344, i64 %2326
  %2345 = add nsw i64 %wide.trip.count2477, -1
  %min.iters.check3532 = icmp ult i32 %2320, 11
  %stride.check3528 = icmp slt i32 %27, 0
  %n.vec3535 = and i64 %2345, -4
  %ind.end3536 = or disjoint i64 %n.vec3535, 1
  %cmp.n3550 = icmp eq i64 %2345, %n.vec3535
  br label %2346

2346:                                             ; preds = %.lr.ph1925, %._crit_edge
  %indvar3508 = phi i32 [ 0, %.lr.ph1925 ], [ %indvar.next3509, %._crit_edge ]
  %indvars.iv2479 = phi i64 [ 1, %.lr.ph1925 ], [ %indvars.iv.next2480, %._crit_edge ]
  %2347 = add i32 %2325, %indvar3508
  %2348 = mul i32 %30, %2347
  %2349 = sext i32 %2348 to i64
  %2350 = shl nsw i64 %2349, 3
  %scevgep3510 = getelementptr i8, ptr %scevgep3507, i64 %2350
  %scevgep3512 = getelementptr i8, ptr %scevgep3511, i64 %2350
  %scevgep3516 = getelementptr i8, ptr %scevgep3515, i64 %2350
  %scevgep3518 = getelementptr i8, ptr %scevgep3517, i64 %2350
  br i1 %.not17921920, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %2346
  %2351 = trunc nuw nsw i64 %indvars.iv2479 to i32
  %2352 = add nsw i32 %2316, %2351
  %2353 = mul nsw i32 %2352, %30
  %2354 = mul nsw i64 %indvars.iv2479, %2321
  %2355 = sext i32 %2353 to i64
  %invariant.gep2733 = getelementptr %struct.complex, ptr %29, i64 %2354
  %invariant.gep2735 = getelementptr %struct.complex, ptr %32, i64 %2355
  br i1 %min.iters.check3532, label %scalar.ph3531.preheader, label %vector.memcheck3506

vector.memcheck3506:                              ; preds = %.lr.ph
  %bound03521 = icmp ult ptr %scevgep3510, %scevgep3514
  %bound13522 = icmp ult ptr %scevgep3513, %scevgep3512
  %found.conflict3523 = and i1 %bound03521, %bound13522
  %bound03525 = icmp ult ptr %scevgep3516, %scevgep3520
  %bound13526 = icmp ult ptr %scevgep3519, %scevgep3518
  %found.conflict3527 = and i1 %bound03525, %bound13526
  %2356 = or i1 %found.conflict3527, %stride.check3528
  %conflict.rdx3529 = or i1 %found.conflict3523, %2356
  br i1 %conflict.rdx3529, label %scalar.ph3531.preheader, label %vector.body3538

vector.body3538:                                  ; preds = %vector.memcheck3506, %vector.body3538
  %index3539 = phi i64 [ %index.next3549, %vector.body3538 ], [ 0, %vector.memcheck3506 ]
  %offset.idx3540 = or disjoint i64 %index3539, 1
  %2357 = or disjoint i64 %index3539, 3
  %2358 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %offset.idx3540
  %2359 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %2357
  %wide.vec3541 = load <4 x float>, ptr %2358, align 4, !tbaa !9
  %wide.vec3542 = load <4 x float>, ptr %2359, align 4, !tbaa !9
  %2360 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %offset.idx3540
  %2361 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %2357
  store <4 x float> %wide.vec3541, ptr %2360, align 4, !tbaa !9
  store <4 x float> %wide.vec3542, ptr %2361, align 4, !tbaa !9
  %index.next3549 = add nuw i64 %index3539, 4
  %2362 = icmp eq i64 %index.next3549, %n.vec3535
  br i1 %2362, label %middle.block3530, label %vector.body3538, !llvm.loop !123

middle.block3530:                                 ; preds = %vector.body3538
  br i1 %cmp.n3550, label %._crit_edge, label %scalar.ph3531.preheader

scalar.ph3531.preheader:                          ; preds = %middle.block3530, %vector.memcheck3506, %.lr.ph
  %indvars.iv2474.ph = phi i64 [ 1, %vector.memcheck3506 ], [ 1, %.lr.ph ], [ %ind.end3536, %middle.block3530 ]
  %2363 = sub nsw i64 %wide.trip.count2477, %indvars.iv2474.ph
  %xtraiter4269 = and i64 %2363, 3
  %lcmp.mod4270.not = icmp eq i64 %xtraiter4269, 0
  br i1 %lcmp.mod4270.not, label %scalar.ph3531.prol.loopexit, label %scalar.ph3531.prol

scalar.ph3531.prol:                               ; preds = %scalar.ph3531.preheader, %scalar.ph3531.prol
  %indvars.iv2474.prol = phi i64 [ %indvars.iv.next2475.prol, %scalar.ph3531.prol ], [ %indvars.iv2474.ph, %scalar.ph3531.preheader ]
  %prol.iter4271 = phi i64 [ %prol.iter4271.next, %scalar.ph3531.prol ], [ 0, %scalar.ph3531.preheader ]
  %gep2734.prol = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %indvars.iv2474.prol
  %gep2736.prol = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %indvars.iv2474.prol
  %2364 = load <2 x float>, ptr %gep2734.prol, align 4, !tbaa !9
  store <2 x float> %2364, ptr %gep2736.prol, align 4, !tbaa !9
  %indvars.iv.next2475.prol = add nuw nsw i64 %indvars.iv2474.prol, 1
  %prol.iter4271.next = add i64 %prol.iter4271, 1
  %prol.iter4271.cmp.not = icmp eq i64 %prol.iter4271.next, %xtraiter4269
  br i1 %prol.iter4271.cmp.not, label %scalar.ph3531.prol.loopexit, label %scalar.ph3531.prol, !llvm.loop !124

scalar.ph3531.prol.loopexit:                      ; preds = %scalar.ph3531.prol, %scalar.ph3531.preheader
  %indvars.iv2474.unr = phi i64 [ %indvars.iv2474.ph, %scalar.ph3531.preheader ], [ %indvars.iv.next2475.prol, %scalar.ph3531.prol ]
  %2365 = sub nsw i64 %indvars.iv2474.ph, %wide.trip.count2477
  %2366 = icmp ugt i64 %2365, -4
  br i1 %2366, label %._crit_edge, label %scalar.ph3531

scalar.ph3531:                                    ; preds = %scalar.ph3531.prol.loopexit, %scalar.ph3531
  %indvars.iv2474 = phi i64 [ %indvars.iv.next2475.3, %scalar.ph3531 ], [ %indvars.iv2474.unr, %scalar.ph3531.prol.loopexit ]
  %gep2734 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %indvars.iv2474
  %gep2736 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %indvars.iv2474
  %2367 = load <2 x float>, ptr %gep2734, align 4, !tbaa !9
  store <2 x float> %2367, ptr %gep2736, align 4, !tbaa !9
  %indvars.iv.next2475 = add nuw nsw i64 %indvars.iv2474, 1
  %gep2734.1 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %indvars.iv.next2475
  %gep2736.1 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %indvars.iv.next2475
  %2368 = load <2 x float>, ptr %gep2734.1, align 4, !tbaa !9
  store <2 x float> %2368, ptr %gep2736.1, align 4, !tbaa !9
  %indvars.iv.next2475.1 = add nuw nsw i64 %indvars.iv2474, 2
  %gep2734.2 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %indvars.iv.next2475.1
  %gep2736.2 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %indvars.iv.next2475.1
  %2369 = load <2 x float>, ptr %gep2734.2, align 4, !tbaa !9
  store <2 x float> %2369, ptr %gep2736.2, align 4, !tbaa !9
  %indvars.iv.next2475.2 = add nuw nsw i64 %indvars.iv2474, 3
  %gep2734.3 = getelementptr %struct.complex, ptr %invariant.gep2733, i64 %indvars.iv.next2475.2
  %gep2736.3 = getelementptr %struct.complex, ptr %invariant.gep2735, i64 %indvars.iv.next2475.2
  %2370 = load <2 x float>, ptr %gep2734.3, align 4, !tbaa !9
  store <2 x float> %2370, ptr %gep2736.3, align 4, !tbaa !9
  %indvars.iv.next2475.3 = add nuw nsw i64 %indvars.iv2474, 4
  %exitcond2478.not.3 = icmp eq i64 %indvars.iv.next2475.3, %wide.trip.count2477
  br i1 %exitcond2478.not.3, label %._crit_edge, label %scalar.ph3531, !llvm.loop !125

._crit_edge:                                      ; preds = %scalar.ph3531.prol.loopexit, %scalar.ph3531, %middle.block3530, %2346
  %indvars.iv.next2480 = add nuw nsw i64 %indvars.iv2479, 1
  %exitcond2483.not = icmp eq i64 %indvars.iv.next2480, %wide.trip.count2482
  %indvar.next3509 = add i32 %indvar3508, 1
  br i1 %exitcond2483.not, label %._crit_edge1926, label %2346, !llvm.loop !126

._crit_edge1926:                                  ; preds = %._crit_edge, %2311
  %2371 = add nsw i32 %2318, %21
  %2372 = sext i32 %2371 to i64
  %2373 = getelementptr inbounds %struct.complex, ptr %23, i64 %2372
  %2374 = mul nsw i32 %2318, %30
  %2375 = sext i32 %2374 to i64
  %2376 = getelementptr %struct.complex, ptr %32, i64 %2375
  %2377 = getelementptr i8, ptr %2376, i64 8
  tail call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %2373, ptr noundef nonnull %9, ptr noundef %2377, ptr noundef nonnull %17) #3
  %2378 = load i32, ptr %5, align 4, !tbaa !5
  %2379 = load i32, ptr %7, align 4, !tbaa !5
  %2380 = sub nsw i32 %2378, %2379
  store i32 %2380, ptr %19, align 4, !tbaa !5
  %2381 = mul nsw i32 %.1875, %27
  %2382 = sext i32 %2381 to i64
  %2383 = getelementptr %struct.complex, ptr %29, i64 %2382
  %2384 = getelementptr i8, ptr %2383, i64 8
  %2385 = mul nsw i32 %.1875, %21
  %2386 = add nsw i32 %2318, %2385
  %2387 = sext i32 %2386 to i64
  %2388 = getelementptr inbounds %struct.complex, ptr %23, i64 %2387
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull @c_b1, ptr noundef %2384, ptr noundef nonnull %15, ptr noundef %2388, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %2377, ptr noundef nonnull %17) #3
  %2389 = load i32, ptr %6, align 4, !tbaa !5
  %2390 = load i32, ptr %7, align 4, !tbaa !5
  %2391 = sub nsw i32 %2389, %2390
  store i32 %2391, ptr %19, align 4, !tbaa !5
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %5, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b2, ptr noundef %16, ptr noundef nonnull %17) #3
  %2392 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %2392, ptr %19, align 4, !tbaa !5
  %.not17861933 = icmp slt i32 %2392, 1
  br i1 %.not17861933, label %._crit_edge1937, label %.lr.ph1936

.lr.ph1936:                                       ; preds = %._crit_edge1926
  %2393 = load i32, ptr %4, align 4, !tbaa !5
  %.not17911927 = icmp slt i32 %2393, 1
  %2394 = add i32 %2393, 1
  %2395 = sext i32 %30 to i64
  %2396 = sext i32 %24 to i64
  %2397 = add nuw i32 %2392, 1
  %wide.trip.count2492 = zext i32 %2397 to i64
  %wide.trip.count2487 = zext i32 %2394 to i64
  %2398 = load <2 x float>, ptr %20, align 8, !tbaa !9
  %2399 = shl nsw i64 %2395, 3
  %2400 = shl nsw i64 %31, 3
  %2401 = getelementptr i8, ptr %16, i64 %2399
  %2402 = getelementptr i8, ptr %2401, i64 %2400
  %scevgep3552 = getelementptr i8, ptr %2402, i64 8
  %2403 = shl nuw nsw i64 %wide.trip.count2492, 3
  %2404 = add nsw i64 %2403, -8
  %2405 = mul i64 %2404, %2395
  %2406 = shl nuw nsw i64 %wide.trip.count2487, 3
  %2407 = getelementptr i8, ptr %16, i64 %2405
  %2408 = getelementptr i8, ptr %2407, i64 %2400
  %2409 = getelementptr i8, ptr %2408, i64 %2406
  %scevgep3553 = getelementptr i8, ptr %2409, i64 -4
  %2410 = shl nsw i64 %2396, 3
  %2411 = shl nsw i64 %25, 3
  %2412 = getelementptr i8, ptr %12, i64 %2410
  %2413 = getelementptr i8, ptr %2412, i64 %2411
  %scevgep3554 = getelementptr i8, ptr %2413, i64 8
  %2414 = mul i64 %2404, %2396
  %2415 = getelementptr i8, ptr %12, i64 %2414
  %2416 = getelementptr i8, ptr %2415, i64 %2411
  %2417 = getelementptr i8, ptr %2416, i64 %2406
  %scevgep3555 = getelementptr i8, ptr %2417, i64 -4
  %2418 = getelementptr i8, ptr %16, i64 %2399
  %2419 = getelementptr i8, ptr %2418, i64 %2400
  %scevgep3556 = getelementptr i8, ptr %2419, i64 12
  %2420 = getelementptr i8, ptr %16, i64 %2405
  %2421 = getelementptr i8, ptr %2420, i64 %2400
  %scevgep3557 = getelementptr i8, ptr %2421, i64 %2406
  %2422 = getelementptr i8, ptr %12, i64 %2410
  %2423 = getelementptr i8, ptr %2422, i64 %2411
  %scevgep3558 = getelementptr i8, ptr %2423, i64 12
  %2424 = getelementptr i8, ptr %12, i64 %2414
  %2425 = getelementptr i8, ptr %2424, i64 %2411
  %scevgep3559 = getelementptr i8, ptr %2425, i64 %2406
  %2426 = add nsw i64 %wide.trip.count2487, -1
  %min.iters.check3573 = icmp ult i32 %2394, 7
  %bound03560 = icmp ult ptr %scevgep3552, %scevgep3555
  %bound13561 = icmp ult ptr %scevgep3554, %scevgep3553
  %found.conflict3562 = and i1 %bound03560, %bound13561
  %2427 = or i32 %30, %24
  %2428 = icmp slt i32 %2427, 0
  %2429 = or i1 %found.conflict3562, %2428
  %bound03565 = icmp ult ptr %scevgep3556, %scevgep3559
  %bound13566 = icmp ult ptr %scevgep3558, %scevgep3557
  %found.conflict3567 = and i1 %bound03565, %bound13566
  %2430 = or i32 %30, %24
  %2431 = icmp slt i32 %2430, 0
  %2432 = or i1 %found.conflict3567, %2431
  %conflict.rdx3570 = or i1 %2429, %2432
  %n.vec3576 = and i64 %2426, -2
  %ind.end3577 = or i64 %2426, 1
  %cmp.n3590 = icmp eq i64 %2426, %n.vec3576
  br label %2433

2433:                                             ; preds = %.lr.ph1936, %._crit_edge1931
  %indvars.iv2489 = phi i64 [ 1, %.lr.ph1936 ], [ %indvars.iv.next2490, %._crit_edge1931 ]
  %2434 = phi <2 x float> [ %2398, %.lr.ph1936 ], [ %2461, %._crit_edge1931 ]
  br i1 %.not17911927, label %._crit_edge1931, label %.lr.ph1930

.lr.ph1930:                                       ; preds = %2433
  %2435 = mul nsw i64 %indvars.iv2489, %2395
  %2436 = mul nsw i64 %indvars.iv2489, %2396
  %invariant.gep2737 = getelementptr %struct.complex, ptr %32, i64 %2435
  %invariant.gep2739 = getelementptr %struct.complex, ptr %26, i64 %2436
  %brmerge4369 = select i1 %min.iters.check3573, i1 true, i1 %conflict.rdx3570
  br i1 %brmerge4369, label %scalar.ph3572.preheader, label %vector.body3579

vector.body3579:                                  ; preds = %.lr.ph1930, %vector.body3579
  %index3580 = phi i64 [ %index.next3589, %vector.body3579 ], [ 0, %.lr.ph1930 ]
  %offset.idx3581 = or disjoint i64 %index3580, 1
  %2437 = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %offset.idx3581
  %wide.vec3582 = load <4 x float>, ptr %2437, align 4, !tbaa !9
  %2438 = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %offset.idx3581
  %wide.vec3585 = load <4 x float>, ptr %2438, align 4, !tbaa !9
  %2439 = fadd <4 x float> %wide.vec3582, %wide.vec3585
  %2440 = fadd <4 x float> %wide.vec3582, %wide.vec3585
  %interleaved.vec3588 = shufflevector <4 x float> %2439, <4 x float> %2440, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec3588, ptr %2437, align 4, !tbaa !9
  %index.next3589 = add nuw i64 %index3580, 2
  %2441 = icmp eq i64 %index.next3589, %n.vec3576
  br i1 %2441, label %middle.block3571, label %vector.body3579, !llvm.loop !127

middle.block3571:                                 ; preds = %vector.body3579
  %2442 = shufflevector <4 x float> %2439, <4 x float> %2440, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n3590, label %._crit_edge1931, label %scalar.ph3572.preheader

scalar.ph3572.preheader:                          ; preds = %.lr.ph1930, %middle.block3571
  %indvars.iv2484.ph = phi i64 [ 1, %.lr.ph1930 ], [ %ind.end3577, %middle.block3571 ]
  %2443 = sub nsw i64 %wide.trip.count2487, %indvars.iv2484.ph
  %xtraiter4272 = and i64 %2443, 3
  %lcmp.mod4273.not = icmp eq i64 %xtraiter4272, 0
  br i1 %lcmp.mod4273.not, label %scalar.ph3572.prol.loopexit, label %scalar.ph3572.prol

scalar.ph3572.prol:                               ; preds = %scalar.ph3572.preheader, %scalar.ph3572.prol
  %indvars.iv2484.prol = phi i64 [ %indvars.iv.next2485.prol, %scalar.ph3572.prol ], [ %indvars.iv2484.ph, %scalar.ph3572.preheader ]
  %prol.iter4274 = phi i64 [ %prol.iter4274.next, %scalar.ph3572.prol ], [ 0, %scalar.ph3572.preheader ]
  %gep2738.prol = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %indvars.iv2484.prol
  %gep2740.prol = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %indvars.iv2484.prol
  %2444 = load <2 x float>, ptr %gep2738.prol, align 4, !tbaa !9
  %2445 = load <2 x float>, ptr %gep2740.prol, align 4, !tbaa !9
  %2446 = fadd <2 x float> %2444, %2445
  store <2 x float> %2446, ptr %gep2738.prol, align 4, !tbaa !9
  %indvars.iv.next2485.prol = add nuw nsw i64 %indvars.iv2484.prol, 1
  %prol.iter4274.next = add i64 %prol.iter4274, 1
  %prol.iter4274.cmp.not = icmp eq i64 %prol.iter4274.next, %xtraiter4272
  br i1 %prol.iter4274.cmp.not, label %scalar.ph3572.prol.loopexit, label %scalar.ph3572.prol, !llvm.loop !128

scalar.ph3572.prol.loopexit:                      ; preds = %scalar.ph3572.prol, %scalar.ph3572.preheader
  %.lcssa4202.unr = phi <2 x float> [ poison, %scalar.ph3572.preheader ], [ %2446, %scalar.ph3572.prol ]
  %indvars.iv2484.unr = phi i64 [ %indvars.iv2484.ph, %scalar.ph3572.preheader ], [ %indvars.iv.next2485.prol, %scalar.ph3572.prol ]
  %2447 = sub nsw i64 %indvars.iv2484.ph, %wide.trip.count2487
  %2448 = icmp ugt i64 %2447, -4
  br i1 %2448, label %._crit_edge1931, label %scalar.ph3572

scalar.ph3572:                                    ; preds = %scalar.ph3572.prol.loopexit, %scalar.ph3572
  %indvars.iv2484 = phi i64 [ %indvars.iv.next2485.3, %scalar.ph3572 ], [ %indvars.iv2484.unr, %scalar.ph3572.prol.loopexit ]
  %gep2738 = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %indvars.iv2484
  %gep2740 = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %indvars.iv2484
  %2449 = load <2 x float>, ptr %gep2738, align 4, !tbaa !9
  %2450 = load <2 x float>, ptr %gep2740, align 4, !tbaa !9
  %2451 = fadd <2 x float> %2449, %2450
  store <2 x float> %2451, ptr %gep2738, align 4, !tbaa !9
  %indvars.iv.next2485 = add nuw nsw i64 %indvars.iv2484, 1
  %gep2738.1 = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %indvars.iv.next2485
  %gep2740.1 = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %indvars.iv.next2485
  %2452 = load <2 x float>, ptr %gep2738.1, align 4, !tbaa !9
  %2453 = load <2 x float>, ptr %gep2740.1, align 4, !tbaa !9
  %2454 = fadd <2 x float> %2452, %2453
  store <2 x float> %2454, ptr %gep2738.1, align 4, !tbaa !9
  %indvars.iv.next2485.1 = add nuw nsw i64 %indvars.iv2484, 2
  %gep2738.2 = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %indvars.iv.next2485.1
  %gep2740.2 = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %indvars.iv.next2485.1
  %2455 = load <2 x float>, ptr %gep2738.2, align 4, !tbaa !9
  %2456 = load <2 x float>, ptr %gep2740.2, align 4, !tbaa !9
  %2457 = fadd <2 x float> %2455, %2456
  store <2 x float> %2457, ptr %gep2738.2, align 4, !tbaa !9
  %indvars.iv.next2485.2 = add nuw nsw i64 %indvars.iv2484, 3
  %gep2738.3 = getelementptr %struct.complex, ptr %invariant.gep2737, i64 %indvars.iv.next2485.2
  %gep2740.3 = getelementptr %struct.complex, ptr %invariant.gep2739, i64 %indvars.iv.next2485.2
  %2458 = load <2 x float>, ptr %gep2738.3, align 4, !tbaa !9
  %2459 = load <2 x float>, ptr %gep2740.3, align 4, !tbaa !9
  %2460 = fadd <2 x float> %2458, %2459
  store <2 x float> %2460, ptr %gep2738.3, align 4, !tbaa !9
  %indvars.iv.next2485.3 = add nuw nsw i64 %indvars.iv2484, 4
  %exitcond2488.not.3 = icmp eq i64 %indvars.iv.next2485.3, %wide.trip.count2487
  br i1 %exitcond2488.not.3, label %._crit_edge1931, label %scalar.ph3572, !llvm.loop !129

._crit_edge1931:                                  ; preds = %scalar.ph3572.prol.loopexit, %scalar.ph3572, %middle.block3571, %2433
  %2461 = phi <2 x float> [ %2434, %2433 ], [ %2442, %middle.block3571 ], [ %.lcssa4202.unr, %scalar.ph3572.prol.loopexit ], [ %2460, %scalar.ph3572 ]
  %indvars.iv.next2490 = add nuw nsw i64 %indvars.iv2489, 1
  %exitcond2493.not = icmp eq i64 %indvars.iv.next2490, %wide.trip.count2492
  br i1 %exitcond2493.not, label %._crit_edge1937.loopexit, label %2433, !llvm.loop !130

._crit_edge1937.loopexit:                         ; preds = %._crit_edge1931
  store <2 x float> %2461, ptr %20, align 8, !tbaa !9
  br label %._crit_edge1937

._crit_edge1937:                                  ; preds = %._crit_edge1937.loopexit, %._crit_edge1926
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %1, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17) #3
  %2462 = load i32, ptr %6, align 4, !tbaa !5
  %.not17871945 = icmp slt i32 %2462, 1
  br i1 %.not17871945, label %._crit_edge1949, label %.lr.ph1948

.lr.ph1948:                                       ; preds = %._crit_edge1937
  %2463 = load i32, ptr %4, align 4, !tbaa !5
  %.not17901938 = icmp slt i32 %2463, 1
  %2464 = add i32 %2463, 1
  %2465 = sext i32 %24 to i64
  %2466 = sext i32 %30 to i64
  %2467 = add nuw i32 %2462, 1
  %wide.trip.count2502 = zext i32 %2467 to i64
  %wide.trip.count2497 = zext i32 %2464 to i64
  %2468 = shl nsw i64 %2465, 3
  %2469 = shl nsw i64 %25, 3
  %2470 = getelementptr i8, ptr %12, i64 %2468
  %2471 = getelementptr i8, ptr %2470, i64 %2469
  %scevgep3592 = getelementptr i8, ptr %2471, i64 8
  %2472 = shl nuw nsw i64 %wide.trip.count2502, 3
  %2473 = add nsw i64 %2472, -8
  %2474 = mul i64 %2473, %2465
  %2475 = shl nuw nsw i64 %wide.trip.count2497, 3
  %2476 = getelementptr i8, ptr %12, i64 %2474
  %2477 = getelementptr i8, ptr %2476, i64 %2469
  %2478 = getelementptr i8, ptr %2477, i64 %2475
  %scevgep3593 = getelementptr i8, ptr %2478, i64 -4
  %2479 = shl nsw i64 %2466, 3
  %2480 = shl nsw i64 %31, 3
  %2481 = getelementptr i8, ptr %16, i64 %2479
  %2482 = getelementptr i8, ptr %2481, i64 %2480
  %scevgep3594 = getelementptr i8, ptr %2482, i64 8
  %2483 = mul i64 %2473, %2466
  %2484 = getelementptr i8, ptr %16, i64 %2483
  %2485 = getelementptr i8, ptr %2484, i64 %2480
  %2486 = getelementptr i8, ptr %2485, i64 %2475
  %scevgep3595 = getelementptr i8, ptr %2486, i64 -4
  %2487 = getelementptr i8, ptr %12, i64 %2468
  %2488 = getelementptr i8, ptr %2487, i64 %2469
  %scevgep3596 = getelementptr i8, ptr %2488, i64 12
  %2489 = getelementptr i8, ptr %12, i64 %2474
  %2490 = getelementptr i8, ptr %2489, i64 %2469
  %scevgep3597 = getelementptr i8, ptr %2490, i64 %2475
  %2491 = getelementptr i8, ptr %16, i64 %2479
  %2492 = getelementptr i8, ptr %2491, i64 %2480
  %scevgep3598 = getelementptr i8, ptr %2492, i64 12
  %2493 = getelementptr i8, ptr %16, i64 %2483
  %2494 = getelementptr i8, ptr %2493, i64 %2480
  %scevgep3599 = getelementptr i8, ptr %2494, i64 %2475
  %2495 = add nsw i64 %wide.trip.count2497, -1
  %min.iters.check3613 = icmp ult i32 %2464, 7
  %bound03600 = icmp ult ptr %scevgep3592, %scevgep3595
  %bound13601 = icmp ult ptr %scevgep3594, %scevgep3593
  %found.conflict3602 = and i1 %bound03600, %bound13601
  %2496 = or i32 %24, %30
  %2497 = icmp slt i32 %2496, 0
  %2498 = or i1 %found.conflict3602, %2497
  %bound03605 = icmp ult ptr %scevgep3596, %scevgep3599
  %bound13606 = icmp ult ptr %scevgep3598, %scevgep3597
  %found.conflict3607 = and i1 %bound03605, %bound13606
  %2499 = or i32 %24, %30
  %2500 = icmp slt i32 %2499, 0
  %2501 = or i1 %found.conflict3607, %2500
  %conflict.rdx3610 = or i1 %2498, %2501
  %n.vec3616 = and i64 %2495, -2
  %ind.end3617 = or i64 %2495, 1
  %cmp.n3630 = icmp eq i64 %2495, %n.vec3616
  br label %2502

2502:                                             ; preds = %.lr.ph1948, %._crit_edge1942
  %indvars.iv2499 = phi i64 [ 1, %.lr.ph1948 ], [ %indvars.iv.next2500, %._crit_edge1942 ]
  br i1 %.not17901938, label %._crit_edge1942, label %.lr.ph1941

.lr.ph1941:                                       ; preds = %2502
  %2503 = mul nsw i64 %indvars.iv2499, %2465
  %2504 = mul nsw i64 %indvars.iv2499, %2466
  %invariant.gep2747 = getelementptr %struct.complex, ptr %26, i64 %2503
  %invariant.gep2749 = getelementptr %struct.complex, ptr %32, i64 %2504
  %brmerge4370 = select i1 %min.iters.check3613, i1 true, i1 %conflict.rdx3610
  br i1 %brmerge4370, label %scalar.ph3612.preheader, label %vector.body3619

vector.body3619:                                  ; preds = %.lr.ph1941, %vector.body3619
  %index3620 = phi i64 [ %index.next3629, %vector.body3619 ], [ 0, %.lr.ph1941 ]
  %offset.idx3621 = or disjoint i64 %index3620, 1
  %2505 = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %offset.idx3621
  %wide.vec3622 = load <4 x float>, ptr %2505, align 4, !tbaa !9
  %2506 = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %offset.idx3621
  %wide.vec3625 = load <4 x float>, ptr %2506, align 4, !tbaa !9
  %interleaved.vec3628 = fsub <4 x float> %wide.vec3622, %wide.vec3625
  store <4 x float> %interleaved.vec3628, ptr %2505, align 4, !tbaa !9
  %index.next3629 = add nuw i64 %index3620, 2
  %2507 = icmp eq i64 %index.next3629, %n.vec3616
  br i1 %2507, label %middle.block3611, label %vector.body3619, !llvm.loop !131

middle.block3611:                                 ; preds = %vector.body3619
  br i1 %cmp.n3630, label %._crit_edge1942, label %scalar.ph3612.preheader

scalar.ph3612.preheader:                          ; preds = %.lr.ph1941, %middle.block3611
  %indvars.iv2494.ph = phi i64 [ 1, %.lr.ph1941 ], [ %ind.end3617, %middle.block3611 ]
  %2508 = sub nsw i64 %wide.trip.count2497, %indvars.iv2494.ph
  %xtraiter4275 = and i64 %2508, 3
  %lcmp.mod4276.not = icmp eq i64 %xtraiter4275, 0
  br i1 %lcmp.mod4276.not, label %scalar.ph3612.prol.loopexit, label %scalar.ph3612.prol

scalar.ph3612.prol:                               ; preds = %scalar.ph3612.preheader, %scalar.ph3612.prol
  %indvars.iv2494.prol = phi i64 [ %indvars.iv.next2495.prol, %scalar.ph3612.prol ], [ %indvars.iv2494.ph, %scalar.ph3612.preheader ]
  %prol.iter4277 = phi i64 [ %prol.iter4277.next, %scalar.ph3612.prol ], [ 0, %scalar.ph3612.preheader ]
  %gep2748.prol = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %indvars.iv2494.prol
  %gep2750.prol = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %indvars.iv2494.prol
  %2509 = load <2 x float>, ptr %gep2748.prol, align 4, !tbaa !9
  %2510 = load <2 x float>, ptr %gep2750.prol, align 4, !tbaa !9
  %2511 = fsub <2 x float> %2509, %2510
  store <2 x float> %2511, ptr %gep2748.prol, align 4, !tbaa !9
  %indvars.iv.next2495.prol = add nuw nsw i64 %indvars.iv2494.prol, 1
  %prol.iter4277.next = add i64 %prol.iter4277, 1
  %prol.iter4277.cmp.not = icmp eq i64 %prol.iter4277.next, %xtraiter4275
  br i1 %prol.iter4277.cmp.not, label %scalar.ph3612.prol.loopexit, label %scalar.ph3612.prol, !llvm.loop !132

scalar.ph3612.prol.loopexit:                      ; preds = %scalar.ph3612.prol, %scalar.ph3612.preheader
  %indvars.iv2494.unr = phi i64 [ %indvars.iv2494.ph, %scalar.ph3612.preheader ], [ %indvars.iv.next2495.prol, %scalar.ph3612.prol ]
  %2512 = sub nsw i64 %indvars.iv2494.ph, %wide.trip.count2497
  %2513 = icmp ugt i64 %2512, -4
  br i1 %2513, label %._crit_edge1942, label %scalar.ph3612

scalar.ph3612:                                    ; preds = %scalar.ph3612.prol.loopexit, %scalar.ph3612
  %indvars.iv2494 = phi i64 [ %indvars.iv.next2495.3, %scalar.ph3612 ], [ %indvars.iv2494.unr, %scalar.ph3612.prol.loopexit ]
  %gep2748 = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %indvars.iv2494
  %gep2750 = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %indvars.iv2494
  %2514 = load <2 x float>, ptr %gep2748, align 4, !tbaa !9
  %2515 = load <2 x float>, ptr %gep2750, align 4, !tbaa !9
  %2516 = fsub <2 x float> %2514, %2515
  store <2 x float> %2516, ptr %gep2748, align 4, !tbaa !9
  %indvars.iv.next2495 = add nuw nsw i64 %indvars.iv2494, 1
  %gep2748.1 = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %indvars.iv.next2495
  %gep2750.1 = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %indvars.iv.next2495
  %2517 = load <2 x float>, ptr %gep2748.1, align 4, !tbaa !9
  %2518 = load <2 x float>, ptr %gep2750.1, align 4, !tbaa !9
  %2519 = fsub <2 x float> %2517, %2518
  store <2 x float> %2519, ptr %gep2748.1, align 4, !tbaa !9
  %indvars.iv.next2495.1 = add nuw nsw i64 %indvars.iv2494, 2
  %gep2748.2 = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %indvars.iv.next2495.1
  %gep2750.2 = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %indvars.iv.next2495.1
  %2520 = load <2 x float>, ptr %gep2748.2, align 4, !tbaa !9
  %2521 = load <2 x float>, ptr %gep2750.2, align 4, !tbaa !9
  %2522 = fsub <2 x float> %2520, %2521
  store <2 x float> %2522, ptr %gep2748.2, align 4, !tbaa !9
  %indvars.iv.next2495.2 = add nuw nsw i64 %indvars.iv2494, 3
  %gep2748.3 = getelementptr %struct.complex, ptr %invariant.gep2747, i64 %indvars.iv.next2495.2
  %gep2750.3 = getelementptr %struct.complex, ptr %invariant.gep2749, i64 %indvars.iv.next2495.2
  %2523 = load <2 x float>, ptr %gep2748.3, align 4, !tbaa !9
  %2524 = load <2 x float>, ptr %gep2750.3, align 4, !tbaa !9
  %2525 = fsub <2 x float> %2523, %2524
  store <2 x float> %2525, ptr %gep2748.3, align 4, !tbaa !9
  %indvars.iv.next2495.3 = add nuw nsw i64 %indvars.iv2494, 4
  %exitcond2498.not.3 = icmp eq i64 %indvars.iv.next2495.3, %wide.trip.count2497
  br i1 %exitcond2498.not.3, label %._crit_edge1942, label %scalar.ph3612, !llvm.loop !133

._crit_edge1942:                                  ; preds = %scalar.ph3612.prol.loopexit, %scalar.ph3612, %middle.block3611, %2502
  %indvars.iv.next2500 = add nuw nsw i64 %indvars.iv2499, 1
  %exitcond2503.not = icmp eq i64 %indvars.iv.next2500, %wide.trip.count2502
  br i1 %exitcond2503.not, label %._crit_edge1949, label %2502, !llvm.loop !134

._crit_edge1949:                                  ; preds = %._crit_edge1942, %._crit_edge1937
  %2526 = load i32, ptr %5, align 4, !tbaa !5
  %2527 = load i32, ptr %7, align 4, !tbaa !5
  %2528 = sub nsw i32 %2526, %2527
  store i32 %2528, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  %2529 = sext i32 %2385 to i64
  %2530 = getelementptr %struct.complex, ptr %23, i64 %2529
  %2531 = getelementptr i8, ptr %2530, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %2531, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %2384, ptr noundef nonnull %15) #3
  %2532 = load i32, ptr %6, align 4, !tbaa !5
  %2533 = load i32, ptr %7, align 4, !tbaa !5
  %2534 = sub nsw i32 %2532, %2533
  store i32 %2534, ptr %19, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %20, align 8, !tbaa !9
  call void @cgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #3
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef nonnull @c_b1, ptr noundef %2373, ptr noundef nonnull %9, ptr noundef %2377, ptr noundef nonnull %17) #3
  %2535 = load i32, ptr %7, align 4, !tbaa !5
  %.not17881957 = icmp slt i32 %2535, 1
  br i1 %.not17881957, label %.thread1900, label %.lr.ph1960

.lr.ph1960:                                       ; preds = %._crit_edge1949
  %2536 = load i32, ptr %4, align 4, !tbaa !5
  %.not17891950 = icmp slt i32 %2536, 1
  %2537 = add i32 %2536, 1
  %2538 = sext i32 %27 to i64
  %2539 = add nuw i32 %2535, 1
  %wide.trip.count2512 = zext i32 %2539 to i64
  %wide.trip.count2507 = zext i32 %2537 to i64
  %2540 = shl nsw i64 %2538, 3
  %2541 = shl nsw i64 %28, 3
  %2542 = getelementptr i8, ptr %14, i64 %2540
  %2543 = getelementptr i8, ptr %2542, i64 %2541
  %scevgep3632 = getelementptr i8, ptr %2543, i64 8
  %2544 = shl nuw nsw i64 %wide.trip.count2512, 3
  %2545 = add nsw i64 %2544, -8
  %2546 = mul i64 %2545, %2538
  %2547 = shl nuw nsw i64 %wide.trip.count2507, 3
  %2548 = getelementptr i8, ptr %14, i64 %2546
  %2549 = getelementptr i8, ptr %2548, i64 %2541
  %2550 = getelementptr i8, ptr %2549, i64 %2547
  %scevgep3633 = getelementptr i8, ptr %2550, i64 -4
  %2551 = shl nsw i64 %31, 3
  %2552 = getelementptr i8, ptr %16, i64 %2551
  %scevgep3634 = getelementptr i8, ptr %2552, i64 8
  %2553 = getelementptr i8, ptr %16, i64 %2551
  %2554 = getelementptr i8, ptr %2553, i64 %2547
  %scevgep3636 = getelementptr i8, ptr %2554, i64 -4
  %2555 = getelementptr i8, ptr %14, i64 %2540
  %2556 = getelementptr i8, ptr %2555, i64 %2541
  %scevgep3638 = getelementptr i8, ptr %2556, i64 12
  %2557 = getelementptr i8, ptr %14, i64 %2546
  %2558 = getelementptr i8, ptr %2557, i64 %2541
  %scevgep3639 = getelementptr i8, ptr %2558, i64 %2547
  %2559 = getelementptr i8, ptr %16, i64 %2551
  %scevgep3640 = getelementptr i8, ptr %2559, i64 12
  %2560 = getelementptr i8, ptr %16, i64 %2551
  %scevgep3642 = getelementptr i8, ptr %2560, i64 %2547
  %2561 = add nsw i64 %wide.trip.count2507, -1
  %min.iters.check3655 = icmp ult i32 %2537, 7
  %stride.check3651 = icmp slt i32 %27, 0
  %n.vec3658 = and i64 %2561, -2
  %ind.end3659 = or i64 %2561, 1
  %cmp.n3672 = icmp eq i64 %2561, %n.vec3658
  br label %2562

2562:                                             ; preds = %.lr.ph1960, %._crit_edge1954
  %indvars.iv2509 = phi i64 [ 1, %.lr.ph1960 ], [ %indvars.iv.next2510, %._crit_edge1954 ]
  br i1 %.not17891950, label %._crit_edge1954, label %.lr.ph1953

.lr.ph1953:                                       ; preds = %2562
  %2563 = mul nsw i64 %indvars.iv2509, %2538
  %2564 = load i32, ptr %6, align 4, !tbaa !5
  %2565 = trunc i64 %indvars.iv2509 to i32
  %2566 = sub i32 %2565, %2535
  %2567 = add i32 %2566, %2564
  %2568 = mul nsw i32 %2567, %30
  %2569 = sext i32 %2568 to i64
  %invariant.gep2751 = getelementptr %struct.complex, ptr %29, i64 %2563
  %invariant.gep2753 = getelementptr %struct.complex, ptr %32, i64 %2569
  br i1 %min.iters.check3655, label %scalar.ph3654.preheader, label %vector.memcheck3631

vector.memcheck3631:                              ; preds = %.lr.ph1953
  %2570 = shl nsw i64 %2569, 3
  %scevgep3635 = getelementptr i8, ptr %scevgep3634, i64 %2570
  %scevgep3637 = getelementptr i8, ptr %scevgep3636, i64 %2570
  %scevgep3641 = getelementptr i8, ptr %scevgep3640, i64 %2570
  %scevgep3643 = getelementptr i8, ptr %scevgep3642, i64 %2570
  %bound03644 = icmp ult ptr %scevgep3632, %scevgep3637
  %bound13645 = icmp ult ptr %scevgep3635, %scevgep3633
  %found.conflict3646 = and i1 %bound03644, %bound13645
  %bound03648 = icmp ult ptr %scevgep3638, %scevgep3643
  %bound13649 = icmp ult ptr %scevgep3641, %scevgep3639
  %found.conflict3650 = and i1 %bound03648, %bound13649
  %2571 = or i1 %found.conflict3650, %stride.check3651
  %conflict.rdx3652 = or i1 %found.conflict3646, %2571
  br i1 %conflict.rdx3652, label %scalar.ph3654.preheader, label %vector.body3661

vector.body3661:                                  ; preds = %vector.memcheck3631, %vector.body3661
  %index3662 = phi i64 [ %index.next3671, %vector.body3661 ], [ 0, %vector.memcheck3631 ]
  %offset.idx3663 = or disjoint i64 %index3662, 1
  %2572 = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %offset.idx3663
  %wide.vec3664 = load <4 x float>, ptr %2572, align 4, !tbaa !9
  %2573 = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %offset.idx3663
  %wide.vec3667 = load <4 x float>, ptr %2573, align 4, !tbaa !9
  %interleaved.vec3670 = fsub <4 x float> %wide.vec3664, %wide.vec3667
  store <4 x float> %interleaved.vec3670, ptr %2572, align 4, !tbaa !9
  %index.next3671 = add nuw i64 %index3662, 2
  %2574 = icmp eq i64 %index.next3671, %n.vec3658
  br i1 %2574, label %middle.block3653, label %vector.body3661, !llvm.loop !135

middle.block3653:                                 ; preds = %vector.body3661
  br i1 %cmp.n3672, label %._crit_edge1954, label %scalar.ph3654.preheader

scalar.ph3654.preheader:                          ; preds = %middle.block3653, %vector.memcheck3631, %.lr.ph1953
  %indvars.iv2504.ph = phi i64 [ 1, %vector.memcheck3631 ], [ 1, %.lr.ph1953 ], [ %ind.end3659, %middle.block3653 ]
  %2575 = sub nsw i64 %wide.trip.count2507, %indvars.iv2504.ph
  %xtraiter4278 = and i64 %2575, 3
  %lcmp.mod4279.not = icmp eq i64 %xtraiter4278, 0
  br i1 %lcmp.mod4279.not, label %scalar.ph3654.prol.loopexit, label %scalar.ph3654.prol

scalar.ph3654.prol:                               ; preds = %scalar.ph3654.preheader, %scalar.ph3654.prol
  %indvars.iv2504.prol = phi i64 [ %indvars.iv.next2505.prol, %scalar.ph3654.prol ], [ %indvars.iv2504.ph, %scalar.ph3654.preheader ]
  %prol.iter4280 = phi i64 [ %prol.iter4280.next, %scalar.ph3654.prol ], [ 0, %scalar.ph3654.preheader ]
  %gep2752.prol = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %indvars.iv2504.prol
  %gep2754.prol = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %indvars.iv2504.prol
  %2576 = load <2 x float>, ptr %gep2752.prol, align 4, !tbaa !9
  %2577 = load <2 x float>, ptr %gep2754.prol, align 4, !tbaa !9
  %2578 = fsub <2 x float> %2576, %2577
  store <2 x float> %2578, ptr %gep2752.prol, align 4, !tbaa !9
  %indvars.iv.next2505.prol = add nuw nsw i64 %indvars.iv2504.prol, 1
  %prol.iter4280.next = add i64 %prol.iter4280, 1
  %prol.iter4280.cmp.not = icmp eq i64 %prol.iter4280.next, %xtraiter4278
  br i1 %prol.iter4280.cmp.not, label %scalar.ph3654.prol.loopexit, label %scalar.ph3654.prol, !llvm.loop !136

scalar.ph3654.prol.loopexit:                      ; preds = %scalar.ph3654.prol, %scalar.ph3654.preheader
  %indvars.iv2504.unr = phi i64 [ %indvars.iv2504.ph, %scalar.ph3654.preheader ], [ %indvars.iv.next2505.prol, %scalar.ph3654.prol ]
  %2579 = sub nsw i64 %indvars.iv2504.ph, %wide.trip.count2507
  %2580 = icmp ugt i64 %2579, -4
  br i1 %2580, label %._crit_edge1954, label %scalar.ph3654

scalar.ph3654:                                    ; preds = %scalar.ph3654.prol.loopexit, %scalar.ph3654
  %indvars.iv2504 = phi i64 [ %indvars.iv.next2505.3, %scalar.ph3654 ], [ %indvars.iv2504.unr, %scalar.ph3654.prol.loopexit ]
  %gep2752 = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %indvars.iv2504
  %gep2754 = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %indvars.iv2504
  %2581 = load <2 x float>, ptr %gep2752, align 4, !tbaa !9
  %2582 = load <2 x float>, ptr %gep2754, align 4, !tbaa !9
  %2583 = fsub <2 x float> %2581, %2582
  store <2 x float> %2583, ptr %gep2752, align 4, !tbaa !9
  %indvars.iv.next2505 = add nuw nsw i64 %indvars.iv2504, 1
  %gep2752.1 = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %indvars.iv.next2505
  %gep2754.1 = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %indvars.iv.next2505
  %2584 = load <2 x float>, ptr %gep2752.1, align 4, !tbaa !9
  %2585 = load <2 x float>, ptr %gep2754.1, align 4, !tbaa !9
  %2586 = fsub <2 x float> %2584, %2585
  store <2 x float> %2586, ptr %gep2752.1, align 4, !tbaa !9
  %indvars.iv.next2505.1 = add nuw nsw i64 %indvars.iv2504, 2
  %gep2752.2 = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %indvars.iv.next2505.1
  %gep2754.2 = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %indvars.iv.next2505.1
  %2587 = load <2 x float>, ptr %gep2752.2, align 4, !tbaa !9
  %2588 = load <2 x float>, ptr %gep2754.2, align 4, !tbaa !9
  %2589 = fsub <2 x float> %2587, %2588
  store <2 x float> %2589, ptr %gep2752.2, align 4, !tbaa !9
  %indvars.iv.next2505.2 = add nuw nsw i64 %indvars.iv2504, 3
  %gep2752.3 = getelementptr %struct.complex, ptr %invariant.gep2751, i64 %indvars.iv.next2505.2
  %gep2754.3 = getelementptr %struct.complex, ptr %invariant.gep2753, i64 %indvars.iv.next2505.2
  %2590 = load <2 x float>, ptr %gep2752.3, align 4, !tbaa !9
  %2591 = load <2 x float>, ptr %gep2754.3, align 4, !tbaa !9
  %2592 = fsub <2 x float> %2590, %2591
  store <2 x float> %2592, ptr %gep2752.3, align 4, !tbaa !9
  %indvars.iv.next2505.3 = add nuw nsw i64 %indvars.iv2504, 4
  %exitcond2508.not.3 = icmp eq i64 %indvars.iv.next2505.3, %wide.trip.count2507
  br i1 %exitcond2508.not.3, label %._crit_edge1954, label %scalar.ph3654, !llvm.loop !137

._crit_edge1954:                                  ; preds = %scalar.ph3654.prol.loopexit, %scalar.ph3654, %middle.block3653, %2562
  %indvars.iv.next2510 = add nuw nsw i64 %indvars.iv2509, 1
  %exitcond2513.not = icmp eq i64 %indvars.iv.next2510, %wide.trip.count2512
  br i1 %exitcond2513.not, label %.thread1900, label %2562, !llvm.loop !138

.thread1900:                                      ; preds = %._crit_edge2128, %._crit_edge2170, %._crit_edge2215, %._crit_edge2257, %._crit_edge1954, %._crit_edge1996, %._crit_edge2041, %._crit_edge2083, %._crit_edge1949, %._crit_edge1991, %._crit_edge2036, %._crit_edge2078, %._crit_edge2123, %._crit_edge2165, %._crit_edge2210, %._crit_edge2252, %1681, %2310, %18, %35, %38, %41
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #3
  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 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12, !13, !14}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !12, !13}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12, !13, !14}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !12, !13}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12, !13, !14}
!28 = distinct !{!28, !12, !13}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12, !13, !14}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !12, !13}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12, !13, !14}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !12, !13}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12, !13, !14}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !12, !13}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12, !13, !14}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !12, !13}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12, !13, !14}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !12, !13}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12, !13, !14}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !12, !13}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12, !13, !14}
!55 = distinct !{!55, !16}
!56 = distinct !{!56, !12, !13}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12, !13, !14}
!59 = distinct !{!59, !12, !13}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12, !13, !14}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !12, !13}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12, !13, !14}
!66 = distinct !{!66, !16}
!67 = distinct !{!67, !12, !13}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12, !13, !14}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !12, !13}
!72 = distinct !{!72, !12}
!73 = distinct !{!73, !12, !13, !14}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !12, !13}
!76 = distinct !{!76, !12}
!77 = distinct !{!77, !12, !13, !14}
!78 = distinct !{!78, !16}
!79 = distinct !{!79, !12, !13}
!80 = distinct !{!80, !12}
!81 = distinct !{!81, !12, !13, !14}
!82 = distinct !{!82, !16}
!83 = distinct !{!83, !12, !13}
!84 = distinct !{!84, !12}
!85 = distinct !{!85, !12, !13, !14}
!86 = distinct !{!86, !16}
!87 = distinct !{!87, !12, !13}
!88 = distinct !{!88, !12}
!89 = distinct !{!89, !12, !13, !14}
!90 = distinct !{!90, !12, !13}
!91 = distinct !{!91, !12}
!92 = distinct !{!92, !12, !13, !14}
!93 = distinct !{!93, !16}
!94 = distinct !{!94, !12, !13}
!95 = distinct !{!95, !12}
!96 = distinct !{!96, !12, !13, !14}
!97 = distinct !{!97, !16}
!98 = distinct !{!98, !12, !13}
!99 = distinct !{!99, !12}
!100 = distinct !{!100, !12, !13, !14}
!101 = distinct !{!101, !16}
!102 = distinct !{!102, !12, !13}
!103 = distinct !{!103, !12}
!104 = distinct !{!104, !12, !13, !14}
!105 = distinct !{!105, !16}
!106 = distinct !{!106, !12, !13}
!107 = distinct !{!107, !12}
!108 = distinct !{!108, !12, !13, !14}
!109 = distinct !{!109, !16}
!110 = distinct !{!110, !12, !13}
!111 = distinct !{!111, !12}
!112 = distinct !{!112, !12, !13, !14}
!113 = distinct !{!113, !16}
!114 = distinct !{!114, !12, !13}
!115 = distinct !{!115, !12}
!116 = distinct !{!116, !12, !13, !14}
!117 = distinct !{!117, !16}
!118 = distinct !{!118, !12, !13}
!119 = distinct !{!119, !12}
!120 = distinct !{!120, !12, !13, !14}
!121 = distinct !{!121, !12, !13}
!122 = distinct !{!122, !12}
!123 = distinct !{!123, !12, !13, !14}
!124 = distinct !{!124, !16}
!125 = distinct !{!125, !12, !13}
!126 = distinct !{!126, !12}
!127 = distinct !{!127, !12, !13, !14}
!128 = distinct !{!128, !16}
!129 = distinct !{!129, !12, !13}
!130 = distinct !{!130, !12}
!131 = distinct !{!131, !12, !13, !14}
!132 = distinct !{!132, !16}
!133 = distinct !{!133, !12, !13}
!134 = distinct !{!134, !12}
!135 = distinct !{!135, !12, !13, !14}
!136 = distinct !{!136, !16}
!137 = distinct !{!137, !12, !13}
!138 = distinct !{!138, !12}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass