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

; 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
@c__1 = external hidden global i32, align 4
@.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
@c_b1 = external hidden global %struct.complex, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

86:                                               ; preds = %12
  %87 = load ptr, ptr %15, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sle i32 %88, 0
  br i1 %89, label %100, label %90

90:                                               ; preds = %86
  %91 = load ptr, ptr %16, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %100, label %94

94:                                               ; preds = %90
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  %99 = icmp sgt i32 %96, %98
  br i1 %99, label %100, label %101

100:                                              ; preds = %94, %90, %86, %12
  store i32 1, ptr %42, align 4
  br label %627

101:                                              ; preds = %94
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = call i32 @lsame_(ptr noundef %102, ptr noundef @.str)
  %104 = icmp ne i32 %103, 0
  %105 = xor i1 %104, true
  %106 = zext i1 %105 to i32
  store i32 %106, ptr %41, align 4, !tbaa !9
  %107 = load ptr, ptr %15, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = icmp sgt i32 %108, %110
  br i1 %111, label %112, label %355

112:                                              ; preds = %101
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = load ptr, ptr %16, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = sub nsw i32 %114, %116
  store i32 %117, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %141, %112
  %119 = load i32, ptr %40, align 4, !tbaa !9
  %120 = load i32, ptr %33, align 4, !tbaa !9
  %121 = icmp sle i32 %119, %120
  br i1 %121, label %122, label %144

122:                                              ; preds = %118
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = load ptr, ptr %19, align 8, !tbaa !5
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = load i32, ptr %40, align 4, !tbaa !9
  %128 = add nsw i32 %126, %127
  %129 = load i32, ptr %25, align 4, !tbaa !9
  %130 = mul nsw i32 %128, %129
  %131 = add nsw i32 %130, 1
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds %struct.complex, ptr %124, i64 %132
  %134 = load ptr, ptr %23, align 8, !tbaa !5
  %135 = load i32, ptr %40, align 4, !tbaa !9
  %136 = load i32, ptr %31, align 4, !tbaa !9
  %137 = mul nsw i32 %135, %136
  %138 = add nsw i32 %137, 1
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds %struct.complex, ptr %134, i64 %139
  call void @ccopy_(ptr noundef %123, ptr noundef %133, ptr noundef @c__1, ptr noundef %140, ptr noundef @c__1)
  br label %141

141:                                              ; preds = %122
  %142 = load i32, ptr %40, align 4, !tbaa !9
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %40, align 4, !tbaa !9
  br label %118, !llvm.loop !11

144:                                              ; preds = %118
  %145 = load i32, ptr %41, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %164

147:                                              ; preds = %144
  %148 = load ptr, ptr %15, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = load ptr, ptr %16, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = sub nsw i32 %149, %151
  store i32 %152, ptr %33, align 4, !tbaa !9
  %153 = load ptr, ptr %16, align 8, !tbaa !5
  %154 = load ptr, ptr %19, align 8, !tbaa !5
  %155 = load i32, ptr %26, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds %struct.complex, ptr %154, i64 %156
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = load ptr, ptr %23, align 8, !tbaa !5
  %160 = load i32, ptr %32, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds %struct.complex, ptr %159, i64 %161
  %163 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %153, ptr noundef %33, ptr noundef @c_b1, ptr noundef %157, ptr noundef %158, ptr noundef %162, ptr noundef %163)
  br label %164

164:                                              ; preds = %147, %144
  %165 = load ptr, ptr %14, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp sgt i32 %166, 0
  br i1 %167, label %168, label %196

168:                                              ; preds = %164
  %169 = load ptr, ptr %15, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = sub nsw i32 %170, %172
  store i32 %173, ptr %33, align 4, !tbaa !9
  %174 = load ptr, ptr %16, align 8, !tbaa !5
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = load ptr, ptr %21, align 8, !tbaa !5
  %177 = load i32, ptr %28, align 4, !tbaa !9
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds %struct.complex, ptr %176, i64 %178
  %180 = load ptr, ptr %22, align 8, !tbaa !5
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load ptr, ptr %16, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  %185 = load i32, ptr %27, align 4, !tbaa !9
  %186 = mul nsw i32 %184, %185
  %187 = add nsw i32 %186, 1
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds %struct.complex, ptr %181, i64 %188
  %190 = load ptr, ptr %22, align 8, !tbaa !5
  %191 = load ptr, ptr %23, align 8, !tbaa !5
  %192 = load i32, ptr %32, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %struct.complex, ptr %191, i64 %193
  %195 = load ptr, ptr %24, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.2, ptr noundef @.str.4, ptr noundef %174, ptr noundef %33, ptr noundef %175, ptr noundef @c_b1, ptr noundef %179, ptr noundef %180, ptr noundef %189, ptr noundef %190, ptr noundef @c_b1, ptr noundef %194, ptr noundef %195)
  br label %196

196:                                              ; preds = %168, %164
  %197 = load ptr, ptr %15, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = sub nsw i32 %198, %200
  store i32 %201, ptr %33, align 4, !tbaa !9
  %202 = load ptr, ptr %16, align 8, !tbaa !5
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = load i32, ptr %30, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %struct.complex, ptr %203, i64 %205
  %207 = load ptr, ptr %18, align 8, !tbaa !5
  %208 = load ptr, ptr %23, align 8, !tbaa !5
  %209 = load i32, ptr %32, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.complex, ptr %208, i64 %210
  %212 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %202, ptr noundef %33, ptr noundef @c_b1, ptr noundef %206, ptr noundef %207, ptr noundef %211, ptr noundef %212)
  %213 = load ptr, ptr %14, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp sgt i32 %214, 0
  br i1 %215, label %216, label %246

216:                                              ; preds = %196
  %217 = load ptr, ptr %15, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %16, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = sub nsw i32 %218, %220
  store i32 %221, ptr %33, align 4, !tbaa !9
  %222 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float -1.000000e+00, ptr %222, align 4, !tbaa !13
  %223 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float 0.000000e+00, ptr %223, align 4, !tbaa !16
  %224 = load ptr, ptr %14, align 8, !tbaa !5
  %225 = load ptr, ptr %16, align 8, !tbaa !5
  %226 = load ptr, ptr %21, align 8, !tbaa !5
  %227 = load i32, ptr %28, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.complex, ptr %226, i64 %228
  %230 = load ptr, ptr %22, align 8, !tbaa !5
  %231 = load ptr, ptr %23, align 8, !tbaa !5
  %232 = load i32, ptr %32, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.complex, ptr %231, i64 %233
  %235 = load ptr, ptr %24, align 8, !tbaa !5
  %236 = load ptr, ptr %21, align 8, !tbaa !5
  %237 = load ptr, ptr %16, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = add nsw i32 %238, 1
  %240 = load i32, ptr %27, align 4, !tbaa !9
  %241 = mul nsw i32 %239, %240
  %242 = add nsw i32 %241, 1
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.complex, ptr %236, i64 %243
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %224, ptr noundef %33, ptr noundef %225, ptr noundef %38, ptr noundef %229, ptr noundef %230, ptr noundef %234, ptr noundef %235, ptr noundef @c_b1, ptr noundef %244, ptr noundef %245)
  br label %246

246:                                              ; preds = %216, %196
  %247 = load i32, ptr %41, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %266

249:                                              ; preds = %246
  %250 = load ptr, ptr %15, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = sub nsw i32 %251, %253
  store i32 %254, ptr %33, align 4, !tbaa !9
  %255 = load ptr, ptr %16, align 8, !tbaa !5
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = load i32, ptr %26, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds %struct.complex, ptr %256, i64 %258
  %260 = load ptr, ptr %20, align 8, !tbaa !5
  %261 = load ptr, ptr %23, align 8, !tbaa !5
  %262 = load i32, ptr %32, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds %struct.complex, ptr %261, i64 %263
  %265 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %255, ptr noundef %33, ptr noundef @c_b1, ptr noundef %259, ptr noundef %260, ptr noundef %264, ptr noundef %265)
  br label %266

266:                                              ; preds = %249, %246
  %267 = load ptr, ptr %15, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = sub nsw i32 %268, %270
  store i32 %271, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %351, %266
  %273 = load i32, ptr %40, align 4, !tbaa !9
  %274 = load i32, ptr %33, align 4, !tbaa !9
  %275 = icmp sle i32 %273, %274
  br i1 %275, label %276, label %354

276:                                              ; preds = %272
  %277 = load ptr, ptr %16, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  store i32 %278, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %347, %276
  %280 = load i32, ptr %39, align 4, !tbaa !9
  %281 = load i32, ptr %34, align 4, !tbaa !9
  %282 = icmp sle i32 %280, %281
  br i1 %282, label %283, label %350

283:                                              ; preds = %279
  %284 = load i32, ptr %39, align 4, !tbaa !9
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = load i32, ptr %40, align 4, !tbaa !9
  %288 = add nsw i32 %286, %287
  %289 = load i32, ptr %25, align 4, !tbaa !9
  %290 = mul nsw i32 %288, %289
  %291 = add nsw i32 %284, %290
  store i32 %291, ptr %35, align 4, !tbaa !9
  %292 = load i32, ptr %39, align 4, !tbaa !9
  %293 = load ptr, ptr %16, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = load i32, ptr %40, align 4, !tbaa !9
  %296 = add nsw i32 %294, %295
  %297 = load i32, ptr %25, align 4, !tbaa !9
  %298 = mul nsw i32 %296, %297
  %299 = add nsw i32 %292, %298
  store i32 %299, ptr %36, align 4, !tbaa !9
  %300 = load i32, ptr %39, align 4, !tbaa !9
  %301 = load i32, ptr %40, align 4, !tbaa !9
  %302 = load i32, ptr %31, align 4, !tbaa !9
  %303 = mul nsw i32 %301, %302
  %304 = add nsw i32 %300, %303
  store i32 %304, ptr %37, align 4, !tbaa !9
  %305 = load ptr, ptr %19, align 8, !tbaa !5
  %306 = load i32, ptr %36, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %struct.complex, ptr %305, i64 %307
  %309 = getelementptr inbounds %struct.complex, ptr %308, i32 0, i32 0
  %310 = load float, ptr %309, align 4, !tbaa !13
  %311 = load ptr, ptr %23, align 8, !tbaa !5
  %312 = load i32, ptr %37, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds %struct.complex, ptr %311, i64 %313
  %315 = getelementptr inbounds %struct.complex, ptr %314, i32 0, i32 0
  %316 = load float, ptr %315, align 4, !tbaa !13
  %317 = fsub float %310, %316
  %318 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %317, ptr %318, align 4, !tbaa !13
  %319 = load ptr, ptr %19, align 8, !tbaa !5
  %320 = load i32, ptr %36, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds %struct.complex, ptr %319, i64 %321
  %323 = getelementptr inbounds %struct.complex, ptr %322, i32 0, i32 1
  %324 = load float, ptr %323, align 4, !tbaa !16
  %325 = load ptr, ptr %23, align 8, !tbaa !5
  %326 = load i32, ptr %37, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.complex, ptr %325, i64 %327
  %329 = getelementptr inbounds %struct.complex, ptr %328, i32 0, i32 1
  %330 = load float, ptr %329, align 4, !tbaa !16
  %331 = fsub float %324, %330
  %332 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float %331, ptr %332, align 4, !tbaa !16
  %333 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %334 = load float, ptr %333, align 4, !tbaa !13
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  %336 = load i32, ptr %35, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds %struct.complex, ptr %335, i64 %337
  %339 = getelementptr inbounds %struct.complex, ptr %338, i32 0, i32 0
  store float %334, ptr %339, align 4, !tbaa !13
  %340 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !16
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i32, ptr %35, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds %struct.complex, ptr %342, i64 %344
  %346 = getelementptr inbounds %struct.complex, ptr %345, i32 0, i32 1
  store float %341, ptr %346, align 4, !tbaa !16
  br label %347

347:                                              ; preds = %283
  %348 = load i32, ptr %39, align 4, !tbaa !9
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %39, align 4, !tbaa !9
  br label %279, !llvm.loop !17

350:                                              ; preds = %279
  br label %351

351:                                              ; preds = %350
  %352 = load i32, ptr %40, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %40, align 4, !tbaa !9
  br label %272, !llvm.loop !18

354:                                              ; preds = %272
  br label %355

355:                                              ; preds = %354, %101
  %356 = load ptr, ptr %16, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  store i32 %357, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %377, %355
  %359 = load i32, ptr %40, align 4, !tbaa !9
  %360 = load i32, ptr %33, align 4, !tbaa !9
  %361 = icmp sle i32 %359, %360
  br i1 %361, label %362, label %380

362:                                              ; preds = %358
  %363 = load ptr, ptr %19, align 8, !tbaa !5
  %364 = load i32, ptr %40, align 4, !tbaa !9
  %365 = load i32, ptr %25, align 4, !tbaa !9
  %366 = mul nsw i32 %364, %365
  %367 = add nsw i32 %366, 1
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %struct.complex, ptr %363, i64 %368
  %370 = load ptr, ptr %23, align 8, !tbaa !5
  %371 = load i32, ptr %40, align 4, !tbaa !9
  %372 = load i32, ptr %31, align 4, !tbaa !9
  %373 = mul nsw i32 %371, %372
  %374 = add nsw i32 %373, 1
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds %struct.complex, ptr %370, i64 %375
  call void @ccopy_(ptr noundef %40, ptr noundef %369, ptr noundef @c__1, ptr noundef %376, ptr noundef @c__1)
  br label %377

377:                                              ; preds = %362
  %378 = load i32, ptr %40, align 4, !tbaa !9
  %379 = add nsw i32 %378, 1
  store i32 %379, ptr %40, align 4, !tbaa !9
  br label %358, !llvm.loop !19

380:                                              ; preds = %358
  %381 = load ptr, ptr %16, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = sub nsw i32 %382, 1
  store i32 %383, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %417, %380
  %385 = load i32, ptr %40, align 4, !tbaa !9
  %386 = load i32, ptr %33, align 4, !tbaa !9
  %387 = icmp sle i32 %385, %386
  br i1 %387, label %388, label %420

388:                                              ; preds = %384
  %389 = load ptr, ptr %16, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  store i32 %390, ptr %34, align 4, !tbaa !9
  %391 = load i32, ptr %40, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %39, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %413, %388
  %394 = load i32, ptr %39, align 4, !tbaa !9
  %395 = load i32, ptr %34, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %416

397:                                              ; preds = %393
  %398 = load i32, ptr %39, align 4, !tbaa !9
  %399 = load i32, ptr %40, align 4, !tbaa !9
  %400 = load i32, ptr %31, align 4, !tbaa !9
  %401 = mul nsw i32 %399, %400
  %402 = add nsw i32 %398, %401
  store i32 %402, ptr %35, align 4, !tbaa !9
  %403 = load ptr, ptr %23, align 8, !tbaa !5
  %404 = load i32, ptr %35, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.complex, ptr %403, i64 %405
  %407 = getelementptr inbounds %struct.complex, ptr %406, i32 0, i32 0
  store float 0.000000e+00, ptr %407, align 4, !tbaa !13
  %408 = load ptr, ptr %23, align 8, !tbaa !5
  %409 = load i32, ptr %35, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds %struct.complex, ptr %408, i64 %410
  %412 = getelementptr inbounds %struct.complex, ptr %411, i32 0, i32 1
  store float 0.000000e+00, ptr %412, align 4, !tbaa !16
  br label %413

413:                                              ; preds = %397
  %414 = load i32, ptr %39, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %39, align 4, !tbaa !9
  br label %393, !llvm.loop !20

416:                                              ; preds = %393
  br label %417

417:                                              ; preds = %416
  %418 = load i32, ptr %40, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr %40, align 4, !tbaa !9
  br label %384, !llvm.loop !21

420:                                              ; preds = %384
  %421 = load i32, ptr %41, align 4, !tbaa !9
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %436

423:                                              ; preds = %420
  %424 = load ptr, ptr %16, align 8, !tbaa !5
  %425 = load ptr, ptr %16, align 8, !tbaa !5
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = load i32, ptr %26, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %426, i64 %428
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = load ptr, ptr %23, align 8, !tbaa !5
  %432 = load i32, ptr %32, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct.complex, ptr %431, i64 %433
  %435 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %424, ptr noundef %425, ptr noundef @c_b1, ptr noundef %429, ptr noundef %430, ptr noundef %434, ptr noundef %435)
  br label %436

436:                                              ; preds = %423, %420
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = load ptr, ptr %16, align 8, !tbaa !5
  %439 = load ptr, ptr %17, align 8, !tbaa !5
  %440 = load i32, ptr %30, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.complex, ptr %439, i64 %441
  %443 = load ptr, ptr %18, align 8, !tbaa !5
  %444 = load ptr, ptr %23, align 8, !tbaa !5
  %445 = load i32, ptr %32, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds %struct.complex, ptr %444, i64 %446
  %448 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %437, ptr noundef %438, ptr noundef @c_b1, ptr noundef %442, ptr noundef %443, ptr noundef %447, ptr noundef %448)
  %449 = load ptr, ptr %14, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = icmp sgt i32 %450, 0
  br i1 %451, label %452, label %467

452:                                              ; preds = %436
  %453 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float -1.000000e+00, ptr %453, align 4, !tbaa !13
  %454 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float 0.000000e+00, ptr %454, align 4, !tbaa !16
  %455 = load ptr, ptr %14, align 8, !tbaa !5
  %456 = load ptr, ptr %16, align 8, !tbaa !5
  %457 = load ptr, ptr %23, align 8, !tbaa !5
  %458 = load i32, ptr %32, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %457, i64 %459
  %461 = load ptr, ptr %24, align 8, !tbaa !5
  %462 = load ptr, ptr %21, align 8, !tbaa !5
  %463 = load i32, ptr %28, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds %struct.complex, ptr %462, i64 %464
  %466 = load ptr, ptr %22, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %455, ptr noundef %456, ptr noundef %38, ptr noundef %460, ptr noundef %461, ptr noundef %465, ptr noundef %466)
  br label %467

467:                                              ; preds = %452, %436
  %468 = load i32, ptr %41, align 4, !tbaa !9
  %469 = icmp ne i32 %468, 0
  br i1 %469, label %470, label %548

470:                                              ; preds = %467
  %471 = load ptr, ptr %16, align 8, !tbaa !5
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = load i32, ptr %26, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds %struct.complex, ptr %473, i64 %475
  %477 = load ptr, ptr %20, align 8, !tbaa !5
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load i32, ptr %32, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds %struct.complex, ptr %478, i64 %480
  %482 = load ptr, ptr %24, align 8, !tbaa !5
  call void @ctrmm_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %471, ptr noundef %472, ptr noundef @c_b1, ptr noundef %476, ptr noundef %477, ptr noundef %481, ptr noundef %482)
  %483 = load ptr, ptr %16, align 8, !tbaa !5
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = sub nsw i32 %484, 1
  store i32 %485, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %544, %470
  %487 = load i32, ptr %40, align 4, !tbaa !9
  %488 = load i32, ptr %33, align 4, !tbaa !9
  %489 = icmp sle i32 %487, %488
  br i1 %489, label %490, label %547

490:                                              ; preds = %486
  %491 = load ptr, ptr %16, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  store i32 %492, ptr %34, align 4, !tbaa !9
  %493 = load i32, ptr %40, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %39, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %540, %490
  %496 = load i32, ptr %39, align 4, !tbaa !9
  %497 = load i32, ptr %34, align 4, !tbaa !9
  %498 = icmp sle i32 %496, %497
  br i1 %498, label %499, label %543

499:                                              ; preds = %495
  %500 = load i32, ptr %39, align 4, !tbaa !9
  %501 = load i32, ptr %40, align 4, !tbaa !9
  %502 = load i32, ptr %25, align 4, !tbaa !9
  %503 = mul nsw i32 %501, %502
  %504 = add nsw i32 %500, %503
  store i32 %504, ptr %35, align 4, !tbaa !9
  %505 = load i32, ptr %39, align 4, !tbaa !9
  %506 = load i32, ptr %40, align 4, !tbaa !9
  %507 = load i32, ptr %31, align 4, !tbaa !9
  %508 = mul nsw i32 %506, %507
  %509 = add nsw i32 %505, %508
  store i32 %509, ptr %36, align 4, !tbaa !9
  %510 = load ptr, ptr %23, align 8, !tbaa !5
  %511 = load i32, ptr %36, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.complex, ptr %510, i64 %512
  %514 = getelementptr inbounds %struct.complex, ptr %513, i32 0, i32 0
  %515 = load float, ptr %514, align 4, !tbaa !13
  %516 = fneg float %515
  %517 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %516, ptr %517, align 4, !tbaa !13
  %518 = load ptr, ptr %23, align 8, !tbaa !5
  %519 = load i32, ptr %36, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds %struct.complex, ptr %518, i64 %520
  %522 = getelementptr inbounds %struct.complex, ptr %521, i32 0, i32 1
  %523 = load float, ptr %522, align 4, !tbaa !16
  %524 = fneg float %523
  %525 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float %524, ptr %525, align 4, !tbaa !16
  %526 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %527 = load float, ptr %526, align 4, !tbaa !13
  %528 = load ptr, ptr %19, align 8, !tbaa !5
  %529 = load i32, ptr %35, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.complex, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.complex, ptr %531, i32 0, i32 0
  store float %527, ptr %532, align 4, !tbaa !13
  %533 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %534 = load float, ptr %533, align 4, !tbaa !16
  %535 = load ptr, ptr %19, align 8, !tbaa !5
  %536 = load i32, ptr %35, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds %struct.complex, ptr %535, i64 %537
  %539 = getelementptr inbounds %struct.complex, ptr %538, i32 0, i32 1
  store float %534, ptr %539, align 4, !tbaa !16
  br label %540

540:                                              ; preds = %499
  %541 = load i32, ptr %39, align 4, !tbaa !9
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %39, align 4, !tbaa !9
  br label %495, !llvm.loop !22

543:                                              ; preds = %495
  br label %544

544:                                              ; preds = %543
  %545 = load i32, ptr %40, align 4, !tbaa !9
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %40, align 4, !tbaa !9
  br label %486, !llvm.loop !23

547:                                              ; preds = %486
  br label %548

548:                                              ; preds = %547, %467
  %549 = load ptr, ptr %16, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !9
  store i32 %550, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %623, %548
  %552 = load i32, ptr %40, align 4, !tbaa !9
  %553 = load i32, ptr %33, align 4, !tbaa !9
  %554 = icmp sle i32 %552, %553
  br i1 %554, label %555, label %626

555:                                              ; preds = %551
  %556 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %556, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %557

557:                                              ; preds = %619, %555
  %558 = load i32, ptr %39, align 4, !tbaa !9
  %559 = load i32, ptr %34, align 4, !tbaa !9
  %560 = icmp sle i32 %558, %559
  br i1 %560, label %561, label %622

561:                                              ; preds = %557
  %562 = load i32, ptr %39, align 4, !tbaa !9
  %563 = load i32, ptr %40, align 4, !tbaa !9
  %564 = load i32, ptr %25, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %562, %565
  store i32 %566, ptr %35, align 4, !tbaa !9
  %567 = load i32, ptr %39, align 4, !tbaa !9
  %568 = load i32, ptr %40, align 4, !tbaa !9
  %569 = load i32, ptr %25, align 4, !tbaa !9
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %567, %570
  store i32 %571, ptr %36, align 4, !tbaa !9
  %572 = load i32, ptr %39, align 4, !tbaa !9
  %573 = load i32, ptr %40, align 4, !tbaa !9
  %574 = load i32, ptr %31, align 4, !tbaa !9
  %575 = mul nsw i32 %573, %574
  %576 = add nsw i32 %572, %575
  store i32 %576, ptr %37, align 4, !tbaa !9
  %577 = load ptr, ptr %19, align 8, !tbaa !5
  %578 = load i32, ptr %36, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.complex, ptr %577, i64 %579
  %581 = getelementptr inbounds %struct.complex, ptr %580, i32 0, i32 0
  %582 = load float, ptr %581, align 4, !tbaa !13
  %583 = load ptr, ptr %23, align 8, !tbaa !5
  %584 = load i32, ptr %37, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.complex, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.complex, ptr %586, i32 0, i32 0
  %588 = load float, ptr %587, align 4, !tbaa !13
  %589 = fsub float %582, %588
  %590 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %589, ptr %590, align 4, !tbaa !13
  %591 = load ptr, ptr %19, align 8, !tbaa !5
  %592 = load i32, ptr %36, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds %struct.complex, ptr %591, i64 %593
  %595 = getelementptr inbounds %struct.complex, ptr %594, i32 0, i32 1
  %596 = load float, ptr %595, align 4, !tbaa !16
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = load i32, ptr %37, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.complex, ptr %597, i64 %599
  %601 = getelementptr inbounds %struct.complex, ptr %600, i32 0, i32 1
  %602 = load float, ptr %601, align 4, !tbaa !16
  %603 = fsub float %596, %602
  %604 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float %603, ptr %604, align 4, !tbaa !16
  %605 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %606 = load float, ptr %605, align 4, !tbaa !13
  %607 = load ptr, ptr %19, align 8, !tbaa !5
  %608 = load i32, ptr %35, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.complex, ptr %607, i64 %609
  %611 = getelementptr inbounds %struct.complex, ptr %610, i32 0, i32 0
  store float %606, ptr %611, align 4, !tbaa !13
  %612 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %613 = load float, ptr %612, align 4, !tbaa !16
  %614 = load ptr, ptr %19, align 8, !tbaa !5
  %615 = load i32, ptr %35, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.complex, ptr %614, i64 %616
  %618 = getelementptr inbounds %struct.complex, ptr %617, i32 0, i32 1
  store float %613, ptr %618, align 4, !tbaa !16
  br label %619

619:                                              ; preds = %561
  %620 = load i32, ptr %39, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  store i32 %621, ptr %39, align 4, !tbaa !9
  br label %557, !llvm.loop !24

622:                                              ; preds = %557
  br label %623

623:                                              ; preds = %622
  %624 = load i32, ptr %40, align 4, !tbaa !9
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %40, align 4, !tbaa !9
  br label %551, !llvm.loop !25

626:                                              ; preds = %551
  store i32 1, ptr %42, align 4
  br label %627

627:                                              ; preds = %626, %100
  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 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !15, i64 4}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}


; 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
@c__1 = external hidden global i32, align 4
@.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
@c_b1 = external hidden global %struct.complex, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @clarfb_gett_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %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) local_unnamed_addr #0 {
  %13 = alloca i32, align 4
  %14 = alloca %struct.complex, align 8
  %15 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  %16 = load i32, ptr %7, align 4, !tbaa !5
  %narrow223 = xor i32 %16, -1
  %17 = sext i32 %narrow223 to i64
  %18 = getelementptr inbounds %struct.complex, ptr %6, i64 %17
  %19 = load i32, ptr %9, align 4, !tbaa !5
  %narrow222 = xor i32 %19, -1
  %20 = sext i32 %narrow222 to i64
  %21 = getelementptr inbounds %struct.complex, ptr %8, i64 %20
  %22 = load i32, ptr %11, align 4, !tbaa !5
  %narrow = xor i32 %22, -1
  %23 = sext i32 %narrow to i64
  %24 = getelementptr inbounds %struct.complex, ptr %10, i64 %23
  %25 = load i32, ptr %1, align 4, !tbaa !5
  %26 = icmp slt i32 %25, 0
  br i1 %26, label %.loopexit, label %27

27:                                               ; preds = %12
  %28 = load i32, ptr %2, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 1
  br i1 %29, label %.loopexit, label %30

30:                                               ; preds = %27
  %31 = load i32, ptr %3, align 4, !tbaa !5
  %32 = icmp eq i32 %31, 0
  %33 = icmp sgt i32 %31, %28
  %or.cond = or i1 %32, %33
  br i1 %or.cond, label %.loopexit, label %34

34:                                               ; preds = %30
  %35 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not = icmp eq i32 %35, 0
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = icmp sgt i32 %36, %37
  br i1 %38, label %.lr.ph.preheader, label %.loopexit236

.lr.ph.preheader:                                 ; preds = %34
  %invariant.gep = getelementptr i8, ptr %18, i64 8
  %invariant.gep237 = getelementptr i8, ptr %24, i64 8
  %39 = sext i32 %22 to i64
  %40 = add i32 %36, 1
  %41 = sub i32 %40, %37
  %wide.trip.count = zext i32 %41 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %42 = load i32, ptr %3, align 4, !tbaa !5
  %43 = trunc nuw nsw i64 %indvars.iv to i32
  %44 = add nsw i32 %42, %43
  %45 = mul nsw i32 %44, %16
  %46 = sext i32 %45 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %46
  %47 = mul nsw i64 %indvars.iv, %39
  %gep238 = getelementptr %struct.complex, ptr %invariant.gep237, i64 %47
  tail call void @ccopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep238, ptr noundef nonnull @c__1) #4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !9

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre336.pre342.pre = load i32, ptr %2, align 4, !tbaa !5
  %.pre338.pre344.pre = load i32, ptr %3, align 4, !tbaa !5
  store i32 %41, ptr %15, align 4, !tbaa !5
  br i1 %.not, label %48, label %50

48:                                               ; preds = %._crit_edge.loopexit
  %49 = sub nsw i32 %.pre336.pre342.pre, %.pre338.pre344.pre
  store i32 %49, ptr %13, align 4, !tbaa !5
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11) #4
  %.pre336.pre = load i32, ptr %2, align 4, !tbaa !5
  %.pre338.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %50

50:                                               ; preds = %48, %._crit_edge.loopexit
  %.pre338 = phi i32 [ %.pre338.pre, %48 ], [ %.pre338.pre344.pre, %._crit_edge.loopexit ]
  %.pre336 = phi i32 [ %.pre336.pre, %48 ], [ %.pre336.pre342.pre, %._crit_edge.loopexit ]
  %51 = load i32, ptr %1, align 4, !tbaa !5
  %52 = icmp sgt i32 %51, 0
  br i1 %52, label %53, label %60

53:                                               ; preds = %50
  %54 = sub nsw i32 %.pre336, %.pre338
  store i32 %54, ptr %13, align 4, !tbaa !5
  %55 = add nsw i32 %.pre338, 1
  %56 = mul nsw i32 %55, %19
  %57 = sext i32 %56 to i64
  %58 = getelementptr %struct.complex, ptr %21, i64 %57
  %59 = getelementptr i8, ptr %58, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %59, ptr noundef nonnull %9, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %11) #4
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.pre337 = load i32, ptr %3, align 4, !tbaa !5
  br label %60

60:                                               ; preds = %53, %50
  %61 = phi i32 [ %.pre337, %53 ], [ %.pre338, %50 ]
  %62 = phi i32 [ %.pre, %53 ], [ %.pre336, %50 ]
  %63 = sub nsw i32 %62, %61
  store i32 %63, ptr %13, align 4, !tbaa !5
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull @c_b1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef nonnull %11) #4
  %64 = load i32, ptr %1, align 4, !tbaa !5
  %65 = icmp sgt i32 %64, 0
  br i1 %65, label %66, label %75

66:                                               ; preds = %60
  %67 = load i32, ptr %2, align 4, !tbaa !5
  %68 = load i32, ptr %3, align 4, !tbaa !5
  %69 = sub nsw i32 %67, %68
  store i32 %69, ptr %13, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %14, align 8, !tbaa !11
  %70 = add nsw i32 %68, 1
  %71 = mul nsw i32 %70, %19
  %72 = sext i32 %71 to i64
  %73 = getelementptr %struct.complex, ptr %21, i64 %72
  %74 = getelementptr i8, ptr %73, i64 8
  call void @cgemm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %1, ptr noundef nonnull %13, ptr noundef nonnull %3, ptr noundef nonnull %14, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull @c_b1, ptr noundef %74, ptr noundef nonnull %9) #4
  br label %75

75:                                               ; preds = %66, %60
  br i1 %.not, label %76, label %80

76:                                               ; preds = %75
  %77 = load i32, ptr %2, align 4, !tbaa !5
  %78 = load i32, ptr %3, align 4, !tbaa !5
  %79 = sub nsw i32 %77, %78
  store i32 %79, ptr %13, align 4, !tbaa !5
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11) #4
  br label %80

80:                                               ; preds = %76, %75
  %81 = load i32, ptr %2, align 4, !tbaa !5
  %82 = load i32, ptr %3, align 4, !tbaa !5
  %.not217246.not = icmp sle i32 %81, %82
  %.not231241 = icmp slt i32 %82, 1
  %or.cond473 = or i1 %.not217246.not, %.not231241
  br i1 %or.cond473, label %.loopexit236, label %.preheader235.preheader

.preheader235.preheader:                          ; preds = %80
  %83 = add nuw nsw i32 %82, 1
  %84 = zext nneg i32 %82 to i64
  %85 = sext i32 %16 to i64
  %86 = sext i32 %22 to i64
  %87 = add i32 %81, 1
  %88 = sub i32 %87, %82
  %wide.trip.count295 = zext i32 %88 to i64
  %wide.trip.count290 = zext nneg i32 %83 to i64
  %89 = add nuw nsw i64 %84, 1
  %90 = mul nsw i64 %89, %85
  %91 = shl i64 %90, 3
  %92 = shl nsw i64 %17, 3
  %93 = getelementptr i8, ptr %6, i64 %91
  %94 = getelementptr i8, ptr %93, i64 %92
  %scevgep363 = getelementptr i8, ptr %94, i64 8
  %95 = shl nuw nsw i64 %wide.trip.count295, 3
  %96 = add nuw nsw i64 %84, %wide.trip.count295
  %97 = shl nuw nsw i64 %96, 3
  %98 = add nsw i64 %97, -8
  %99 = mul i64 %98, %85
  %100 = shl nuw nsw i64 %wide.trip.count290, 3
  %101 = getelementptr i8, ptr %6, i64 %99
  %102 = getelementptr i8, ptr %101, i64 %92
  %103 = getelementptr i8, ptr %102, i64 %100
  %scevgep364 = getelementptr i8, ptr %103, i64 -4
  %104 = shl nsw i64 %86, 3
  %105 = shl nsw i64 %23, 3
  %106 = getelementptr i8, ptr %10, i64 %104
  %107 = getelementptr i8, ptr %106, i64 %105
  %scevgep365 = getelementptr i8, ptr %107, i64 8
  %108 = add nsw i64 %95, -8
  %109 = mul i64 %108, %86
  %110 = getelementptr i8, ptr %10, i64 %109
  %111 = getelementptr i8, ptr %110, i64 %105
  %112 = getelementptr i8, ptr %111, i64 %100
  %scevgep366 = getelementptr i8, ptr %112, i64 -4
  %113 = getelementptr i8, ptr %6, i64 %91
  %114 = getelementptr i8, ptr %113, i64 %92
  %scevgep367 = getelementptr i8, ptr %114, i64 12
  %115 = getelementptr i8, ptr %6, i64 %99
  %116 = getelementptr i8, ptr %115, i64 %92
  %scevgep368 = getelementptr i8, ptr %116, i64 %100
  %117 = getelementptr i8, ptr %10, i64 %104
  %118 = getelementptr i8, ptr %117, i64 %105
  %scevgep369 = getelementptr i8, ptr %118, i64 12
  %119 = getelementptr i8, ptr %10, i64 %109
  %120 = getelementptr i8, ptr %119, i64 %105
  %scevgep370 = getelementptr i8, ptr %120, i64 %100
  %121 = zext nneg i32 %82 to i64
  %122 = zext nneg i32 %82 to i64
  %min.iters.check = icmp ult i32 %82, 6
  %bound0 = icmp ult ptr %scevgep363, %scevgep366
  %bound1 = icmp ult ptr %scevgep365, %scevgep364
  %found.conflict = and i1 %bound0, %bound1
  %123 = or i32 %16, %22
  %124 = icmp slt i32 %123, 0
  %125 = or i1 %found.conflict, %124
  %bound0372 = icmp ult ptr %scevgep367, %scevgep370
  %bound1373 = icmp ult ptr %scevgep369, %scevgep368
  %found.conflict374 = and i1 %bound0372, %bound1373
  %126 = or i32 %16, %22
  %127 = icmp slt i32 %126, 0
  %128 = or i1 %found.conflict374, %127
  %conflict.rdx = or i1 %125, %128
  %n.vec = and i64 %121, 2147483646
  %ind.end = or i64 %121, 1
  %cmp.n = icmp eq i64 %n.vec, %121
  br label %.preheader235

.preheader235:                                    ; preds = %.preheader235.preheader, %._crit_edge244
  %indvars.iv292 = phi i64 [ 1, %.preheader235.preheader ], [ %indvars.iv.next293, %._crit_edge244 ]
  %129 = add nuw nsw i64 %indvars.iv292, %84
  %130 = mul nsw i64 %129, %85
  %131 = mul nsw i64 %indvars.iv292, %86
  %invariant.gep350 = getelementptr %struct.complex, ptr %18, i64 %130
  %invariant.gep352 = getelementptr %struct.complex, ptr %24, i64 %131
  %brmerge = select i1 %min.iters.check, i1 true, i1 %conflict.rdx
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.preheader235, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader235 ]
  %offset.idx = or disjoint i64 %index, 1
  %132 = getelementptr %struct.complex, ptr %invariant.gep350, i64 %offset.idx
  %wide.vec = load <4 x float>, ptr %132, align 4, !tbaa !11
  %133 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %offset.idx
  %wide.vec378 = load <4 x float>, ptr %133, align 4, !tbaa !11
  %134 = fsub <4 x float> %wide.vec, %wide.vec378
  %135 = fsub <4 x float> %wide.vec, %wide.vec378
  %interleaved.vec = shufflevector <4 x float> %134, <4 x float> %135, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
  store <4 x float> %interleaved.vec, ptr %132, align 4, !tbaa !11
  %index.next = add nuw i64 %index, 2
  %136 = icmp eq i64 %index.next, %n.vec
  br i1 %136, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %137 = shufflevector <4 x float> %134, <4 x float> %135, <2 x i32> <i32 2, i32 7>
  br i1 %cmp.n, label %._crit_edge244, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.preheader235, %middle.block
  %indvars.iv287.ph = phi i64 [ 1, %.preheader235 ], [ %ind.end, %middle.block ]
  %138 = sub nsw i64 %wide.trip.count290, %indvars.iv287.ph
  %139 = sub nsw i64 %122, %indvars.iv287.ph
  %xtraiter = and i64 %138, 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.iv287.prol = phi i64 [ %indvars.iv.next288.prol, %scalar.ph.prol ], [ %indvars.iv287.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep351.prol = getelementptr %struct.complex, ptr %invariant.gep350, i64 %indvars.iv287.prol
  %gep353.prol = getelementptr %struct.complex, ptr %invariant.gep352, i64 %indvars.iv287.prol
  %140 = load <2 x float>, ptr %gep351.prol, align 4, !tbaa !11
  %141 = load <2 x float>, ptr %gep353.prol, align 4, !tbaa !11
  %142 = fsub <2 x float> %140, %141
  store <2 x float> %142, ptr %gep351.prol, align 4, !tbaa !11
  %indvars.iv.next288.prol = add nuw nsw i64 %indvars.iv287.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 !16

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa459.unr = phi <2 x float> [ poison, %scalar.ph.preheader ], [ %142, %scalar.ph.prol ]
  %indvars.iv287.unr = phi i64 [ %indvars.iv287.ph, %scalar.ph.preheader ], [ %indvars.iv.next288.prol, %scalar.ph.prol ]
  %143 = icmp ult i64 %139, 3
  br i1 %143, label %._crit_edge244, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv287 = phi i64 [ %indvars.iv.next288.3, %scalar.ph ], [ %indvars.iv287.unr, %scalar.ph.prol.loopexit ]
  %gep351 = getelementptr %struct.complex, ptr %invariant.gep350, i64 %indvars.iv287
  %gep353 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %indvars.iv287
  %144 = load <2 x float>, ptr %gep351, align 4, !tbaa !11
  %145 = load <2 x float>, ptr %gep353, align 4, !tbaa !11
  %146 = fsub <2 x float> %144, %145
  store <2 x float> %146, ptr %gep351, align 4, !tbaa !11
  %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1
  %gep351.1 = getelementptr %struct.complex, ptr %invariant.gep350, i64 %indvars.iv.next288
  %gep353.1 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %indvars.iv.next288
  %147 = load <2 x float>, ptr %gep351.1, align 4, !tbaa !11
  %148 = load <2 x float>, ptr %gep353.1, align 4, !tbaa !11
  %149 = fsub <2 x float> %147, %148
  store <2 x float> %149, ptr %gep351.1, align 4, !tbaa !11
  %indvars.iv.next288.1 = add nuw nsw i64 %indvars.iv287, 2
  %gep351.2 = getelementptr %struct.complex, ptr %invariant.gep350, i64 %indvars.iv.next288.1
  %gep353.2 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %indvars.iv.next288.1
  %150 = load <2 x float>, ptr %gep351.2, align 4, !tbaa !11
  %151 = load <2 x float>, ptr %gep353.2, align 4, !tbaa !11
  %152 = fsub <2 x float> %150, %151
  store <2 x float> %152, ptr %gep351.2, align 4, !tbaa !11
  %indvars.iv.next288.2 = add nuw nsw i64 %indvars.iv287, 3
  %gep351.3 = getelementptr %struct.complex, ptr %invariant.gep350, i64 %indvars.iv.next288.2
  %gep353.3 = getelementptr %struct.complex, ptr %invariant.gep352, i64 %indvars.iv.next288.2
  %153 = load <2 x float>, ptr %gep351.3, align 4, !tbaa !11
  %154 = load <2 x float>, ptr %gep353.3, align 4, !tbaa !11
  %155 = fsub <2 x float> %153, %154
  store <2 x float> %155, ptr %gep351.3, align 4, !tbaa !11
  %indvars.iv.next288.3 = add nuw nsw i64 %indvars.iv287, 4
  %exitcond291.not.3 = icmp eq i64 %indvars.iv.next288.3, %wide.trip.count290
  br i1 %exitcond291.not.3, label %._crit_edge244, label %scalar.ph, !llvm.loop !18

._crit_edge244:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %156 = phi <2 x float> [ %137, %middle.block ], [ %.lcssa459.unr, %scalar.ph.prol.loopexit ], [ %155, %scalar.ph ]
  %indvars.iv.next293 = add nuw nsw i64 %indvars.iv292, 1
  %exitcond296.not = icmp eq i64 %indvars.iv.next293, %wide.trip.count295
  br i1 %exitcond296.not, label %..loopexit236_crit_edge.split, label %.preheader235, !llvm.loop !19

..loopexit236_crit_edge.split:                    ; preds = %._crit_edge244
  store <2 x float> %156, ptr %14, align 8, !tbaa !11
  br label %.loopexit236

.loopexit236:                                     ; preds = %80, %..loopexit236_crit_edge.split, %34
  %157 = phi i32 [ %37, %34 ], [ %82, %..loopexit236_crit_edge.split ], [ %82, %80 ]
  store i32 %157, ptr %13, align 4, !tbaa !5
  %invariant.gep249 = getelementptr i8, ptr %18, i64 8
  %invariant.gep251 = getelementptr i8, ptr %24, i64 8
  store i32 1, ptr %15, align 4, !tbaa !5
  %.not219253 = icmp slt i32 %157, 1
  br i1 %.not219253, label %._crit_edge257.thread, label %.lr.ph256

._crit_edge257.thread:                            ; preds = %.loopexit236
  %158 = add i32 %157, -1
  store i32 %158, ptr %13, align 4, !tbaa !5
  br label %._crit_edge261

.lr.ph256:                                        ; preds = %.loopexit236, %.lr.ph256
  %storemerge218254 = phi i32 [ %164, %.lr.ph256 ], [ 1, %.loopexit236 ]
  %159 = mul nsw i32 %storemerge218254, %16
  %160 = sext i32 %159 to i64
  %gep250 = getelementptr %struct.complex, ptr %invariant.gep249, i64 %160
  %161 = mul nsw i32 %storemerge218254, %22
  %162 = sext i32 %161 to i64
  %gep252 = getelementptr %struct.complex, ptr %invariant.gep251, i64 %162
  call void @ccopy_(ptr noundef nonnull %15, ptr noundef %gep250, ptr noundef nonnull @c__1, ptr noundef %gep252, ptr noundef nonnull @c__1) #4
  %163 = load i32, ptr %15, align 4, !tbaa !5
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %15, align 4, !tbaa !5
  %165 = load i32, ptr %13, align 4, !tbaa !5
  %.not219.not = icmp slt i32 %163, %165
  br i1 %.not219.not, label %.lr.ph256, label %._crit_edge257, !llvm.loop !20

._crit_edge257:                                   ; preds = %.lr.ph256
  %.pre339 = load i32, ptr %3, align 4, !tbaa !5
  %166 = add i32 %.pre339, -1
  store i32 %166, ptr %13, align 4, !tbaa !5
  %.not221.not259 = icmp sgt i32 %.pre339, 1
  br i1 %.not221.not259, label %.preheader234.preheader, label %._crit_edge261

.preheader234.preheader:                          ; preds = %._crit_edge257
  %167 = shl nsw i64 %23, 3
  %scevgep = getelementptr i8, ptr %10, i64 %167
  %168 = add i32 %22, 2
  %169 = add i32 %22, 1
  %170 = add nsw i32 %.pre339, -2
  %wide.trip.count308 = zext nneg i32 %166 to i64
  %xtraiter461 = and i64 %wide.trip.count308, 1
  %171 = icmp eq i32 %166, 1
  br i1 %171, label %._crit_edge261.loopexit.unr-lcssa, label %.preheader234.preheader.new

.preheader234.preheader.new:                      ; preds = %.preheader234.preheader
  %unroll_iter = and i64 %wide.trip.count308, 2147483646
  br label %.preheader234

.preheader234:                                    ; preds = %.preheader234, %.preheader234.preheader.new
  %indvars.iv303 = phi i64 [ 0, %.preheader234.preheader.new ], [ %indvars.iv.next304.1, %.preheader234 ]
  %niter = phi i64 [ 0, %.preheader234.preheader.new ], [ %niter.next.1, %.preheader234 ]
  %172 = trunc nuw nsw i64 %indvars.iv303 to i32
  %173 = mul i32 %169, %172
  %174 = add i32 %168, %173
  %175 = sext i32 %174 to i64
  %176 = shl nsw i64 %175, 3
  %scevgep297 = getelementptr i8, ptr %scevgep, i64 %176
  %177 = trunc i64 %indvars.iv303 to i32
  %178 = sub i32 %170, %177
  %179 = zext i32 %178 to i64
  %180 = shl nuw nsw i64 %179, 3
  %181 = add nuw nsw i64 %180, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep297, i8 0, i64 %181, i1 false), !tbaa !11
  %indvars.iv.next304 = or disjoint i64 %indvars.iv303, 1
  %182 = trunc nuw nsw i64 %indvars.iv.next304 to i32
  %183 = mul i32 %169, %182
  %184 = add i32 %168, %183
  %185 = sext i32 %184 to i64
  %186 = shl nsw i64 %185, 3
  %scevgep297.1 = getelementptr i8, ptr %scevgep, i64 %186
  %187 = trunc i64 %indvars.iv.next304 to i32
  %188 = sub i32 %170, %187
  %189 = zext i32 %188 to i64
  %190 = shl nuw nsw i64 %189, 3
  %191 = add nuw nsw i64 %190, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep297.1, i8 0, i64 %191, i1 false), !tbaa !11
  %indvars.iv.next304.1 = add nuw nsw i64 %indvars.iv303, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge261.loopexit.unr-lcssa, label %.preheader234, !llvm.loop !21

._crit_edge261.loopexit.unr-lcssa:                ; preds = %.preheader234, %.preheader234.preheader
  %indvars.iv303.unr = phi i64 [ 0, %.preheader234.preheader ], [ %indvars.iv.next304.1, %.preheader234 ]
  %lcmp.mod462.not = icmp eq i64 %xtraiter461, 0
  br i1 %lcmp.mod462.not, label %._crit_edge261, label %.preheader234.epil

.preheader234.epil:                               ; preds = %._crit_edge261.loopexit.unr-lcssa
  %192 = trunc nuw nsw i64 %indvars.iv303.unr to i32
  %193 = mul i32 %169, %192
  %194 = add i32 %168, %193
  %195 = sext i32 %194 to i64
  %196 = shl nsw i64 %195, 3
  %scevgep297.epil = getelementptr i8, ptr %scevgep, i64 %196
  %197 = trunc i64 %indvars.iv303.unr to i32
  %198 = sub i32 %170, %197
  %199 = zext i32 %198 to i64
  %200 = shl nuw nsw i64 %199, 3
  %201 = add nuw nsw i64 %200, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep297.epil, i8 0, i64 %201, i1 false), !tbaa !11
  br label %._crit_edge261

._crit_edge261:                                   ; preds = %.preheader234.epil, %._crit_edge261.loopexit.unr-lcssa, %._crit_edge257.thread, %._crit_edge257
  %storemerge220.lcssa = phi i32 [ 1, %._crit_edge257 ], [ 1, %._crit_edge257.thread ], [ %.pre339, %._crit_edge261.loopexit.unr-lcssa ], [ %.pre339, %.preheader234.epil ]
  store i32 %storemerge220.lcssa, ptr %15, align 4, !tbaa !5
  br i1 %.not, label %202, label %203

202:                                              ; preds = %._crit_edge261
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11) #4
  br label %203

203:                                              ; preds = %202, %._crit_edge261
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %4, ptr noundef %5, ptr noundef %10, ptr noundef nonnull %11) #4
  %204 = load i32, ptr %1, align 4, !tbaa !5
  %205 = icmp sgt i32 %204, 0
  br i1 %205, label %206, label %207

206:                                              ; preds = %203
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %14, align 8, !tbaa !11
  call void @ctrmm_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %1, ptr noundef nonnull %3, ptr noundef nonnull %14, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %8, ptr noundef nonnull %9) #4
  br label %207

207:                                              ; preds = %206, %203
  br i1 %.not, label %208, label %._crit_edge340

._crit_edge340:                                   ; preds = %207
  %.pre341 = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit233

208:                                              ; preds = %207
  call void @ctrmm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11) #4
  %209 = load i32, ptr %3, align 4, !tbaa !5
  %.not225.not266 = icmp sgt i32 %209, 1
  br i1 %.not225.not266, label %.preheader232.lr.ph, label %.loopexit233

.preheader232.lr.ph:                              ; preds = %208
  %210 = sext i32 %16 to i64
  %211 = sext i32 %22 to i64
  %wide.trip.count318 = zext nneg i32 %209 to i64
  %212 = shl nsw i64 %210, 3
  %213 = shl nsw i64 %17, 3
  %214 = add nsw i64 %212, %213
  %215 = add nsw i64 %212, 8
  %216 = shl nuw nsw i64 %wide.trip.count318, 3
  %217 = add nsw i64 %214, %216
  %218 = or disjoint i64 %217, 4
  %219 = shl nsw i64 %210, 3
  %220 = shl nsw i64 %211, 3
  %221 = shl nsw i64 %23, 3
  %222 = add nsw i64 %220, %221
  %223 = add nsw i64 %220, 8
  %224 = add nsw i64 %222, %216
  %225 = or disjoint i64 %224, 4
  %226 = shl nsw i64 %211, 3
  %227 = add nsw i64 %212, %213
  %228 = add nsw i64 %220, %221
  %229 = getelementptr i8, ptr %10, i64 %228
  %230 = getelementptr i8, ptr %229, i64 %216
  %231 = getelementptr i8, ptr %230, i64 8
  %232 = getelementptr i8, ptr %10, i64 %228
  %233 = getelementptr i8, ptr %232, i64 20
  %234 = getelementptr i8, ptr %6, i64 %227
  %235 = getelementptr i8, ptr %234, i64 %216
  %236 = getelementptr i8, ptr %235, i64 8
  %237 = getelementptr i8, ptr %6, i64 %227
  %238 = getelementptr i8, ptr %237, i64 20
  %239 = getelementptr i8, ptr %10, i64 %225
  %240 = getelementptr i8, ptr %10, i64 %222
  %241 = getelementptr i8, ptr %240, i64 16
  %242 = getelementptr i8, ptr %6, i64 %218
  %243 = getelementptr i8, ptr %6, i64 %214
  %244 = getelementptr i8, ptr %243, i64 16
  br label %.preheader232

.preheader232:                                    ; preds = %.preheader232.lr.ph, %.loopexit457
  %indvar = phi i64 [ 0, %.preheader232.lr.ph ], [ %indvar.next, %.loopexit457 ]
  %indvars.iv310 = phi i64 [ 1, %.preheader232.lr.ph ], [ %indvars.iv.next311, %.loopexit457 ]
  %245 = xor i64 %indvar, -1
  %246 = add i64 %245, %wide.trip.count318
  %247 = mul nsw i64 %indvars.iv310, %210
  %248 = mul nsw i64 %indvars.iv310, %211
  %invariant.gep354 = getelementptr %struct.complex, ptr %24, i64 %248
  %invariant.gep356 = getelementptr %struct.complex, ptr %18, i64 %247
  %min.iters.check399 = icmp ult i64 %246, 4
  br i1 %min.iters.check399, label %scalar.ph398.preheader, label %vector.memcheck381

vector.memcheck381:                               ; preds = %.preheader232
  %249 = mul i64 %226, %indvar
  %scevgep389 = getelementptr i8, ptr %231, i64 %249
  %250 = mul i64 %223, %indvar
  %scevgep388 = getelementptr i8, ptr %233, i64 %250
  %251 = mul i64 %219, %indvar
  %scevgep387 = getelementptr i8, ptr %236, i64 %251
  %252 = mul i64 %215, %indvar
  %scevgep386 = getelementptr i8, ptr %238, i64 %252
  %scevgep385 = getelementptr i8, ptr %239, i64 %249
  %scevgep384 = getelementptr i8, ptr %241, i64 %250
  %scevgep383 = getelementptr i8, ptr %242, i64 %251
  %scevgep382 = getelementptr i8, ptr %244, i64 %252
  %bound0390 = icmp ult ptr %scevgep382, %scevgep385
  %bound1391 = icmp ult ptr %scevgep384, %scevgep383
  %found.conflict392 = and i1 %bound0390, %bound1391
  %bound0393 = icmp ult ptr %scevgep386, %scevgep389
  %bound1394 = icmp ult ptr %scevgep388, %scevgep387
  %found.conflict395 = and i1 %bound0393, %bound1394
  %conflict.rdx396 = or i1 %found.conflict392, %found.conflict395
  br i1 %conflict.rdx396, label %scalar.ph398.preheader, label %vector.ph400

vector.ph400:                                     ; preds = %vector.memcheck381
  %n.vec402 = and i64 %246, -4
  %ind.end403 = add i64 %indvars.iv310, %n.vec402
  br label %vector.body405

vector.body405:                                   ; preds = %vector.body405, %vector.ph400
  %index406 = phi i64 [ 0, %vector.ph400 ], [ %index.next416, %vector.body405 ]
  %offset.idx407 = add i64 %indvars.iv310, %index406
  %253 = add nuw nsw i64 %offset.idx407, 1
  %254 = add i64 %offset.idx407, 3
  %255 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %253
  %256 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %254
  %wide.vec408 = load <4 x float>, ptr %255, align 4, !tbaa !11
  %wide.vec409 = load <4 x float>, ptr %256, align 4, !tbaa !11
  %257 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %253
  %258 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %254
  %interleaved.vec414 = fneg <4 x float> %wide.vec408
  store <4 x float> %interleaved.vec414, ptr %257, align 4, !tbaa !11
  %interleaved.vec415 = fneg <4 x float> %wide.vec409
  store <4 x float> %interleaved.vec415, ptr %258, align 4, !tbaa !11
  %index.next416 = add nuw i64 %index406, 4
  %259 = icmp eq i64 %index.next416, %n.vec402
  br i1 %259, label %middle.block397, label %vector.body405, !llvm.loop !22

middle.block397:                                  ; preds = %vector.body405
  %cmp.n417 = icmp eq i64 %246, %n.vec402
  br i1 %cmp.n417, label %.loopexit457, label %scalar.ph398.preheader

scalar.ph398.preheader:                           ; preds = %middle.block397, %vector.memcheck381, %.preheader232
  %indvars.iv312.ph = phi i64 [ %indvars.iv310, %vector.memcheck381 ], [ %indvars.iv310, %.preheader232 ], [ %ind.end403, %middle.block397 ]
  %260 = sub i64 %wide.trip.count318, %indvars.iv312.ph
  %xtraiter463 = and i64 %260, 3
  %lcmp.mod464.not = icmp eq i64 %xtraiter463, 0
  br i1 %lcmp.mod464.not, label %scalar.ph398.prol.loopexit, label %scalar.ph398.prol

scalar.ph398.prol:                                ; preds = %scalar.ph398.preheader, %scalar.ph398.prol
  %indvars.iv312.prol = phi i64 [ %indvars.iv.next313.prol, %scalar.ph398.prol ], [ %indvars.iv312.ph, %scalar.ph398.preheader ]
  %prol.iter465 = phi i64 [ %prol.iter465.next, %scalar.ph398.prol ], [ 0, %scalar.ph398.preheader ]
  %indvars.iv.next313.prol = add nuw nsw i64 %indvars.iv312.prol, 1
  %gep355.prol = getelementptr %struct.complex, ptr %invariant.gep354, i64 %indvars.iv.next313.prol
  %gep357.prol = getelementptr %struct.complex, ptr %invariant.gep356, i64 %indvars.iv.next313.prol
  %261 = load <2 x float>, ptr %gep355.prol, align 4, !tbaa !11
  %262 = fneg <2 x float> %261
  store <2 x float> %262, ptr %gep357.prol, align 4, !tbaa !11
  %prol.iter465.next = add i64 %prol.iter465, 1
  %prol.iter465.cmp.not = icmp eq i64 %prol.iter465.next, %xtraiter463
  br i1 %prol.iter465.cmp.not, label %scalar.ph398.prol.loopexit, label %scalar.ph398.prol, !llvm.loop !23

scalar.ph398.prol.loopexit:                       ; preds = %scalar.ph398.prol, %scalar.ph398.preheader
  %indvars.iv312.unr = phi i64 [ %indvars.iv312.ph, %scalar.ph398.preheader ], [ %indvars.iv.next313.prol, %scalar.ph398.prol ]
  %263 = sub i64 %indvars.iv312.ph, %wide.trip.count318
  %264 = icmp ugt i64 %263, -4
  br i1 %264, label %.loopexit457, label %scalar.ph398

scalar.ph398:                                     ; preds = %scalar.ph398.prol.loopexit, %scalar.ph398
  %indvars.iv312 = phi i64 [ %indvars.iv.next313.3, %scalar.ph398 ], [ %indvars.iv312.unr, %scalar.ph398.prol.loopexit ]
  %indvars.iv.next313 = add nuw nsw i64 %indvars.iv312, 1
  %gep355 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %indvars.iv.next313
  %gep357 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %indvars.iv.next313
  %265 = load <2 x float>, ptr %gep355, align 4, !tbaa !11
  %266 = fneg <2 x float> %265
  store <2 x float> %266, ptr %gep357, align 4, !tbaa !11
  %indvars.iv.next313.1 = add nuw nsw i64 %indvars.iv312, 2
  %gep355.1 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %indvars.iv.next313.1
  %gep357.1 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %indvars.iv.next313.1
  %267 = load <2 x float>, ptr %gep355.1, align 4, !tbaa !11
  %268 = fneg <2 x float> %267
  store <2 x float> %268, ptr %gep357.1, align 4, !tbaa !11
  %indvars.iv.next313.2 = add nuw nsw i64 %indvars.iv312, 3
  %gep355.2 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %indvars.iv.next313.2
  %gep357.2 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %indvars.iv.next313.2
  %269 = load <2 x float>, ptr %gep355.2, align 4, !tbaa !11
  %270 = fneg <2 x float> %269
  store <2 x float> %270, ptr %gep357.2, align 4, !tbaa !11
  %indvars.iv.next313.3 = add nuw nsw i64 %indvars.iv312, 4
  %gep355.3 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %indvars.iv.next313.3
  %gep357.3 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %indvars.iv.next313.3
  %271 = load <2 x float>, ptr %gep355.3, align 4, !tbaa !11
  %272 = fneg <2 x float> %271
  store <2 x float> %272, ptr %gep357.3, align 4, !tbaa !11
  %exitcond316.not.3 = icmp eq i64 %indvars.iv.next313.3, %wide.trip.count318
  br i1 %exitcond316.not.3, label %.loopexit457, label %scalar.ph398, !llvm.loop !24

.loopexit457:                                     ; preds = %scalar.ph398.prol.loopexit, %scalar.ph398, %middle.block397
  %indvars.iv.next311 = add nuw nsw i64 %indvars.iv310, 1
  %exitcond319.not = icmp eq i64 %indvars.iv.next311, %wide.trip.count318
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond319.not, label %.loopexit233, label %.preheader232, !llvm.loop !25

.loopexit233:                                     ; preds = %.loopexit457, %208, %._crit_edge340
  %273 = phi i32 [ %.pre341, %._crit_edge340 ], [ %209, %208 ], [ %209, %.loopexit457 ]
  %.not227272 = icmp slt i32 %273, 1
  br i1 %.not227272, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.loopexit233
  %274 = sext i32 %16 to i64
  %275 = sext i32 %22 to i64
  %276 = add nuw i32 %273, 1
  %wide.trip.count334 = zext i32 %276 to i64
  %277 = shl nsw i64 %274, 3
  %278 = shl nsw i64 %17, 3
  %279 = add nsw i64 %277, %278
  %280 = shl nsw i64 %274, 3
  %281 = add nsw i64 %279, 12
  %282 = add nsw i64 %277, 8
  %283 = shl nsw i64 %275, 3
  %284 = shl nsw i64 %23, 3
  %285 = add nsw i64 %283, %284
  %286 = shl nsw i64 %275, 3
  %287 = add nsw i64 %285, 12
  %288 = add nsw i64 %283, 8
  %289 = getelementptr i8, ptr %10, i64 %283
  %290 = getelementptr i8, ptr %289, i64 %284
  %291 = getelementptr i8, ptr %290, i64 16
  %292 = getelementptr i8, ptr %10, i64 %287
  %293 = getelementptr i8, ptr %6, i64 %277
  %294 = getelementptr i8, ptr %293, i64 %278
  %295 = getelementptr i8, ptr %294, i64 16
  %296 = getelementptr i8, ptr %6, i64 %281
  %297 = getelementptr i8, ptr %10, i64 %287
  %298 = getelementptr i8, ptr %10, i64 %285
  %299 = getelementptr i8, ptr %298, i64 8
  %300 = getelementptr i8, ptr %6, i64 %281
  %301 = getelementptr i8, ptr %6, i64 %279
  %302 = getelementptr i8, ptr %301, i64 8
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.loopexit456
  %indvar419 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvar.next420, %.loopexit456 ]
  %indvars.iv329 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next330, %.loopexit456 ]
  %indvars.iv327 = phi i64 [ 2, %.preheader.lr.ph ], [ %indvars.iv.next328, %.loopexit456 ]
  %303 = mul nsw i64 %indvars.iv329, %274
  %304 = mul nsw i64 %indvars.iv329, %275
  %invariant.gep358 = getelementptr %struct.complex, ptr %18, i64 %303
  %invariant.gep360 = getelementptr %struct.complex, ptr %24, i64 %304
  %min.iters.check438 = icmp ult i64 %indvars.iv329, 4
  br i1 %min.iters.check438, label %scalar.ph437.preheader, label %vector.memcheck418

vector.memcheck418:                               ; preds = %.preheader
  %305 = mul i64 %288, %indvar419
  %scevgep428 = getelementptr i8, ptr %291, i64 %305
  %306 = mul i64 %286, %indvar419
  %scevgep427 = getelementptr i8, ptr %292, i64 %306
  %307 = mul i64 %282, %indvar419
  %scevgep426 = getelementptr i8, ptr %295, i64 %307
  %308 = mul i64 %280, %indvar419
  %scevgep425 = getelementptr i8, ptr %296, i64 %308
  %scevgep424 = getelementptr i8, ptr %297, i64 %305
  %scevgep423 = getelementptr i8, ptr %299, i64 %306
  %scevgep422 = getelementptr i8, ptr %300, i64 %307
  %scevgep421 = getelementptr i8, ptr %302, i64 %308
  %bound0429 = icmp ult ptr %scevgep421, %scevgep424
  %bound1430 = icmp ult ptr %scevgep423, %scevgep422
  %found.conflict431 = and i1 %bound0429, %bound1430
  %bound0432 = icmp ult ptr %scevgep425, %scevgep428
  %bound1433 = icmp ult ptr %scevgep427, %scevgep426
  %found.conflict434 = and i1 %bound0432, %bound1433
  %conflict.rdx435 = or i1 %found.conflict431, %found.conflict434
  br i1 %conflict.rdx435, label %scalar.ph437.preheader, label %vector.ph439

vector.ph439:                                     ; preds = %vector.memcheck418
  %n.vec441 = and i64 %indvars.iv329, 9223372036854775806
  %ind.end442 = or i64 %indvars.iv329, 1
  br label %vector.body444

vector.body444:                                   ; preds = %vector.body444, %vector.ph439
  %index445 = phi i64 [ 0, %vector.ph439 ], [ %index.next454, %vector.body444 ]
  %offset.idx446 = or disjoint i64 %index445, 1
  %309 = getelementptr %struct.complex, ptr %invariant.gep358, i64 %offset.idx446
  %wide.vec447 = load <4 x float>, ptr %309, align 4, !tbaa !11
  %310 = getelementptr %struct.complex, ptr %invariant.gep360, i64 %offset.idx446
  %wide.vec450 = load <4 x float>, ptr %310, align 4, !tbaa !11
  %interleaved.vec453 = fsub <4 x float> %wide.vec447, %wide.vec450
  store <4 x float> %interleaved.vec453, ptr %309, align 4, !tbaa !11
  %index.next454 = add nuw i64 %index445, 2
  %311 = icmp eq i64 %index.next454, %n.vec441
  br i1 %311, label %middle.block436, label %vector.body444, !llvm.loop !26

middle.block436:                                  ; preds = %vector.body444
  %cmp.n455 = icmp eq i64 %indvars.iv329, %n.vec441
  br i1 %cmp.n455, label %.loopexit456, label %scalar.ph437.preheader

scalar.ph437.preheader:                           ; preds = %middle.block436, %vector.memcheck418, %.preheader
  %indvars.iv320.ph = phi i64 [ 1, %vector.memcheck418 ], [ 1, %.preheader ], [ %ind.end442, %middle.block436 ]
  %312 = sub i64 %indvars.iv327, %indvars.iv320.ph
  %313 = sub i64 %indvars.iv329, %indvars.iv320.ph
  %xtraiter466 = and i64 %312, 3
  %lcmp.mod467.not = icmp eq i64 %xtraiter466, 0
  br i1 %lcmp.mod467.not, label %scalar.ph437.prol.loopexit, label %scalar.ph437.prol

scalar.ph437.prol:                                ; preds = %scalar.ph437.preheader, %scalar.ph437.prol
  %indvars.iv320.prol = phi i64 [ %indvars.iv.next321.prol, %scalar.ph437.prol ], [ %indvars.iv320.ph, %scalar.ph437.preheader ]
  %prol.iter468 = phi i64 [ %prol.iter468.next, %scalar.ph437.prol ], [ 0, %scalar.ph437.preheader ]
  %gep359.prol = getelementptr %struct.complex, ptr %invariant.gep358, i64 %indvars.iv320.prol
  %gep361.prol = getelementptr %struct.complex, ptr %invariant.gep360, i64 %indvars.iv320.prol
  %314 = load <2 x float>, ptr %gep359.prol, align 4, !tbaa !11
  %315 = load <2 x float>, ptr %gep361.prol, align 4, !tbaa !11
  %316 = fsub <2 x float> %314, %315
  store <2 x float> %316, ptr %gep359.prol, align 4, !tbaa !11
  %indvars.iv.next321.prol = add nuw nsw i64 %indvars.iv320.prol, 1
  %prol.iter468.next = add i64 %prol.iter468, 1
  %prol.iter468.cmp.not = icmp eq i64 %prol.iter468.next, %xtraiter466
  br i1 %prol.iter468.cmp.not, label %scalar.ph437.prol.loopexit, label %scalar.ph437.prol, !llvm.loop !27

scalar.ph437.prol.loopexit:                       ; preds = %scalar.ph437.prol, %scalar.ph437.preheader
  %indvars.iv320.unr = phi i64 [ %indvars.iv320.ph, %scalar.ph437.preheader ], [ %indvars.iv.next321.prol, %scalar.ph437.prol ]
  %317 = icmp ult i64 %313, 3
  br i1 %317, label %.loopexit456, label %scalar.ph437

scalar.ph437:                                     ; preds = %scalar.ph437.prol.loopexit, %scalar.ph437
  %indvars.iv320 = phi i64 [ %indvars.iv.next321.3, %scalar.ph437 ], [ %indvars.iv320.unr, %scalar.ph437.prol.loopexit ]
  %gep359 = getelementptr %struct.complex, ptr %invariant.gep358, i64 %indvars.iv320
  %gep361 = getelementptr %struct.complex, ptr %invariant.gep360, i64 %indvars.iv320
  %318 = load <2 x float>, ptr %gep359, align 4, !tbaa !11
  %319 = load <2 x float>, ptr %gep361, align 4, !tbaa !11
  %320 = fsub <2 x float> %318, %319
  store <2 x float> %320, ptr %gep359, align 4, !tbaa !11
  %indvars.iv.next321 = add nuw nsw i64 %indvars.iv320, 1
  %gep359.1 = getelementptr %struct.complex, ptr %invariant.gep358, i64 %indvars.iv.next321
  %gep361.1 = getelementptr %struct.complex, ptr %invariant.gep360, i64 %indvars.iv.next321
  %321 = load <2 x float>, ptr %gep359.1, align 4, !tbaa !11
  %322 = load <2 x float>, ptr %gep361.1, align 4, !tbaa !11
  %323 = fsub <2 x float> %321, %322
  store <2 x float> %323, ptr %gep359.1, align 4, !tbaa !11
  %indvars.iv.next321.1 = add nuw nsw i64 %indvars.iv320, 2
  %gep359.2 = getelementptr %struct.complex, ptr %invariant.gep358, i64 %indvars.iv.next321.1
  %gep361.2 = getelementptr %struct.complex, ptr %invariant.gep360, i64 %indvars.iv.next321.1
  %324 = load <2 x float>, ptr %gep359.2, align 4, !tbaa !11
  %325 = load <2 x float>, ptr %gep361.2, align 4, !tbaa !11
  %326 = fsub <2 x float> %324, %325
  store <2 x float> %326, ptr %gep359.2, align 4, !tbaa !11
  %indvars.iv.next321.2 = add nuw nsw i64 %indvars.iv320, 3
  %gep359.3 = getelementptr %struct.complex, ptr %invariant.gep358, i64 %indvars.iv.next321.2
  %gep361.3 = getelementptr %struct.complex, ptr %invariant.gep360, i64 %indvars.iv.next321.2
  %327 = load <2 x float>, ptr %gep359.3, align 4, !tbaa !11
  %328 = load <2 x float>, ptr %gep361.3, align 4, !tbaa !11
  %329 = fsub <2 x float> %327, %328
  store <2 x float> %329, ptr %gep359.3, align 4, !tbaa !11
  %indvars.iv.next321.3 = add nuw nsw i64 %indvars.iv320, 4
  %exitcond326.not.3 = icmp eq i64 %indvars.iv.next321.3, %indvars.iv327
  br i1 %exitcond326.not.3, label %.loopexit456, label %scalar.ph437, !llvm.loop !28

.loopexit456:                                     ; preds = %scalar.ph437.prol.loopexit, %scalar.ph437, %middle.block436
  %indvars.iv.next330 = add nuw nsw i64 %indvars.iv329, 1
  %indvars.iv.next328 = add nuw nsw i64 %indvars.iv327, 1
  %exitcond335.not = icmp eq i64 %indvars.iv.next330, %wide.trip.count334
  %indvar.next420 = add i64 %indvar419, 1
  br i1 %exitcond335.not, label %.loopexit, label %.preheader, !llvm.loop !29

.loopexit:                                        ; preds = %.loopexit456, %.loopexit233, %12, %27, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #4
  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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, 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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !10, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.unroll.disable"}
!18 = distinct !{!18, !10, !14}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10, !14, !15}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !10, !14}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10, !14, !15}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !10, !14}
!29 = distinct !{!29, !10}


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