; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/BLAS/TESTING (cblat2)

; 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.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #1

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

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

88:                                               ; preds = %16
  %89 = load i64, ptr %50, align 8, !tbaa !9
  %90 = icmp ne i64 %89, 0
  br i1 %90, label %91, label %96

91:                                               ; preds = %88, %16
  %92 = load ptr, ptr %18, align 8, !tbaa !5
  %93 = load i8, ptr %92, align 1, !tbaa !11
  %94 = zext i8 %93 to i32
  %95 = icmp eq i32 %94, 85
  br label %96

96:                                               ; preds = %91, %88
  %97 = phi i1 [ false, %88 ], [ %95, %91 ]
  %98 = zext i1 %97 to i32
  %99 = sext i32 %98 to i64
  store i64 %99, ptr %57, align 8, !tbaa !9
  %100 = load i64, ptr %51, align 8, !tbaa !9
  %101 = icmp ne i64 %100, 0
  br i1 %101, label %105, label %102

102:                                              ; preds = %96
  %103 = load i64, ptr %50, align 8, !tbaa !9
  %104 = icmp ne i64 %103, 0
  br i1 %104, label %105, label %110

105:                                              ; preds = %102, %96
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  %107 = load i8, ptr %106, align 1, !tbaa !11
  %108 = zext i8 %107 to i32
  %109 = icmp eq i32 %108, 76
  br label %110

110:                                              ; preds = %105, %102
  %111 = phi i1 [ false, %102 ], [ %109, %105 ]
  %112 = zext i1 %111 to i32
  %113 = sext i32 %112 to i64
  store i64 %113, ptr %56, align 8, !tbaa !9
  %114 = load i64, ptr %50, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %116, label %121

116:                                              ; preds = %110
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i8, ptr %117, align 1, !tbaa !11
  %119 = zext i8 %118 to i32
  %120 = icmp eq i32 %119, 85
  br label %121

121:                                              ; preds = %116, %110
  %122 = phi i1 [ false, %110 ], [ %120, %116 ]
  %123 = zext i1 %122 to i32
  %124 = sext i32 %123 to i64
  store i64 %124, ptr %55, align 8, !tbaa !9
  %125 = load ptr, ptr %21, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  store i64 %126, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %127

127:                                              ; preds = %372, %121
  %128 = load i64, ptr %43, align 8, !tbaa !9
  %129 = load i64, ptr %35, align 8, !tbaa !9
  %130 = icmp sle i64 %128, %129
  br i1 %130, label %131, label %375

131:                                              ; preds = %127
  %132 = load ptr, ptr %20, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  store i64 %133, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %277, %131
  %135 = load i64, ptr %42, align 8, !tbaa !9
  %136 = load i64, ptr %36, align 8, !tbaa !9
  %137 = icmp sle i64 %135, %136
  br i1 %137, label %138, label %280

138:                                              ; preds = %134
  %139 = load i64, ptr %49, align 8, !tbaa !9
  %140 = icmp ne i64 %139, 0
  br i1 %140, label %155, label %141

141:                                              ; preds = %138
  %142 = load i64, ptr %57, align 8, !tbaa !9
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %144, label %148

144:                                              ; preds = %141
  %145 = load i64, ptr %42, align 8, !tbaa !9
  %146 = load i64, ptr %43, align 8, !tbaa !9
  %147 = icmp sle i64 %145, %146
  br i1 %147, label %155, label %148

148:                                              ; preds = %144, %141
  %149 = load i64, ptr %56, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %276

151:                                              ; preds = %148
  %152 = load i64, ptr %42, align 8, !tbaa !9
  %153 = load i64, ptr %43, align 8, !tbaa !9
  %154 = icmp sge i64 %152, %153
  br i1 %154, label %155, label %276

155:                                              ; preds = %151, %144, %138
  %156 = load i64, ptr %42, align 8, !tbaa !9
  %157 = load i64, ptr %43, align 8, !tbaa !9
  %158 = icmp sle i64 %156, %157
  br i1 %158, label %159, label %166

159:                                              ; preds = %155
  %160 = load i64, ptr %43, align 8, !tbaa !9
  %161 = load i64, ptr %42, align 8, !tbaa !9
  %162 = sub nsw i64 %160, %161
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sle i64 %162, %164
  br i1 %165, label %177, label %166

166:                                              ; preds = %159, %155
  %167 = load i64, ptr %42, align 8, !tbaa !9
  %168 = load i64, ptr %43, align 8, !tbaa !9
  %169 = icmp sge i64 %167, %168
  br i1 %169, label %170, label %210

170:                                              ; preds = %166
  %171 = load i64, ptr %42, align 8, !tbaa !9
  %172 = load i64, ptr %43, align 8, !tbaa !9
  %173 = sub nsw i64 %171, %172
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = icmp sle i64 %173, %175
  br i1 %176, label %177, label %210

177:                                              ; preds = %170, %159
  %178 = load i64, ptr %42, align 8, !tbaa !9
  %179 = load i64, ptr %43, align 8, !tbaa !9
  %180 = load i64, ptr %33, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = add nsw i64 %178, %181
  store i64 %182, ptr %37, align 8, !tbaa !9
  %183 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cbeg_(ptr noundef %41, ptr noundef %183)
  %184 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 0
  %185 = load float, ptr %184, align 4, !tbaa !12
  %186 = load ptr, ptr %29, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.complex, ptr %186, i32 0, i32 0
  %188 = load float, ptr %187, align 4, !tbaa !12
  %189 = fadd float %185, %188
  %190 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %189, ptr %190, align 4, !tbaa !12
  %191 = getelementptr inbounds %struct.complex, ptr %41, i32 0, i32 1
  %192 = load float, ptr %191, align 4, !tbaa !15
  %193 = load ptr, ptr %29, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.complex, ptr %193, i32 0, i32 1
  %195 = load float, ptr %194, align 4, !tbaa !15
  %196 = fadd float %192, %195
  %197 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %196, ptr %197, align 4, !tbaa !15
  %198 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %199 = load float, ptr %198, align 4, !tbaa !12
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = load i64, ptr %37, align 8, !tbaa !9
  %202 = getelementptr inbounds %struct.complex, ptr %200, i64 %201
  %203 = getelementptr inbounds %struct.complex, ptr %202, i32 0, i32 0
  store float %199, ptr %203, align 4, !tbaa !12
  %204 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %205 = load float, ptr %204, align 4, !tbaa !15
  %206 = load ptr, ptr %22, align 8, !tbaa !5
  %207 = load i64, ptr %37, align 8, !tbaa !9
  %208 = getelementptr inbounds %struct.complex, ptr %206, i64 %207
  %209 = getelementptr inbounds %struct.complex, ptr %208, i32 0, i32 1
  store float %205, ptr %209, align 4, !tbaa !15
  br label %224

210:                                              ; preds = %170, %166
  %211 = load i64, ptr %42, align 8, !tbaa !9
  %212 = load i64, ptr %43, align 8, !tbaa !9
  %213 = load i64, ptr %33, align 8, !tbaa !9
  %214 = mul nsw i64 %212, %213
  %215 = add nsw i64 %211, %214
  store i64 %215, ptr %37, align 8, !tbaa !9
  %216 = load ptr, ptr %22, align 8, !tbaa !5
  %217 = load i64, ptr %37, align 8, !tbaa !9
  %218 = getelementptr inbounds %struct.complex, ptr %216, i64 %217
  %219 = getelementptr inbounds %struct.complex, ptr %218, i32 0, i32 0
  store float 0.000000e+00, ptr %219, align 4, !tbaa !12
  %220 = load ptr, ptr %22, align 8, !tbaa !5
  %221 = load i64, ptr %37, align 8, !tbaa !9
  %222 = getelementptr inbounds %struct.complex, ptr %220, i64 %221
  %223 = getelementptr inbounds %struct.complex, ptr %222, i32 0, i32 1
  store float 0.000000e+00, ptr %223, align 4, !tbaa !15
  br label %224

224:                                              ; preds = %210, %177
  %225 = load i64, ptr %42, align 8, !tbaa !9
  %226 = load i64, ptr %43, align 8, !tbaa !9
  %227 = icmp ne i64 %225, %226
  br i1 %227, label %228, label %275

228:                                              ; preds = %224
  %229 = load i64, ptr %51, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %231, label %256

231:                                              ; preds = %228
  %232 = load i64, ptr %43, align 8, !tbaa !9
  %233 = load i64, ptr %42, align 8, !tbaa !9
  %234 = load i64, ptr %33, align 8, !tbaa !9
  %235 = mul nsw i64 %233, %234
  %236 = add nsw i64 %232, %235
  store i64 %236, ptr %37, align 8, !tbaa !9
  %237 = load ptr, ptr %22, align 8, !tbaa !5
  %238 = load i64, ptr %42, align 8, !tbaa !9
  %239 = load i64, ptr %43, align 8, !tbaa !9
  %240 = load i64, ptr %33, align 8, !tbaa !9
  %241 = mul nsw i64 %239, %240
  %242 = add nsw i64 %238, %241
  %243 = getelementptr inbounds %struct.complex, ptr %237, i64 %242
  call void @r_cnjg(ptr noundef %40, ptr noundef %243)
  %244 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %245 = load float, ptr %244, align 4, !tbaa !12
  %246 = load ptr, ptr %22, align 8, !tbaa !5
  %247 = load i64, ptr %37, align 8, !tbaa !9
  %248 = getelementptr inbounds %struct.complex, ptr %246, i64 %247
  %249 = getelementptr inbounds %struct.complex, ptr %248, i32 0, i32 0
  store float %245, ptr %249, align 4, !tbaa !12
  %250 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %251 = load float, ptr %250, align 4, !tbaa !15
  %252 = load ptr, ptr %22, align 8, !tbaa !5
  %253 = load i64, ptr %37, align 8, !tbaa !9
  %254 = getelementptr inbounds %struct.complex, ptr %252, i64 %253
  %255 = getelementptr inbounds %struct.complex, ptr %254, i32 0, i32 1
  store float %251, ptr %255, align 4, !tbaa !15
  br label %274

256:                                              ; preds = %228
  %257 = load i64, ptr %50, align 8, !tbaa !9
  %258 = icmp ne i64 %257, 0
  br i1 %258, label %259, label %273

259:                                              ; preds = %256
  %260 = load i64, ptr %43, align 8, !tbaa !9
  %261 = load i64, ptr %42, align 8, !tbaa !9
  %262 = load i64, ptr %33, align 8, !tbaa !9
  %263 = mul nsw i64 %261, %262
  %264 = add nsw i64 %260, %263
  store i64 %264, ptr %37, align 8, !tbaa !9
  %265 = load ptr, ptr %22, align 8, !tbaa !5
  %266 = load i64, ptr %37, align 8, !tbaa !9
  %267 = getelementptr inbounds %struct.complex, ptr %265, i64 %266
  %268 = getelementptr inbounds %struct.complex, ptr %267, i32 0, i32 0
  store float 0.000000e+00, ptr %268, align 4, !tbaa !12
  %269 = load ptr, ptr %22, align 8, !tbaa !5
  %270 = load i64, ptr %37, align 8, !tbaa !9
  %271 = getelementptr inbounds %struct.complex, ptr %269, i64 %270
  %272 = getelementptr inbounds %struct.complex, ptr %271, i32 0, i32 1
  store float 0.000000e+00, ptr %272, align 4, !tbaa !15
  br label %273

273:                                              ; preds = %259, %256
  br label %274

274:                                              ; preds = %273, %231
  br label %275

275:                                              ; preds = %274, %224
  br label %276

276:                                              ; preds = %275, %151, %148
  br label %277

277:                                              ; preds = %276
  %278 = load i64, ptr %42, align 8, !tbaa !9
  %279 = add nsw i64 %278, 1
  store i64 %279, ptr %42, align 8, !tbaa !9
  br label %134, !llvm.loop !16

280:                                              ; preds = %134
  %281 = load i64, ptr %51, align 8, !tbaa !9
  %282 = icmp ne i64 %281, 0
  br i1 %282, label %283, label %314

283:                                              ; preds = %280
  %284 = load i64, ptr %43, align 8, !tbaa !9
  %285 = load i64, ptr %43, align 8, !tbaa !9
  %286 = load i64, ptr %33, align 8, !tbaa !9
  %287 = mul nsw i64 %285, %286
  %288 = add nsw i64 %284, %287
  store i64 %288, ptr %36, align 8, !tbaa !9
  %289 = load i64, ptr %43, align 8, !tbaa !9
  %290 = load i64, ptr %43, align 8, !tbaa !9
  %291 = load i64, ptr %33, align 8, !tbaa !9
  %292 = mul nsw i64 %290, %291
  %293 = add nsw i64 %289, %292
  store i64 %293, ptr %37, align 8, !tbaa !9
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = load i64, ptr %37, align 8, !tbaa !9
  %296 = getelementptr inbounds %struct.complex, ptr %294, i64 %295
  %297 = getelementptr inbounds %struct.complex, ptr %296, i32 0, i32 0
  %298 = load float, ptr %297, align 4, !tbaa !12
  store float %298, ptr %39, align 4, !tbaa !18
  %299 = load float, ptr %39, align 4, !tbaa !18
  %300 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %299, ptr %300, align 4, !tbaa !12
  %301 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float 0.000000e+00, ptr %301, align 4, !tbaa !15
  %302 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %303 = load float, ptr %302, align 4, !tbaa !12
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = load i64, ptr %36, align 8, !tbaa !9
  %306 = getelementptr inbounds %struct.complex, ptr %304, i64 %305
  %307 = getelementptr inbounds %struct.complex, ptr %306, i32 0, i32 0
  store float %303, ptr %307, align 4, !tbaa !12
  %308 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %309 = load float, ptr %308, align 4, !tbaa !15
  %310 = load ptr, ptr %22, align 8, !tbaa !5
  %311 = load i64, ptr %36, align 8, !tbaa !9
  %312 = getelementptr inbounds %struct.complex, ptr %310, i64 %311
  %313 = getelementptr inbounds %struct.complex, ptr %312, i32 0, i32 1
  store float %309, ptr %313, align 4, !tbaa !15
  br label %314

314:                                              ; preds = %283, %280
  %315 = load i64, ptr %50, align 8, !tbaa !9
  %316 = icmp ne i64 %315, 0
  br i1 %316, label %317, label %354

317:                                              ; preds = %314
  %318 = load i64, ptr %43, align 8, !tbaa !9
  %319 = load i64, ptr %43, align 8, !tbaa !9
  %320 = load i64, ptr %33, align 8, !tbaa !9
  %321 = mul nsw i64 %319, %320
  %322 = add nsw i64 %318, %321
  store i64 %322, ptr %36, align 8, !tbaa !9
  %323 = load i64, ptr %43, align 8, !tbaa !9
  %324 = load i64, ptr %43, align 8, !tbaa !9
  %325 = load i64, ptr %33, align 8, !tbaa !9
  %326 = mul nsw i64 %324, %325
  %327 = add nsw i64 %323, %326
  store i64 %327, ptr %37, align 8, !tbaa !9
  %328 = load ptr, ptr %22, align 8, !tbaa !5
  %329 = load i64, ptr %37, align 8, !tbaa !9
  %330 = getelementptr inbounds %struct.complex, ptr %328, i64 %329
  %331 = getelementptr inbounds %struct.complex, ptr %330, i32 0, i32 0
  %332 = load float, ptr %331, align 4, !tbaa !12
  %333 = fadd float %332, 1.000000e+00
  %334 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %333, ptr %334, align 4, !tbaa !12
  %335 = load ptr, ptr %22, align 8, !tbaa !5
  %336 = load i64, ptr %37, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.complex, ptr %335, i64 %336
  %338 = getelementptr inbounds %struct.complex, ptr %337, i32 0, i32 1
  %339 = load float, ptr %338, align 4, !tbaa !15
  %340 = fadd float %339, 0.000000e+00
  %341 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float %340, ptr %341, align 4, !tbaa !15
  %342 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %343 = load float, ptr %342, align 4, !tbaa !12
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  %345 = load i64, ptr %36, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.complex, ptr %344, i64 %345
  %347 = getelementptr inbounds %struct.complex, ptr %346, i32 0, i32 0
  store float %343, ptr %347, align 4, !tbaa !12
  %348 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %349 = load float, ptr %348, align 4, !tbaa !15
  %350 = load ptr, ptr %22, align 8, !tbaa !5
  %351 = load i64, ptr %36, align 8, !tbaa !9
  %352 = getelementptr inbounds %struct.complex, ptr %350, i64 %351
  %353 = getelementptr inbounds %struct.complex, ptr %352, i32 0, i32 1
  store float %349, ptr %353, align 4, !tbaa !15
  br label %354

354:                                              ; preds = %317, %314
  %355 = load i64, ptr %55, align 8, !tbaa !9
  %356 = icmp ne i64 %355, 0
  br i1 %356, label %357, label %371

357:                                              ; preds = %354
  %358 = load i64, ptr %43, align 8, !tbaa !9
  %359 = load i64, ptr %43, align 8, !tbaa !9
  %360 = load i64, ptr %33, align 8, !tbaa !9
  %361 = mul nsw i64 %359, %360
  %362 = add nsw i64 %358, %361
  store i64 %362, ptr %36, align 8, !tbaa !9
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = load i64, ptr %36, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.complex, ptr %363, i64 %364
  %366 = getelementptr inbounds %struct.complex, ptr %365, i32 0, i32 0
  store float 1.000000e+00, ptr %366, align 4, !tbaa !12
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = load i64, ptr %36, align 8, !tbaa !9
  %369 = getelementptr inbounds %struct.complex, ptr %367, i64 %368
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 1
  store float 0.000000e+00, ptr %370, align 4, !tbaa !15
  br label %371

371:                                              ; preds = %357, %354
  br label %372

372:                                              ; preds = %371
  %373 = load i64, ptr %43, align 8, !tbaa !9
  %374 = add nsw i64 %373, 1
  store i64 %374, ptr %43, align 8, !tbaa !9
  br label %127, !llvm.loop !19

375:                                              ; preds = %127
  %376 = load ptr, ptr %17, align 8, !tbaa !5
  %377 = call i64 @s_cmp(ptr noundef %376, ptr noundef @.str.8, i64 noundef 2, i64 noundef 2)
  %378 = icmp eq i64 %377, 0
  br i1 %378, label %379, label %461

379:                                              ; preds = %375
  %380 = load ptr, ptr %21, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  store i64 %381, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %457, %379
  %383 = load i64, ptr %43, align 8, !tbaa !9
  %384 = load i64, ptr %35, align 8, !tbaa !9
  %385 = icmp sle i64 %383, %384
  br i1 %385, label %386, label %460

386:                                              ; preds = %382
  %387 = load ptr, ptr %20, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  store i64 %388, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %424, %386
  %390 = load i64, ptr %42, align 8, !tbaa !9
  %391 = load i64, ptr %36, align 8, !tbaa !9
  %392 = icmp sle i64 %390, %391
  br i1 %392, label %393, label %427

393:                                              ; preds = %389
  %394 = load i64, ptr %42, align 8, !tbaa !9
  %395 = load i64, ptr %43, align 8, !tbaa !9
  %396 = sub nsw i64 %395, 1
  %397 = load ptr, ptr %25, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = mul nsw i64 %396, %398
  %400 = add nsw i64 %394, %399
  store i64 %400, ptr %37, align 8, !tbaa !9
  %401 = load i64, ptr %42, align 8, !tbaa !9
  %402 = load i64, ptr %43, align 8, !tbaa !9
  %403 = load i64, ptr %33, align 8, !tbaa !9
  %404 = mul nsw i64 %402, %403
  %405 = add nsw i64 %401, %404
  store i64 %405, ptr %38, align 8, !tbaa !9
  %406 = load ptr, ptr %22, align 8, !tbaa !5
  %407 = load i64, ptr %38, align 8, !tbaa !9
  %408 = getelementptr inbounds %struct.complex, ptr %406, i64 %407
  %409 = getelementptr inbounds %struct.complex, ptr %408, i32 0, i32 0
  %410 = load float, ptr %409, align 4, !tbaa !12
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load i64, ptr %37, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.complex, ptr %411, i64 %412
  %414 = getelementptr inbounds %struct.complex, ptr %413, i32 0, i32 0
  store float %410, ptr %414, align 4, !tbaa !12
  %415 = load ptr, ptr %22, align 8, !tbaa !5
  %416 = load i64, ptr %38, align 8, !tbaa !9
  %417 = getelementptr inbounds %struct.complex, ptr %415, i64 %416
  %418 = getelementptr inbounds %struct.complex, ptr %417, i32 0, i32 1
  %419 = load float, ptr %418, align 4, !tbaa !15
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load i64, ptr %37, align 8, !tbaa !9
  %422 = getelementptr inbounds %struct.complex, ptr %420, i64 %421
  %423 = getelementptr inbounds %struct.complex, ptr %422, i32 0, i32 1
  store float %419, ptr %423, align 4, !tbaa !15
  br label %424

424:                                              ; preds = %393
  %425 = load i64, ptr %42, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %42, align 8, !tbaa !9
  br label %389, !llvm.loop !20

427:                                              ; preds = %389
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  store i64 %429, ptr %36, align 8, !tbaa !9
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = load i64, ptr %430, align 8, !tbaa !9
  %432 = add nsw i64 %431, 1
  store i64 %432, ptr %42, align 8, !tbaa !9
  br label %433

433:                                              ; preds = %453, %427
  %434 = load i64, ptr %42, align 8, !tbaa !9
  %435 = load i64, ptr %36, align 8, !tbaa !9
  %436 = icmp sle i64 %434, %435
  br i1 %436, label %437, label %456

437:                                              ; preds = %433
  %438 = load i64, ptr %42, align 8, !tbaa !9
  %439 = load i64, ptr %43, align 8, !tbaa !9
  %440 = sub nsw i64 %439, 1
  %441 = load ptr, ptr %25, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = mul nsw i64 %440, %442
  %444 = add nsw i64 %438, %443
  store i64 %444, ptr %37, align 8, !tbaa !9
  %445 = load ptr, ptr %24, align 8, !tbaa !5
  %446 = load i64, ptr %37, align 8, !tbaa !9
  %447 = getelementptr inbounds %struct.complex, ptr %445, i64 %446
  %448 = getelementptr inbounds %struct.complex, ptr %447, i32 0, i32 0
  store float -1.000000e+10, ptr %448, align 4, !tbaa !12
  %449 = load ptr, ptr %24, align 8, !tbaa !5
  %450 = load i64, ptr %37, align 8, !tbaa !9
  %451 = getelementptr inbounds %struct.complex, ptr %449, i64 %450
  %452 = getelementptr inbounds %struct.complex, ptr %451, i32 0, i32 1
  store float 1.000000e+10, ptr %452, align 4, !tbaa !15
  br label %453

453:                                              ; preds = %437
  %454 = load i64, ptr %42, align 8, !tbaa !9
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %42, align 8, !tbaa !9
  br label %433, !llvm.loop !21

456:                                              ; preds = %433
  br label %457

457:                                              ; preds = %456
  %458 = load i64, ptr %43, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %43, align 8, !tbaa !9
  br label %382, !llvm.loop !22

460:                                              ; preds = %382
  br label %1093

461:                                              ; preds = %375
  %462 = load ptr, ptr %17, align 8, !tbaa !5
  %463 = call i64 @s_cmp(ptr noundef %462, ptr noundef @.str.13, i64 noundef 2, i64 noundef 2)
  %464 = icmp eq i64 %463, 0
  br i1 %464, label %465, label %602

465:                                              ; preds = %461
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  store i64 %467, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %468

468:                                              ; preds = %598, %465
  %469 = load i64, ptr %43, align 8, !tbaa !9
  %470 = load i64, ptr %35, align 8, !tbaa !9
  %471 = icmp sle i64 %469, %470
  br i1 %471, label %472, label %601

472:                                              ; preds = %468
  %473 = load ptr, ptr %27, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = add nsw i64 %474, 1
  %476 = load i64, ptr %43, align 8, !tbaa !9
  %477 = sub nsw i64 %475, %476
  store i64 %477, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %498, %472
  %479 = load i64, ptr %44, align 8, !tbaa !9
  %480 = load i64, ptr %36, align 8, !tbaa !9
  %481 = icmp sle i64 %479, %480
  br i1 %481, label %482, label %501

482:                                              ; preds = %478
  %483 = load i64, ptr %44, align 8, !tbaa !9
  %484 = load i64, ptr %43, align 8, !tbaa !9
  %485 = sub nsw i64 %484, 1
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  %488 = mul nsw i64 %485, %487
  %489 = add nsw i64 %483, %488
  store i64 %489, ptr %37, align 8, !tbaa !9
  %490 = load ptr, ptr %24, align 8, !tbaa !5
  %491 = load i64, ptr %37, align 8, !tbaa !9
  %492 = getelementptr inbounds %struct.complex, ptr %490, i64 %491
  %493 = getelementptr inbounds %struct.complex, ptr %492, i32 0, i32 0
  store float -1.000000e+10, ptr %493, align 4, !tbaa !12
  %494 = load ptr, ptr %24, align 8, !tbaa !5
  %495 = load i64, ptr %37, align 8, !tbaa !9
  %496 = getelementptr inbounds %struct.complex, ptr %494, i64 %495
  %497 = getelementptr inbounds %struct.complex, ptr %496, i32 0, i32 1
  store float 1.000000e+10, ptr %497, align 4, !tbaa !15
  br label %498

498:                                              ; preds = %482
  %499 = load i64, ptr %44, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  store i64 %500, ptr %44, align 8, !tbaa !9
  br label %478, !llvm.loop !23

501:                                              ; preds = %478
  %502 = load ptr, ptr %26, align 8, !tbaa !5
  %503 = load i64, ptr %502, align 8, !tbaa !9
  %504 = load ptr, ptr %27, align 8, !tbaa !5
  %505 = load i64, ptr %504, align 8, !tbaa !9
  %506 = add nsw i64 %503, %505
  %507 = add nsw i64 %506, 1
  store i64 %507, ptr %37, align 8, !tbaa !9
  %508 = load ptr, ptr %27, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  %511 = load ptr, ptr %20, align 8, !tbaa !5
  %512 = load i64, ptr %511, align 8, !tbaa !9
  %513 = add nsw i64 %510, %512
  %514 = load i64, ptr %43, align 8, !tbaa !9
  %515 = sub nsw i64 %513, %514
  store i64 %515, ptr %38, align 8, !tbaa !9
  %516 = load i64, ptr %37, align 8, !tbaa !9
  %517 = load i64, ptr %38, align 8, !tbaa !9
  %518 = icmp sle i64 %516, %517
  br i1 %518, label %519, label %521

519:                                              ; preds = %501
  %520 = load i64, ptr %37, align 8, !tbaa !9
  br label %523

521:                                              ; preds = %501
  %522 = load i64, ptr %38, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %521, %519
  %524 = phi i64 [ %520, %519 ], [ %522, %521 ]
  store i64 %524, ptr %36, align 8, !tbaa !9
  %525 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %525, ptr %45, align 8, !tbaa !9
  br label %526

526:                                              ; preds = %567, %523
  %527 = load i64, ptr %45, align 8, !tbaa !9
  %528 = load i64, ptr %36, align 8, !tbaa !9
  %529 = icmp sle i64 %527, %528
  br i1 %529, label %530, label %570

530:                                              ; preds = %526
  %531 = load i64, ptr %45, align 8, !tbaa !9
  %532 = load i64, ptr %43, align 8, !tbaa !9
  %533 = sub nsw i64 %532, 1
  %534 = load ptr, ptr %25, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = mul nsw i64 %533, %535
  %537 = add nsw i64 %531, %536
  store i64 %537, ptr %37, align 8, !tbaa !9
  %538 = load i64, ptr %45, align 8, !tbaa !9
  %539 = load i64, ptr %43, align 8, !tbaa !9
  %540 = add nsw i64 %538, %539
  %541 = load ptr, ptr %27, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = sub nsw i64 %540, %542
  %544 = sub nsw i64 %543, 1
  %545 = load i64, ptr %43, align 8, !tbaa !9
  %546 = load i64, ptr %33, align 8, !tbaa !9
  %547 = mul nsw i64 %545, %546
  %548 = add nsw i64 %544, %547
  store i64 %548, ptr %38, align 8, !tbaa !9
  %549 = load ptr, ptr %22, align 8, !tbaa !5
  %550 = load i64, ptr %38, align 8, !tbaa !9
  %551 = getelementptr inbounds %struct.complex, ptr %549, i64 %550
  %552 = getelementptr inbounds %struct.complex, ptr %551, i32 0, i32 0
  %553 = load float, ptr %552, align 4, !tbaa !12
  %554 = load ptr, ptr %24, align 8, !tbaa !5
  %555 = load i64, ptr %37, align 8, !tbaa !9
  %556 = getelementptr inbounds %struct.complex, ptr %554, i64 %555
  %557 = getelementptr inbounds %struct.complex, ptr %556, i32 0, i32 0
  store float %553, ptr %557, align 4, !tbaa !12
  %558 = load ptr, ptr %22, align 8, !tbaa !5
  %559 = load i64, ptr %38, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.complex, ptr %558, i64 %559
  %561 = getelementptr inbounds %struct.complex, ptr %560, i32 0, i32 1
  %562 = load float, ptr %561, align 4, !tbaa !15
  %563 = load ptr, ptr %24, align 8, !tbaa !5
  %564 = load i64, ptr %37, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.complex, ptr %563, i64 %564
  %566 = getelementptr inbounds %struct.complex, ptr %565, i32 0, i32 1
  store float %562, ptr %566, align 4, !tbaa !15
  br label %567

567:                                              ; preds = %530
  %568 = load i64, ptr %45, align 8, !tbaa !9
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %45, align 8, !tbaa !9
  br label %526, !llvm.loop !24

570:                                              ; preds = %526
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  store i64 %572, ptr %36, align 8, !tbaa !9
  %573 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %573, ptr %46, align 8, !tbaa !9
  br label %574

574:                                              ; preds = %594, %570
  %575 = load i64, ptr %46, align 8, !tbaa !9
  %576 = load i64, ptr %36, align 8, !tbaa !9
  %577 = icmp sle i64 %575, %576
  br i1 %577, label %578, label %597

578:                                              ; preds = %574
  %579 = load i64, ptr %46, align 8, !tbaa !9
  %580 = load i64, ptr %43, align 8, !tbaa !9
  %581 = sub nsw i64 %580, 1
  %582 = load ptr, ptr %25, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = mul nsw i64 %581, %583
  %585 = add nsw i64 %579, %584
  store i64 %585, ptr %37, align 8, !tbaa !9
  %586 = load ptr, ptr %24, align 8, !tbaa !5
  %587 = load i64, ptr %37, align 8, !tbaa !9
  %588 = getelementptr inbounds %struct.complex, ptr %586, i64 %587
  %589 = getelementptr inbounds %struct.complex, ptr %588, i32 0, i32 0
  store float -1.000000e+10, ptr %589, align 4, !tbaa !12
  %590 = load ptr, ptr %24, align 8, !tbaa !5
  %591 = load i64, ptr %37, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.complex, ptr %590, i64 %591
  %593 = getelementptr inbounds %struct.complex, ptr %592, i32 0, i32 1
  store float 1.000000e+10, ptr %593, align 4, !tbaa !15
  br label %594

594:                                              ; preds = %578
  %595 = load i64, ptr %46, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %46, align 8, !tbaa !9
  br label %574, !llvm.loop !25

597:                                              ; preds = %574
  br label %598

598:                                              ; preds = %597
  %599 = load i64, ptr %43, align 8, !tbaa !9
  %600 = add nsw i64 %599, 1
  store i64 %600, ptr %43, align 8, !tbaa !9
  br label %468, !llvm.loop !26

601:                                              ; preds = %468
  br label %1092

602:                                              ; preds = %461
  %603 = load ptr, ptr %17, align 8, !tbaa !5
  %604 = call i64 @s_cmp(ptr noundef %603, ptr noundef @.str.14, i64 noundef 2, i64 noundef 2)
  %605 = icmp eq i64 %604, 0
  br i1 %605, label %610, label %606

606:                                              ; preds = %602
  %607 = load ptr, ptr %17, align 8, !tbaa !5
  %608 = call i64 @s_cmp(ptr noundef %607, ptr noundef @.str.15, i64 noundef 2, i64 noundef 2)
  %609 = icmp eq i64 %608, 0
  br i1 %609, label %610, label %773

610:                                              ; preds = %606, %602
  %611 = load ptr, ptr %21, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  store i64 %612, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %613

613:                                              ; preds = %769, %610
  %614 = load i64, ptr %43, align 8, !tbaa !9
  %615 = load i64, ptr %35, align 8, !tbaa !9
  %616 = icmp sle i64 %614, %615
  br i1 %616, label %617, label %772

617:                                              ; preds = %613
  %618 = load i64, ptr %57, align 8, !tbaa !9
  %619 = icmp ne i64 %618, 0
  br i1 %619, label %620, label %629

620:                                              ; preds = %617
  store i64 1, ptr %52, align 8, !tbaa !9
  %621 = load i64, ptr %55, align 8, !tbaa !9
  %622 = icmp ne i64 %621, 0
  br i1 %622, label %623, label %626

623:                                              ; preds = %620
  %624 = load i64, ptr %43, align 8, !tbaa !9
  %625 = sub nsw i64 %624, 1
  store i64 %625, ptr %53, align 8, !tbaa !9
  br label %628

626:                                              ; preds = %620
  %627 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %627, ptr %53, align 8, !tbaa !9
  br label %628

628:                                              ; preds = %626, %623
  br label %640

629:                                              ; preds = %617
  %630 = load i64, ptr %55, align 8, !tbaa !9
  %631 = icmp ne i64 %630, 0
  br i1 %631, label %632, label %635

632:                                              ; preds = %629
  %633 = load i64, ptr %43, align 8, !tbaa !9
  %634 = add nsw i64 %633, 1
  store i64 %634, ptr %52, align 8, !tbaa !9
  br label %637

635:                                              ; preds = %629
  %636 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %636, ptr %52, align 8, !tbaa !9
  br label %637

637:                                              ; preds = %635, %632
  %638 = load ptr, ptr %21, align 8, !tbaa !5
  %639 = load i64, ptr %638, align 8, !tbaa !9
  store i64 %639, ptr %53, align 8, !tbaa !9
  br label %640

640:                                              ; preds = %637, %628
  %641 = load i64, ptr %52, align 8, !tbaa !9
  %642 = sub nsw i64 %641, 1
  store i64 %642, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %643

643:                                              ; preds = %663, %640
  %644 = load i64, ptr %42, align 8, !tbaa !9
  %645 = load i64, ptr %36, align 8, !tbaa !9
  %646 = icmp sle i64 %644, %645
  br i1 %646, label %647, label %666

647:                                              ; preds = %643
  %648 = load i64, ptr %42, align 8, !tbaa !9
  %649 = load i64, ptr %43, align 8, !tbaa !9
  %650 = sub nsw i64 %649, 1
  %651 = load ptr, ptr %25, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = mul nsw i64 %650, %652
  %654 = add nsw i64 %648, %653
  store i64 %654, ptr %37, align 8, !tbaa !9
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = load i64, ptr %37, align 8, !tbaa !9
  %657 = getelementptr inbounds %struct.complex, ptr %655, i64 %656
  %658 = getelementptr inbounds %struct.complex, ptr %657, i32 0, i32 0
  store float -1.000000e+10, ptr %658, align 4, !tbaa !12
  %659 = load ptr, ptr %24, align 8, !tbaa !5
  %660 = load i64, ptr %37, align 8, !tbaa !9
  %661 = getelementptr inbounds %struct.complex, ptr %659, i64 %660
  %662 = getelementptr inbounds %struct.complex, ptr %661, i32 0, i32 1
  store float 1.000000e+10, ptr %662, align 4, !tbaa !15
  br label %663

663:                                              ; preds = %647
  %664 = load i64, ptr %42, align 8, !tbaa !9
  %665 = add nsw i64 %664, 1
  store i64 %665, ptr %42, align 8, !tbaa !9
  br label %643, !llvm.loop !27

666:                                              ; preds = %643
  %667 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %667, ptr %36, align 8, !tbaa !9
  %668 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %668, ptr %42, align 8, !tbaa !9
  br label %669

669:                                              ; preds = %704, %666
  %670 = load i64, ptr %42, align 8, !tbaa !9
  %671 = load i64, ptr %36, align 8, !tbaa !9
  %672 = icmp sle i64 %670, %671
  br i1 %672, label %673, label %707

673:                                              ; preds = %669
  %674 = load i64, ptr %42, align 8, !tbaa !9
  %675 = load i64, ptr %43, align 8, !tbaa !9
  %676 = sub nsw i64 %675, 1
  %677 = load ptr, ptr %25, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  %679 = mul nsw i64 %676, %678
  %680 = add nsw i64 %674, %679
  store i64 %680, ptr %37, align 8, !tbaa !9
  %681 = load i64, ptr %42, align 8, !tbaa !9
  %682 = load i64, ptr %43, align 8, !tbaa !9
  %683 = load i64, ptr %33, align 8, !tbaa !9
  %684 = mul nsw i64 %682, %683
  %685 = add nsw i64 %681, %684
  store i64 %685, ptr %38, align 8, !tbaa !9
  %686 = load ptr, ptr %22, align 8, !tbaa !5
  %687 = load i64, ptr %38, align 8, !tbaa !9
  %688 = getelementptr inbounds %struct.complex, ptr %686, i64 %687
  %689 = getelementptr inbounds %struct.complex, ptr %688, i32 0, i32 0
  %690 = load float, ptr %689, align 4, !tbaa !12
  %691 = load ptr, ptr %24, align 8, !tbaa !5
  %692 = load i64, ptr %37, align 8, !tbaa !9
  %693 = getelementptr inbounds %struct.complex, ptr %691, i64 %692
  %694 = getelementptr inbounds %struct.complex, ptr %693, i32 0, i32 0
  store float %690, ptr %694, align 4, !tbaa !12
  %695 = load ptr, ptr %22, align 8, !tbaa !5
  %696 = load i64, ptr %38, align 8, !tbaa !9
  %697 = getelementptr inbounds %struct.complex, ptr %695, i64 %696
  %698 = getelementptr inbounds %struct.complex, ptr %697, i32 0, i32 1
  %699 = load float, ptr %698, align 4, !tbaa !15
  %700 = load ptr, ptr %24, align 8, !tbaa !5
  %701 = load i64, ptr %37, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.complex, ptr %700, i64 %701
  %703 = getelementptr inbounds %struct.complex, ptr %702, i32 0, i32 1
  store float %699, ptr %703, align 4, !tbaa !15
  br label %704

704:                                              ; preds = %673
  %705 = load i64, ptr %42, align 8, !tbaa !9
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %42, align 8, !tbaa !9
  br label %669, !llvm.loop !28

707:                                              ; preds = %669
  %708 = load ptr, ptr %25, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  store i64 %709, ptr %36, align 8, !tbaa !9
  %710 = load i64, ptr %53, align 8, !tbaa !9
  %711 = add nsw i64 %710, 1
  store i64 %711, ptr %42, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %732, %707
  %713 = load i64, ptr %42, align 8, !tbaa !9
  %714 = load i64, ptr %36, align 8, !tbaa !9
  %715 = icmp sle i64 %713, %714
  br i1 %715, label %716, label %735

716:                                              ; preds = %712
  %717 = load i64, ptr %42, align 8, !tbaa !9
  %718 = load i64, ptr %43, align 8, !tbaa !9
  %719 = sub nsw i64 %718, 1
  %720 = load ptr, ptr %25, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = mul nsw i64 %719, %721
  %723 = add nsw i64 %717, %722
  store i64 %723, ptr %37, align 8, !tbaa !9
  %724 = load ptr, ptr %24, align 8, !tbaa !5
  %725 = load i64, ptr %37, align 8, !tbaa !9
  %726 = getelementptr inbounds %struct.complex, ptr %724, i64 %725
  %727 = getelementptr inbounds %struct.complex, ptr %726, i32 0, i32 0
  store float -1.000000e+10, ptr %727, align 4, !tbaa !12
  %728 = load ptr, ptr %24, align 8, !tbaa !5
  %729 = load i64, ptr %37, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.complex, ptr %728, i64 %729
  %731 = getelementptr inbounds %struct.complex, ptr %730, i32 0, i32 1
  store float 1.000000e+10, ptr %731, align 4, !tbaa !15
  br label %732

732:                                              ; preds = %716
  %733 = load i64, ptr %42, align 8, !tbaa !9
  %734 = add nsw i64 %733, 1
  store i64 %734, ptr %42, align 8, !tbaa !9
  br label %712, !llvm.loop !29

735:                                              ; preds = %712
  %736 = load i64, ptr %51, align 8, !tbaa !9
  %737 = icmp ne i64 %736, 0
  br i1 %737, label %738, label %768

738:                                              ; preds = %735
  %739 = load i64, ptr %43, align 8, !tbaa !9
  %740 = load i64, ptr %43, align 8, !tbaa !9
  %741 = sub nsw i64 %740, 1
  %742 = load ptr, ptr %25, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = mul nsw i64 %741, %743
  %745 = add nsw i64 %739, %744
  store i64 %745, ptr %47, align 8, !tbaa !9
  %746 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %746, ptr %36, align 8, !tbaa !9
  %747 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %747, ptr %37, align 8, !tbaa !9
  %748 = load ptr, ptr %24, align 8, !tbaa !5
  %749 = load i64, ptr %37, align 8, !tbaa !9
  %750 = getelementptr inbounds %struct.complex, ptr %748, i64 %749
  %751 = getelementptr inbounds %struct.complex, ptr %750, i32 0, i32 0
  %752 = load float, ptr %751, align 4, !tbaa !12
  store float %752, ptr %39, align 4, !tbaa !18
  %753 = load float, ptr %39, align 4, !tbaa !18
  %754 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %753, ptr %754, align 4, !tbaa !12
  %755 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float -1.000000e+10, ptr %755, align 4, !tbaa !15
  %756 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %757 = load float, ptr %756, align 4, !tbaa !12
  %758 = load ptr, ptr %24, align 8, !tbaa !5
  %759 = load i64, ptr %36, align 8, !tbaa !9
  %760 = getelementptr inbounds %struct.complex, ptr %758, i64 %759
  %761 = getelementptr inbounds %struct.complex, ptr %760, i32 0, i32 0
  store float %757, ptr %761, align 4, !tbaa !12
  %762 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %763 = load float, ptr %762, align 4, !tbaa !15
  %764 = load ptr, ptr %24, align 8, !tbaa !5
  %765 = load i64, ptr %36, align 8, !tbaa !9
  %766 = getelementptr inbounds %struct.complex, ptr %764, i64 %765
  %767 = getelementptr inbounds %struct.complex, ptr %766, i32 0, i32 1
  store float %763, ptr %767, align 4, !tbaa !15
  br label %768

768:                                              ; preds = %738, %735
  br label %769

769:                                              ; preds = %768
  %770 = load i64, ptr %43, align 8, !tbaa !9
  %771 = add nsw i64 %770, 1
  store i64 %771, ptr %43, align 8, !tbaa !9
  br label %613, !llvm.loop !30

772:                                              ; preds = %613
  br label %1091

773:                                              ; preds = %606
  %774 = load ptr, ptr %17, align 8, !tbaa !5
  %775 = call i64 @s_cmp(ptr noundef %774, ptr noundef @.str.16, i64 noundef 2, i64 noundef 2)
  %776 = icmp eq i64 %775, 0
  br i1 %776, label %781, label %777

777:                                              ; preds = %773
  %778 = load ptr, ptr %17, align 8, !tbaa !5
  %779 = call i64 @s_cmp(ptr noundef %778, ptr noundef @.str.17, i64 noundef 2, i64 noundef 2)
  %780 = icmp eq i64 %779, 0
  br i1 %780, label %781, label %979

781:                                              ; preds = %777, %773
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load i64, ptr %782, align 8, !tbaa !9
  store i64 %783, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %784

784:                                              ; preds = %975, %781
  %785 = load i64, ptr %43, align 8, !tbaa !9
  %786 = load i64, ptr %35, align 8, !tbaa !9
  %787 = icmp sle i64 %785, %786
  br i1 %787, label %788, label %978

788:                                              ; preds = %784
  %789 = load i64, ptr %57, align 8, !tbaa !9
  %790 = icmp ne i64 %789, 0
  br i1 %790, label %791, label %819

791:                                              ; preds = %788
  %792 = load ptr, ptr %26, align 8, !tbaa !5
  %793 = load i64, ptr %792, align 8, !tbaa !9
  %794 = add nsw i64 %793, 1
  store i64 %794, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  %795 = load ptr, ptr %26, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = add nsw i64 %796, 2
  %798 = load i64, ptr %43, align 8, !tbaa !9
  %799 = sub nsw i64 %797, %798
  store i64 %799, ptr %37, align 8, !tbaa !9
  %800 = load i64, ptr %36, align 8, !tbaa !9
  %801 = load i64, ptr %37, align 8, !tbaa !9
  %802 = icmp sge i64 %800, %801
  br i1 %802, label %803, label %805

803:                                              ; preds = %791
  %804 = load i64, ptr %36, align 8, !tbaa !9
  br label %807

805:                                              ; preds = %791
  %806 = load i64, ptr %37, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %805, %803
  %808 = phi i64 [ %804, %803 ], [ %806, %805 ]
  store i64 %808, ptr %52, align 8, !tbaa !9
  %809 = load i64, ptr %55, align 8, !tbaa !9
  %810 = icmp ne i64 %809, 0
  br i1 %810, label %811, label %814

811:                                              ; preds = %807
  %812 = load ptr, ptr %26, align 8, !tbaa !5
  %813 = load i64, ptr %812, align 8, !tbaa !9
  store i64 %813, ptr %53, align 8, !tbaa !9
  br label %818

814:                                              ; preds = %807
  %815 = load ptr, ptr %26, align 8, !tbaa !5
  %816 = load i64, ptr %815, align 8, !tbaa !9
  %817 = add nsw i64 %816, 1
  store i64 %817, ptr %53, align 8, !tbaa !9
  br label %818

818:                                              ; preds = %814, %811
  br label %842

819:                                              ; preds = %788
  store i64 1, ptr %48, align 8, !tbaa !9
  %820 = load i64, ptr %55, align 8, !tbaa !9
  %821 = icmp ne i64 %820, 0
  br i1 %821, label %822, label %823

822:                                              ; preds = %819
  store i64 2, ptr %52, align 8, !tbaa !9
  br label %824

823:                                              ; preds = %819
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %824

824:                                              ; preds = %823, %822
  %825 = load ptr, ptr %26, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = add nsw i64 %826, 1
  store i64 %827, ptr %36, align 8, !tbaa !9
  %828 = load ptr, ptr %20, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = add nsw i64 %829, 1
  %831 = load i64, ptr %43, align 8, !tbaa !9
  %832 = sub nsw i64 %830, %831
  store i64 %832, ptr %37, align 8, !tbaa !9
  %833 = load i64, ptr %36, align 8, !tbaa !9
  %834 = load i64, ptr %37, align 8, !tbaa !9
  %835 = icmp sle i64 %833, %834
  br i1 %835, label %836, label %838

836:                                              ; preds = %824
  %837 = load i64, ptr %36, align 8, !tbaa !9
  br label %840

838:                                              ; preds = %824
  %839 = load i64, ptr %37, align 8, !tbaa !9
  br label %840

840:                                              ; preds = %838, %836
  %841 = phi i64 [ %837, %836 ], [ %839, %838 ]
  store i64 %841, ptr %53, align 8, !tbaa !9
  br label %842

842:                                              ; preds = %840, %818
  %843 = load i64, ptr %52, align 8, !tbaa !9
  %844 = sub nsw i64 %843, 1
  store i64 %844, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %845

845:                                              ; preds = %865, %842
  %846 = load i64, ptr %42, align 8, !tbaa !9
  %847 = load i64, ptr %36, align 8, !tbaa !9
  %848 = icmp sle i64 %846, %847
  br i1 %848, label %849, label %868

849:                                              ; preds = %845
  %850 = load i64, ptr %42, align 8, !tbaa !9
  %851 = load i64, ptr %43, align 8, !tbaa !9
  %852 = sub nsw i64 %851, 1
  %853 = load ptr, ptr %25, align 8, !tbaa !5
  %854 = load i64, ptr %853, align 8, !tbaa !9
  %855 = mul nsw i64 %852, %854
  %856 = add nsw i64 %850, %855
  store i64 %856, ptr %37, align 8, !tbaa !9
  %857 = load ptr, ptr %24, align 8, !tbaa !5
  %858 = load i64, ptr %37, align 8, !tbaa !9
  %859 = getelementptr inbounds %struct.complex, ptr %857, i64 %858
  %860 = getelementptr inbounds %struct.complex, ptr %859, i32 0, i32 0
  store float -1.000000e+10, ptr %860, align 4, !tbaa !12
  %861 = load ptr, ptr %24, align 8, !tbaa !5
  %862 = load i64, ptr %37, align 8, !tbaa !9
  %863 = getelementptr inbounds %struct.complex, ptr %861, i64 %862
  %864 = getelementptr inbounds %struct.complex, ptr %863, i32 0, i32 1
  store float 1.000000e+10, ptr %864, align 4, !tbaa !15
  br label %865

865:                                              ; preds = %849
  %866 = load i64, ptr %42, align 8, !tbaa !9
  %867 = add nsw i64 %866, 1
  store i64 %867, ptr %42, align 8, !tbaa !9
  br label %845, !llvm.loop !31

868:                                              ; preds = %845
  %869 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %869, ptr %36, align 8, !tbaa !9
  %870 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %870, ptr %42, align 8, !tbaa !9
  br label %871

871:                                              ; preds = %910, %868
  %872 = load i64, ptr %42, align 8, !tbaa !9
  %873 = load i64, ptr %36, align 8, !tbaa !9
  %874 = icmp sle i64 %872, %873
  br i1 %874, label %875, label %913

875:                                              ; preds = %871
  %876 = load i64, ptr %42, align 8, !tbaa !9
  %877 = load i64, ptr %43, align 8, !tbaa !9
  %878 = sub nsw i64 %877, 1
  %879 = load ptr, ptr %25, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = mul nsw i64 %878, %880
  %882 = add nsw i64 %876, %881
  store i64 %882, ptr %37, align 8, !tbaa !9
  %883 = load i64, ptr %42, align 8, !tbaa !9
  %884 = load i64, ptr %43, align 8, !tbaa !9
  %885 = add nsw i64 %883, %884
  %886 = load i64, ptr %48, align 8, !tbaa !9
  %887 = sub nsw i64 %885, %886
  %888 = load i64, ptr %43, align 8, !tbaa !9
  %889 = load i64, ptr %33, align 8, !tbaa !9
  %890 = mul nsw i64 %888, %889
  %891 = add nsw i64 %887, %890
  store i64 %891, ptr %38, align 8, !tbaa !9
  %892 = load ptr, ptr %22, align 8, !tbaa !5
  %893 = load i64, ptr %38, align 8, !tbaa !9
  %894 = getelementptr inbounds %struct.complex, ptr %892, i64 %893
  %895 = getelementptr inbounds %struct.complex, ptr %894, i32 0, i32 0
  %896 = load float, ptr %895, align 4, !tbaa !12
  %897 = load ptr, ptr %24, align 8, !tbaa !5
  %898 = load i64, ptr %37, align 8, !tbaa !9
  %899 = getelementptr inbounds %struct.complex, ptr %897, i64 %898
  %900 = getelementptr inbounds %struct.complex, ptr %899, i32 0, i32 0
  store float %896, ptr %900, align 4, !tbaa !12
  %901 = load ptr, ptr %22, align 8, !tbaa !5
  %902 = load i64, ptr %38, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.complex, ptr %901, i64 %902
  %904 = getelementptr inbounds %struct.complex, ptr %903, i32 0, i32 1
  %905 = load float, ptr %904, align 4, !tbaa !15
  %906 = load ptr, ptr %24, align 8, !tbaa !5
  %907 = load i64, ptr %37, align 8, !tbaa !9
  %908 = getelementptr inbounds %struct.complex, ptr %906, i64 %907
  %909 = getelementptr inbounds %struct.complex, ptr %908, i32 0, i32 1
  store float %905, ptr %909, align 4, !tbaa !15
  br label %910

910:                                              ; preds = %875
  %911 = load i64, ptr %42, align 8, !tbaa !9
  %912 = add nsw i64 %911, 1
  store i64 %912, ptr %42, align 8, !tbaa !9
  br label %871, !llvm.loop !32

913:                                              ; preds = %871
  %914 = load ptr, ptr %25, align 8, !tbaa !5
  %915 = load i64, ptr %914, align 8, !tbaa !9
  store i64 %915, ptr %36, align 8, !tbaa !9
  %916 = load i64, ptr %53, align 8, !tbaa !9
  %917 = add nsw i64 %916, 1
  store i64 %917, ptr %42, align 8, !tbaa !9
  br label %918

918:                                              ; preds = %938, %913
  %919 = load i64, ptr %42, align 8, !tbaa !9
  %920 = load i64, ptr %36, align 8, !tbaa !9
  %921 = icmp sle i64 %919, %920
  br i1 %921, label %922, label %941

922:                                              ; preds = %918
  %923 = load i64, ptr %42, align 8, !tbaa !9
  %924 = load i64, ptr %43, align 8, !tbaa !9
  %925 = sub nsw i64 %924, 1
  %926 = load ptr, ptr %25, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  %928 = mul nsw i64 %925, %927
  %929 = add nsw i64 %923, %928
  store i64 %929, ptr %37, align 8, !tbaa !9
  %930 = load ptr, ptr %24, align 8, !tbaa !5
  %931 = load i64, ptr %37, align 8, !tbaa !9
  %932 = getelementptr inbounds %struct.complex, ptr %930, i64 %931
  %933 = getelementptr inbounds %struct.complex, ptr %932, i32 0, i32 0
  store float -1.000000e+10, ptr %933, align 4, !tbaa !12
  %934 = load ptr, ptr %24, align 8, !tbaa !5
  %935 = load i64, ptr %37, align 8, !tbaa !9
  %936 = getelementptr inbounds %struct.complex, ptr %934, i64 %935
  %937 = getelementptr inbounds %struct.complex, ptr %936, i32 0, i32 1
  store float 1.000000e+10, ptr %937, align 4, !tbaa !15
  br label %938

938:                                              ; preds = %922
  %939 = load i64, ptr %42, align 8, !tbaa !9
  %940 = add nsw i64 %939, 1
  store i64 %940, ptr %42, align 8, !tbaa !9
  br label %918, !llvm.loop !33

941:                                              ; preds = %918
  %942 = load i64, ptr %51, align 8, !tbaa !9
  %943 = icmp ne i64 %942, 0
  br i1 %943, label %944, label %974

944:                                              ; preds = %941
  %945 = load i64, ptr %48, align 8, !tbaa !9
  %946 = load i64, ptr %43, align 8, !tbaa !9
  %947 = sub nsw i64 %946, 1
  %948 = load ptr, ptr %25, align 8, !tbaa !5
  %949 = load i64, ptr %948, align 8, !tbaa !9
  %950 = mul nsw i64 %947, %949
  %951 = add nsw i64 %945, %950
  store i64 %951, ptr %47, align 8, !tbaa !9
  %952 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %952, ptr %36, align 8, !tbaa !9
  %953 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %953, ptr %37, align 8, !tbaa !9
  %954 = load ptr, ptr %24, align 8, !tbaa !5
  %955 = load i64, ptr %37, align 8, !tbaa !9
  %956 = getelementptr inbounds %struct.complex, ptr %954, i64 %955
  %957 = getelementptr inbounds %struct.complex, ptr %956, i32 0, i32 0
  %958 = load float, ptr %957, align 4, !tbaa !12
  store float %958, ptr %39, align 4, !tbaa !18
  %959 = load float, ptr %39, align 4, !tbaa !18
  %960 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %959, ptr %960, align 4, !tbaa !12
  %961 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float -1.000000e+10, ptr %961, align 4, !tbaa !15
  %962 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %963 = load float, ptr %962, align 4, !tbaa !12
  %964 = load ptr, ptr %24, align 8, !tbaa !5
  %965 = load i64, ptr %36, align 8, !tbaa !9
  %966 = getelementptr inbounds %struct.complex, ptr %964, i64 %965
  %967 = getelementptr inbounds %struct.complex, ptr %966, i32 0, i32 0
  store float %963, ptr %967, align 4, !tbaa !12
  %968 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %969 = load float, ptr %968, align 4, !tbaa !15
  %970 = load ptr, ptr %24, align 8, !tbaa !5
  %971 = load i64, ptr %36, align 8, !tbaa !9
  %972 = getelementptr inbounds %struct.complex, ptr %970, i64 %971
  %973 = getelementptr inbounds %struct.complex, ptr %972, i32 0, i32 1
  store float %969, ptr %973, align 4, !tbaa !15
  br label %974

974:                                              ; preds = %944, %941
  br label %975

975:                                              ; preds = %974
  %976 = load i64, ptr %43, align 8, !tbaa !9
  %977 = add nsw i64 %976, 1
  store i64 %977, ptr %43, align 8, !tbaa !9
  br label %784, !llvm.loop !34

978:                                              ; preds = %784
  br label %1090

979:                                              ; preds = %777
  %980 = load ptr, ptr %17, align 8, !tbaa !5
  %981 = call i64 @s_cmp(ptr noundef %980, ptr noundef @.str.18, i64 noundef 2, i64 noundef 2)
  %982 = icmp eq i64 %981, 0
  br i1 %982, label %987, label %983

983:                                              ; preds = %979
  %984 = load ptr, ptr %17, align 8, !tbaa !5
  %985 = call i64 @s_cmp(ptr noundef %984, ptr noundef @.str.19, i64 noundef 2, i64 noundef 2)
  %986 = icmp eq i64 %985, 0
  br i1 %986, label %987, label %1089

987:                                              ; preds = %983, %979
  store i64 0, ptr %54, align 8, !tbaa !9
  %988 = load ptr, ptr %21, align 8, !tbaa !5
  %989 = load i64, ptr %988, align 8, !tbaa !9
  store i64 %989, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %990

990:                                              ; preds = %1085, %987
  %991 = load i64, ptr %43, align 8, !tbaa !9
  %992 = load i64, ptr %35, align 8, !tbaa !9
  %993 = icmp sle i64 %991, %992
  br i1 %993, label %994, label %1088

994:                                              ; preds = %990
  %995 = load i64, ptr %57, align 8, !tbaa !9
  %996 = icmp ne i64 %995, 0
  br i1 %996, label %997, label %999

997:                                              ; preds = %994
  store i64 1, ptr %52, align 8, !tbaa !9
  %998 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %998, ptr %53, align 8, !tbaa !9
  br label %1003

999:                                              ; preds = %994
  %1000 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %1000, ptr %52, align 8, !tbaa !9
  %1001 = load ptr, ptr %21, align 8, !tbaa !5
  %1002 = load i64, ptr %1001, align 8, !tbaa !9
  store i64 %1002, ptr %53, align 8, !tbaa !9
  br label %1003

1003:                                             ; preds = %999, %997
  %1004 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1004, ptr %36, align 8, !tbaa !9
  %1005 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1005, ptr %42, align 8, !tbaa !9
  br label %1006

1006:                                             ; preds = %1081, %1003
  %1007 = load i64, ptr %42, align 8, !tbaa !9
  %1008 = load i64, ptr %36, align 8, !tbaa !9
  %1009 = icmp sle i64 %1007, %1008
  br i1 %1009, label %1010, label %1084

1010:                                             ; preds = %1006
  %1011 = load i64, ptr %54, align 8, !tbaa !9
  %1012 = add nsw i64 %1011, 1
  store i64 %1012, ptr %54, align 8, !tbaa !9
  %1013 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1013, ptr %37, align 8, !tbaa !9
  %1014 = load i64, ptr %42, align 8, !tbaa !9
  %1015 = load i64, ptr %43, align 8, !tbaa !9
  %1016 = load i64, ptr %33, align 8, !tbaa !9
  %1017 = mul nsw i64 %1015, %1016
  %1018 = add nsw i64 %1014, %1017
  store i64 %1018, ptr %38, align 8, !tbaa !9
  %1019 = load ptr, ptr %22, align 8, !tbaa !5
  %1020 = load i64, ptr %38, align 8, !tbaa !9
  %1021 = getelementptr inbounds %struct.complex, ptr %1019, i64 %1020
  %1022 = getelementptr inbounds %struct.complex, ptr %1021, i32 0, i32 0
  %1023 = load float, ptr %1022, align 4, !tbaa !12
  %1024 = load ptr, ptr %24, align 8, !tbaa !5
  %1025 = load i64, ptr %37, align 8, !tbaa !9
  %1026 = getelementptr inbounds %struct.complex, ptr %1024, i64 %1025
  %1027 = getelementptr inbounds %struct.complex, ptr %1026, i32 0, i32 0
  store float %1023, ptr %1027, align 4, !tbaa !12
  %1028 = load ptr, ptr %22, align 8, !tbaa !5
  %1029 = load i64, ptr %38, align 8, !tbaa !9
  %1030 = getelementptr inbounds %struct.complex, ptr %1028, i64 %1029
  %1031 = getelementptr inbounds %struct.complex, ptr %1030, i32 0, i32 1
  %1032 = load float, ptr %1031, align 4, !tbaa !15
  %1033 = load ptr, ptr %24, align 8, !tbaa !5
  %1034 = load i64, ptr %37, align 8, !tbaa !9
  %1035 = getelementptr inbounds %struct.complex, ptr %1033, i64 %1034
  %1036 = getelementptr inbounds %struct.complex, ptr %1035, i32 0, i32 1
  store float %1032, ptr %1036, align 4, !tbaa !15
  %1037 = load i64, ptr %42, align 8, !tbaa !9
  %1038 = load i64, ptr %43, align 8, !tbaa !9
  %1039 = icmp eq i64 %1037, %1038
  br i1 %1039, label %1040, label %1080

1040:                                             ; preds = %1010
  %1041 = load i64, ptr %55, align 8, !tbaa !9
  %1042 = icmp ne i64 %1041, 0
  br i1 %1042, label %1043, label %1053

1043:                                             ; preds = %1040
  %1044 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1044, ptr %37, align 8, !tbaa !9
  %1045 = load ptr, ptr %24, align 8, !tbaa !5
  %1046 = load i64, ptr %37, align 8, !tbaa !9
  %1047 = getelementptr inbounds %struct.complex, ptr %1045, i64 %1046
  %1048 = getelementptr inbounds %struct.complex, ptr %1047, i32 0, i32 0
  store float -1.000000e+10, ptr %1048, align 4, !tbaa !12
  %1049 = load ptr, ptr %24, align 8, !tbaa !5
  %1050 = load i64, ptr %37, align 8, !tbaa !9
  %1051 = getelementptr inbounds %struct.complex, ptr %1049, i64 %1050
  %1052 = getelementptr inbounds %struct.complex, ptr %1051, i32 0, i32 1
  store float 1.000000e+10, ptr %1052, align 4, !tbaa !15
  br label %1053

1053:                                             ; preds = %1043, %1040
  %1054 = load i64, ptr %51, align 8, !tbaa !9
  %1055 = icmp ne i64 %1054, 0
  br i1 %1055, label %1056, label %1079

1056:                                             ; preds = %1053
  %1057 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1057, ptr %37, align 8, !tbaa !9
  %1058 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1058, ptr %38, align 8, !tbaa !9
  %1059 = load ptr, ptr %24, align 8, !tbaa !5
  %1060 = load i64, ptr %38, align 8, !tbaa !9
  %1061 = getelementptr inbounds %struct.complex, ptr %1059, i64 %1060
  %1062 = getelementptr inbounds %struct.complex, ptr %1061, i32 0, i32 0
  %1063 = load float, ptr %1062, align 4, !tbaa !12
  store float %1063, ptr %39, align 4, !tbaa !18
  %1064 = load float, ptr %39, align 4, !tbaa !18
  %1065 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  store float %1064, ptr %1065, align 4, !tbaa !12
  %1066 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  store float -1.000000e+10, ptr %1066, align 4, !tbaa !15
  %1067 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 0
  %1068 = load float, ptr %1067, align 4, !tbaa !12
  %1069 = load ptr, ptr %24, align 8, !tbaa !5
  %1070 = load i64, ptr %37, align 8, !tbaa !9
  %1071 = getelementptr inbounds %struct.complex, ptr %1069, i64 %1070
  %1072 = getelementptr inbounds %struct.complex, ptr %1071, i32 0, i32 0
  store float %1068, ptr %1072, align 4, !tbaa !12
  %1073 = getelementptr inbounds %struct.complex, ptr %40, i32 0, i32 1
  %1074 = load float, ptr %1073, align 4, !tbaa !15
  %1075 = load ptr, ptr %24, align 8, !tbaa !5
  %1076 = load i64, ptr %37, align 8, !tbaa !9
  %1077 = getelementptr inbounds %struct.complex, ptr %1075, i64 %1076
  %1078 = getelementptr inbounds %struct.complex, ptr %1077, i32 0, i32 1
  store float %1074, ptr %1078, align 4, !tbaa !15
  br label %1079

1079:                                             ; preds = %1056, %1053
  br label %1080

1080:                                             ; preds = %1079, %1010
  br label %1081

1081:                                             ; preds = %1080
  %1082 = load i64, ptr %42, align 8, !tbaa !9
  %1083 = add nsw i64 %1082, 1
  store i64 %1083, ptr %42, align 8, !tbaa !9
  br label %1006, !llvm.loop !35

1084:                                             ; preds = %1006
  br label %1085

1085:                                             ; preds = %1084
  %1086 = load i64, ptr %43, align 8, !tbaa !9
  %1087 = add nsw i64 %1086, 1
  store i64 %1087, ptr %43, align 8, !tbaa !9
  br label %990, !llvm.loop !36

1088:                                             ; preds = %990
  br label %1089

1089:                                             ; preds = %1088, %983
  br label %1090

1090:                                             ; preds = %1089, %978
  br label %1091

1091:                                             ; preds = %1090, %772
  br label %1092

1092:                                             ; preds = %1091, %601
  br label %1093

1093:                                             ; preds = %1092, %460
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  ret i32 0
}

declare void @r_cnjg(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @cbeg_(ptr noundef, ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #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 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!13, !14, i64 4}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!14, !14, i64 0}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}


; 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.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1

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

declare i64 @s_cmp(ptr noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cmake_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef writeonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr noundef %11, ptr nocapture noundef readonly %12, i64 noundef %13, i64 noundef %14, i64 noundef %15) local_unnamed_addr #2 {
  %17 = alloca %struct.complex, align 8
  %18 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  %19 = load i64, ptr %6, align 8, !tbaa !5
  %20 = xor i64 %19, -1
  %21 = getelementptr inbounds %struct.complex, ptr %5, i64 %20
  %22 = getelementptr inbounds i8, ptr %7, i64 -8
  %23 = load i8, ptr %0, align 1, !tbaa !9
  %24 = icmp eq i8 %23, 71
  %25 = icmp eq i8 %23, 72
  %26 = icmp ne i8 %23, 84
  switch i8 %23, label %30 [
    i8 84, label %27
    i8 72, label %27
  ]

27:                                               ; preds = %16, %16
  %28 = load i8, ptr %1, align 1, !tbaa !9
  %29 = icmp eq i8 %28, 85
  br label %30

30:                                               ; preds = %16, %27
  %31 = phi i1 [ %29, %27 ], [ false, %16 ]
  switch i8 %23, label %35 [
    i8 84, label %32
    i8 72, label %32
  ]

32:                                               ; preds = %30, %30
  %33 = load i8, ptr %1, align 1, !tbaa !9
  %34 = icmp eq i8 %33, 76
  br label %35

35:                                               ; preds = %30, %32
  %36 = phi i1 [ %34, %32 ], [ false, %30 ]
  br i1 %26, label %40, label %37

37:                                               ; preds = %35
  %38 = load i8, ptr %2, align 1, !tbaa !9
  %39 = icmp eq i8 %38, 85
  br label %40

40:                                               ; preds = %37, %35
  %41 = phi i1 [ false, %35 ], [ %39, %37 ]
  %.fr = freeze i1 %41
  %42 = load i64, ptr %4, align 8, !tbaa !5
  %.not474 = icmp slt i64 %42, 1
  br i1 %.not474, label %._crit_edge479, label %.lr.ph478

.lr.ph478:                                        ; preds = %40
  %43 = getelementptr inbounds i8, ptr %17, i64 4
  %44 = add i64 %19, 1
  br label %45

45:                                               ; preds = %.lr.ph478, %102
  %.0418475 = phi i64 [ 1, %.lr.ph478 ], [ %103, %102 ]
  %46 = load i64, ptr %3, align 8, !tbaa !5
  %.not448468 = icmp slt i64 %46, 1
  br i1 %.not448468, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %45
  %47 = mul nsw i64 %.0418475, %19
  %invariant.gep = getelementptr %struct.complex, ptr %21, i64 %47
  %48 = getelementptr %struct.complex, ptr %21, i64 %.0418475
  br i1 %25, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %67
  %.0423469.us = phi i64 [ %68, %67 ], [ 1, %.lr.ph ]
  %.not449.us = icmp ule i64 %.0423469.us, %.0418475
  %or.cond.not.us = and i1 %31, %.not449.us
  %or.cond.us = select i1 %24, i1 true, i1 %or.cond.not.us
  %.not450.us = icmp uge i64 %.0423469.us, %.0418475
  %or.cond458.not.us = and i1 %36, %.not450.us
  %or.cond462.us = select i1 %or.cond.us, i1 true, i1 %or.cond458.not.us
  br i1 %or.cond462.us, label %49, label %67

49:                                               ; preds = %.lr.ph.split.us
  %.not451.us = icmp ugt i64 %.0423469.us, %.0418475
  br i1 %.not451.us, label %53, label %50

50:                                               ; preds = %49
  %51 = sub nsw i64 %.0418475, %.0423469.us
  %52 = load i64, ptr %10, align 8, !tbaa !5
  %.not452.us = icmp sgt i64 %51, %52
  br i1 %.not452.us, label %53, label %57

53:                                               ; preds = %50, %49
  %.not453.us = icmp ult i64 %.0423469.us, %.0418475
  br i1 %.not453.us, label %61, label %54

54:                                               ; preds = %53
  %55 = sub nsw i64 %.0423469.us, %.0418475
  %56 = load i64, ptr %9, align 8, !tbaa !5
  %.not454.us = icmp sgt i64 %55, %56
  br i1 %.not454.us, label %61, label %57

57:                                               ; preds = %54, %50
  call void @cbeg_(ptr noundef nonnull %18, ptr noundef %11)
  %58 = load <2 x float>, ptr %18, align 8, !tbaa !10
  %59 = load <2 x float>, ptr %12, align 4, !tbaa !10
  %60 = fadd <2 x float> %58, %59
  store <2 x float> %60, ptr %17, align 8, !tbaa !10
  br label %61

61:                                               ; preds = %53, %54, %57
  %62 = phi <2 x float> [ %60, %57 ], [ zeroinitializer, %54 ], [ zeroinitializer, %53 ]
  %gep471.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0423469.us
  store <2 x float> %62, ptr %gep471.us, align 4, !tbaa !10
  %.not455.us = icmp eq i64 %.0423469.us, %.0418475
  br i1 %.not455.us, label %67, label %63

63:                                               ; preds = %61
  %64 = mul nsw i64 %.0423469.us, %19
  %gep473.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0423469.us
  call void @r_cnjg(ptr noundef nonnull %17, ptr noundef %gep473.us) #4
  %65 = getelementptr %struct.complex, ptr %48, i64 %64
  %66 = load <2 x float>, ptr %17, align 8, !tbaa !10
  store <2 x float> %66, ptr %65, align 4, !tbaa !10
  br label %67

67:                                               ; preds = %63, %61, %.lr.ph.split.us
  %68 = add nuw i64 %.0423469.us, 1
  %exitcond631.not = icmp eq i64 %.0423469.us, %46
  br i1 %exitcond631.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !12

.lr.ph.split:                                     ; preds = %.lr.ph, %86
  %.0423469 = phi i64 [ %87, %86 ], [ 1, %.lr.ph ]
  %.not449 = icmp ule i64 %.0423469, %.0418475
  %or.cond.not = and i1 %31, %.not449
  %or.cond = select i1 %24, i1 true, i1 %or.cond.not
  %.not450 = icmp uge i64 %.0423469, %.0418475
  %or.cond458.not = and i1 %36, %.not450
  %or.cond462 = select i1 %or.cond, i1 true, i1 %or.cond458.not
  br i1 %or.cond462, label %69, label %86

69:                                               ; preds = %.lr.ph.split
  %.not451 = icmp ugt i64 %.0423469, %.0418475
  br i1 %.not451, label %73, label %70

70:                                               ; preds = %69
  %71 = sub nsw i64 %.0418475, %.0423469
  %72 = load i64, ptr %10, align 8, !tbaa !5
  %.not452 = icmp sgt i64 %71, %72
  br i1 %.not452, label %73, label %77

73:                                               ; preds = %70, %69
  %.not453 = icmp ult i64 %.0423469, %.0418475
  br i1 %.not453, label %81, label %74

74:                                               ; preds = %73
  %75 = sub nsw i64 %.0423469, %.0418475
  %76 = load i64, ptr %9, align 8, !tbaa !5
  %.not454 = icmp sgt i64 %75, %76
  br i1 %.not454, label %81, label %77

77:                                               ; preds = %74, %70
  call void @cbeg_(ptr noundef nonnull %18, ptr noundef %11)
  %78 = load <2 x float>, ptr %18, align 8, !tbaa !10
  %79 = load <2 x float>, ptr %12, align 4, !tbaa !10
  %80 = fadd <2 x float> %78, %79
  store <2 x float> %80, ptr %17, align 8, !tbaa !10
  br label %81

81:                                               ; preds = %73, %74, %77
  %82 = phi <2 x float> [ %80, %77 ], [ zeroinitializer, %74 ], [ zeroinitializer, %73 ]
  %gep471 = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0423469
  store <2 x float> %82, ptr %gep471, align 4, !tbaa !10
  %.not455 = icmp eq i64 %.0423469, %.0418475
  %brmerge = or i1 %.not455, %26
  br i1 %brmerge, label %86, label %83

83:                                               ; preds = %81
  %84 = mul nsw i64 %.0423469, %19
  %85 = getelementptr %struct.complex, ptr %48, i64 %84
  store <2 x float> zeroinitializer, ptr %85, align 4, !tbaa !10
  br label %86

86:                                               ; preds = %81, %.lr.ph.split, %83
  %87 = add nuw i64 %.0423469, 1
  %exitcond.not = icmp eq i64 %.0423469, %46
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !12

._crit_edge:                                      ; preds = %86, %67, %45
  br i1 %25, label %.thread, label %92

.thread:                                          ; preds = %._crit_edge
  %88 = mul i64 %.0418475, %44
  %89 = getelementptr inbounds %struct.complex, ptr %21, i64 %88
  %90 = load float, ptr %89, align 4, !tbaa !14
  store float %90, ptr %17, align 8, !tbaa !14
  store float 0.000000e+00, ptr %43, align 4, !tbaa !16
  %91 = getelementptr inbounds i8, ptr %89, i64 4
  store float 0.000000e+00, ptr %91, align 4, !tbaa !16
  br label %98

92:                                               ; preds = %._crit_edge
  br i1 %26, label %98, label %93

93:                                               ; preds = %92
  %94 = mul i64 %.0418475, %44
  %95 = getelementptr inbounds %struct.complex, ptr %21, i64 %94
  %96 = load <2 x float>, ptr %95, align 4, !tbaa !10
  %97 = fadd <2 x float> %96, <float 1.000000e+00, float 0.000000e+00>
  store <2 x float> %97, ptr %17, align 8, !tbaa !10
  store <2 x float> %97, ptr %95, align 4, !tbaa !10
  br label %98

98:                                               ; preds = %.thread, %93, %92
  br i1 %.fr, label %99, label %102

99:                                               ; preds = %98
  %100 = mul i64 %.0418475, %44
  %101 = getelementptr inbounds %struct.complex, ptr %21, i64 %100
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %101, align 4, !tbaa !10
  br label %102

102:                                              ; preds = %98, %99
  %103 = add nuw i64 %.0418475, 1
  %exitcond632.not = icmp eq i64 %.0418475, %42
  br i1 %exitcond632.not, label %._crit_edge479, label %45, !llvm.loop !17

._crit_edge479:                                   ; preds = %102, %40
  %104 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.8, i64 noundef 2, i64 noundef 2) #4
  %105 = icmp eq i64 %104, 0
  br i1 %105, label %106, label %160

106:                                              ; preds = %._crit_edge479
  %107 = load i64, ptr %4, align 8, !tbaa !5
  %.not445613 = icmp slt i64 %107, 1
  br i1 %.not445613, label %.loopexit, label %.lr.ph616

.lr.ph616:                                        ; preds = %106
  %108 = load i64, ptr %3, align 8, !tbaa !5
  %.not446597 = icmp slt i64 %108, 1
  %109 = load i64, ptr %8, align 8, !tbaa !5
  %.not447.not606 = icmp slt i64 %108, %109
  %110 = sub i64 %109, %108
  %111 = add nsw i64 %107, -1
  %112 = mul i64 %109, %111
  %113 = shl i64 %112, 3
  %114 = shl i64 %108, 3
  %115 = getelementptr i8, ptr %7, i64 %113
  %116 = getelementptr i8, ptr %115, i64 %114
  %scevgep970 = getelementptr i8, ptr %116, i64 -4
  %117 = shl i64 %109, 3
  %118 = mul i64 %19, %111
  %119 = shl i64 %118, 3
  %120 = getelementptr i8, ptr %5, i64 %119
  %121 = getelementptr i8, ptr %120, i64 %114
  %scevgep971 = getelementptr i8, ptr %121, i64 -4
  %122 = shl i64 %19, 3
  %scevgep972 = getelementptr i8, ptr %7, i64 4
  %123 = getelementptr i8, ptr %7, i64 %113
  %scevgep973 = getelementptr i8, ptr %123, i64 %114
  %scevgep974 = getelementptr i8, ptr %5, i64 4
  %124 = getelementptr i8, ptr %5, i64 %119
  %scevgep975 = getelementptr i8, ptr %124, i64 %114
  %125 = add i64 %108, 1
  %min.iters.check988 = icmp ult i64 %108, 12
  %bound0976 = icmp ugt ptr %scevgep971, %7
  %bound1977 = icmp ugt ptr %scevgep970, %5
  %found.conflict978 = and i1 %bound0976, %bound1977
  %126 = or i64 %117, %122
  %127 = icmp slt i64 %126, 0
  %128 = or i1 %found.conflict978, %127
  %bound0980 = icmp ult ptr %scevgep972, %scevgep975
  %bound1981 = icmp ult ptr %scevgep974, %scevgep973
  %found.conflict982 = and i1 %bound0980, %bound1981
  %129 = or i64 %117, %122
  %130 = icmp slt i64 %129, 0
  %131 = or i1 %found.conflict982, %130
  %conflict.rdx985 = or i1 %128, %131
  %n.vec991 = and i64 %108, 9223372036854775804
  %ind.end992 = or disjoint i64 %n.vec991, 1
  %cmp.n1006 = icmp eq i64 %108, %n.vec991
  %min.iters.check958 = icmp ult i64 %110, 4
  %n.vec961 = and i64 %110, -4
  %ind.end962 = add i64 %108, %n.vec961
  %cmp.n968 = icmp eq i64 %110, %n.vec961
  br label %132

132:                                              ; preds = %.lr.ph616, %._crit_edge610
  %.1419614 = phi i64 [ 1, %.lr.ph616 ], [ %159, %._crit_edge610 ]
  br i1 %.not446597, label %._crit_edge601, label %.lr.ph600

.lr.ph600:                                        ; preds = %132
  %133 = add nsw i64 %.1419614, -1
  %134 = mul nsw i64 %109, %133
  %135 = mul nsw i64 %.1419614, %19
  %invariant.gep602 = getelementptr %struct.complex, ptr %21, i64 %135
  %invariant.gep604 = getelementptr %struct.complex, ptr %22, i64 %134
  %brmerge1080 = select i1 %min.iters.check988, i1 true, i1 %conflict.rdx985
  br i1 %brmerge1080, label %scalar.ph987.preheader, label %vector.body994

vector.body994:                                   ; preds = %.lr.ph600, %vector.body994
  %index995 = phi i64 [ %index.next1005, %vector.body994 ], [ 0, %.lr.ph600 ]
  %offset.idx996 = or disjoint i64 %index995, 1
  %136 = or disjoint i64 %index995, 3
  %137 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %offset.idx996
  %138 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %136
  %wide.vec997 = load <4 x float>, ptr %137, align 4, !tbaa !10
  %wide.vec998 = load <4 x float>, ptr %138, align 4, !tbaa !10
  %139 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %offset.idx996
  %140 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %136
  store <4 x float> %wide.vec997, ptr %139, align 4, !tbaa !10
  store <4 x float> %wide.vec998, ptr %140, align 4, !tbaa !10
  %index.next1005 = add nuw i64 %index995, 4
  %141 = icmp eq i64 %index.next1005, %n.vec991
  br i1 %141, label %middle.block986, label %vector.body994, !llvm.loop !18

middle.block986:                                  ; preds = %vector.body994
  br i1 %cmp.n1006, label %._crit_edge601, label %scalar.ph987.preheader

scalar.ph987.preheader:                           ; preds = %.lr.ph600, %middle.block986
  %.1424598.ph = phi i64 [ 1, %.lr.ph600 ], [ %ind.end992, %middle.block986 ]
  %142 = sub i64 %125, %.1424598.ph
  %143 = sub i64 %108, %.1424598.ph
  %xtraiter1030 = and i64 %142, 3
  %lcmp.mod1031.not = icmp eq i64 %xtraiter1030, 0
  br i1 %lcmp.mod1031.not, label %scalar.ph987.prol.loopexit, label %scalar.ph987.prol

scalar.ph987.prol:                                ; preds = %scalar.ph987.preheader, %scalar.ph987.prol
  %.1424598.prol = phi i64 [ %145, %scalar.ph987.prol ], [ %.1424598.ph, %scalar.ph987.preheader ]
  %prol.iter1032 = phi i64 [ %prol.iter1032.next, %scalar.ph987.prol ], [ 0, %scalar.ph987.preheader ]
  %gep603.prol = getelementptr %struct.complex, ptr %invariant.gep602, i64 %.1424598.prol
  %gep605.prol = getelementptr %struct.complex, ptr %invariant.gep604, i64 %.1424598.prol
  %144 = load <2 x float>, ptr %gep603.prol, align 4, !tbaa !10
  store <2 x float> %144, ptr %gep605.prol, align 4, !tbaa !10
  %145 = add nuw i64 %.1424598.prol, 1
  %prol.iter1032.next = add i64 %prol.iter1032, 1
  %prol.iter1032.cmp.not = icmp eq i64 %prol.iter1032.next, %xtraiter1030
  br i1 %prol.iter1032.cmp.not, label %scalar.ph987.prol.loopexit, label %scalar.ph987.prol, !llvm.loop !21

scalar.ph987.prol.loopexit:                       ; preds = %scalar.ph987.prol, %scalar.ph987.preheader
  %.1424598.unr = phi i64 [ %.1424598.ph, %scalar.ph987.preheader ], [ %145, %scalar.ph987.prol ]
  %146 = icmp ult i64 %143, 3
  br i1 %146, label %._crit_edge601, label %scalar.ph987

scalar.ph987:                                     ; preds = %scalar.ph987.prol.loopexit, %scalar.ph987
  %.1424598 = phi i64 [ %154, %scalar.ph987 ], [ %.1424598.unr, %scalar.ph987.prol.loopexit ]
  %gep603 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %.1424598
  %gep605 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %.1424598
  %147 = load <2 x float>, ptr %gep603, align 4, !tbaa !10
  store <2 x float> %147, ptr %gep605, align 4, !tbaa !10
  %148 = add nuw i64 %.1424598, 1
  %gep603.1 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %148
  %gep605.1 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %148
  %149 = load <2 x float>, ptr %gep603.1, align 4, !tbaa !10
  store <2 x float> %149, ptr %gep605.1, align 4, !tbaa !10
  %150 = add nuw i64 %.1424598, 2
  %gep603.2 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %150
  %gep605.2 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %150
  %151 = load <2 x float>, ptr %gep603.2, align 4, !tbaa !10
  store <2 x float> %151, ptr %gep605.2, align 4, !tbaa !10
  %152 = add nuw i64 %.1424598, 3
  %gep603.3 = getelementptr %struct.complex, ptr %invariant.gep602, i64 %152
  %gep605.3 = getelementptr %struct.complex, ptr %invariant.gep604, i64 %152
  %153 = load <2 x float>, ptr %gep603.3, align 4, !tbaa !10
  store <2 x float> %153, ptr %gep605.3, align 4, !tbaa !10
  %154 = add nuw i64 %.1424598, 4
  %exitcond652.not.3 = icmp eq i64 %152, %108
  br i1 %exitcond652.not.3, label %._crit_edge601, label %scalar.ph987, !llvm.loop !23

._crit_edge601:                                   ; preds = %scalar.ph987.prol.loopexit, %scalar.ph987, %middle.block986, %132
  br i1 %.not447.not606, label %.lr.ph609, label %._crit_edge610

.lr.ph609:                                        ; preds = %._crit_edge601
  %155 = add nsw i64 %.1419614, -1
  %156 = mul nsw i64 %109, %155
  %invariant.gep611 = getelementptr %struct.complex, ptr %7, i64 %156
  br i1 %min.iters.check958, label %scalar.ph957.preheader, label %vector.ph959

vector.ph959:                                     ; preds = %.lr.ph609
  %invariant.gep1078 = getelementptr i8, ptr %invariant.gep611, i64 16
  br label %vector.body964

vector.body964:                                   ; preds = %vector.body964, %vector.ph959
  %index965 = phi i64 [ 0, %vector.ph959 ], [ %index.next967, %vector.body964 ]
  %offset.idx966 = add i64 %108, %index965
  %157 = getelementptr %struct.complex, ptr %invariant.gep611, i64 %offset.idx966
  %gep1079 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %offset.idx966
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %157, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep1079, align 4, !tbaa !10
  %index.next967 = add nuw i64 %index965, 4
  %158 = icmp eq i64 %index.next967, %n.vec961
  br i1 %158, label %middle.block956, label %vector.body964, !llvm.loop !24

middle.block956:                                  ; preds = %vector.body964
  br i1 %cmp.n968, label %._crit_edge610, label %scalar.ph957.preheader

scalar.ph957.preheader:                           ; preds = %middle.block956, %.lr.ph609
  %.2425.in607.ph = phi i64 [ %108, %.lr.ph609 ], [ %ind.end962, %middle.block956 ]
  br label %scalar.ph957

scalar.ph957:                                     ; preds = %scalar.ph957.preheader, %scalar.ph957
  %.2425.in607 = phi i64 [ %.2425, %scalar.ph957 ], [ %.2425.in607.ph, %scalar.ph957.preheader ]
  %.2425 = add nsw i64 %.2425.in607, 1
  %gep612 = getelementptr %struct.complex, ptr %invariant.gep611, i64 %.2425.in607
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep612, align 4, !tbaa !10
  %exitcond653.not = icmp eq i64 %.2425, %109
  br i1 %exitcond653.not, label %._crit_edge610, label %scalar.ph957, !llvm.loop !25

._crit_edge610:                                   ; preds = %scalar.ph957, %middle.block956, %._crit_edge601
  %159 = add nuw i64 %.1419614, 1
  %exitcond654.not = icmp eq i64 %.1419614, %107
  br i1 %exitcond654.not, label %.loopexit, label %132, !llvm.loop !26

160:                                              ; preds = %._crit_edge479
  %161 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.13, i64 noundef 2, i64 noundef 2) #4
  %162 = icmp eq i64 %161, 0
  br i1 %162, label %163, label %229

163:                                              ; preds = %160
  %164 = load i64, ptr %4, align 8, !tbaa !5
  %.not440591 = icmp slt i64 %164, 1
  br i1 %.not440591, label %.loopexit, label %.lr.ph594

.lr.ph594:                                        ; preds = %163
  %165 = load i64, ptr %10, align 8, !tbaa !5
  %166 = add i64 %165, 1
  %167 = load i64, ptr %9, align 8, !tbaa !5
  %168 = add i64 %166, %167
  %169 = load i64, ptr %3, align 8, !tbaa !5
  %170 = xor i64 %165, -1
  %invariant.gep595 = getelementptr %struct.complex, ptr %21, i64 %170
  %171 = load i64, ptr %8, align 8, !tbaa !5
  %172 = add i64 %165, %169
  %173 = add i64 %171, 1
  %174 = shl i64 %171, 3
  %175 = shl i64 %165, 3
  %176 = shl i64 %19, 3
  %177 = add i64 %176, 8
  %invariant.gep1070 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep1072 = getelementptr i8, ptr %7, i64 -4
  %invariant.gep1074 = getelementptr i8, ptr %5, i64 -8
  %invariant.gep1076 = getelementptr i8, ptr %5, i64 -4
  %178 = shl i64 %165, 3
  br label %179

179:                                              ; preds = %.lr.ph594, %._crit_edge588
  %indvar897 = phi i64 [ 0, %.lr.ph594 ], [ %indvar.next898, %._crit_edge588 ]
  %indvars.iv = phi i64 [ %172, %.lr.ph594 ], [ %indvars.iv.next, %._crit_edge588 ]
  %.2420592 = phi i64 [ 1, %.lr.ph594 ], [ %228, %._crit_edge588 ]
  %smin1026 = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 %168)
  %180 = sub i64 %165, %indvar897
  %smin921 = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 %168)
  %181 = mul i64 %174, %indvar897
  %gep1071 = getelementptr i8, ptr %invariant.gep1070, i64 %181
  %gep1073 = getelementptr i8, ptr %invariant.gep1072, i64 %181
  %smin902 = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 %168)
  %182 = shl i64 %smin902, 3
  %scevgep903 = getelementptr i8, ptr %gep1073, i64 %182
  %183 = mul i64 %177, %indvar897
  %reass.sub = sub i64 %183, %175
  %gep1075 = getelementptr i8, ptr %invariant.gep1074, i64 %reass.sub
  %reass.sub1007 = sub i64 %183, %175
  %gep1077 = getelementptr i8, ptr %invariant.gep1076, i64 %reass.sub1007
  %scevgep907 = getelementptr i8, ptr %gep1077, i64 %182
  %scevgep909 = getelementptr i8, ptr %7, i64 %181
  %scevgep910 = getelementptr i8, ptr %scevgep909, i64 %182
  %184 = sub i64 %183, %178
  %scevgep912 = getelementptr i8, ptr %5, i64 %184
  %scevgep913 = getelementptr i8, ptr %scevgep912, i64 %182
  %smin = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 %168)
  %185 = add i64 %smin, 1
  %186 = sub i64 %166, %.2420592
  %.not441562 = icmp slt i64 %186, 1
  br i1 %.not441562, label %._crit_edge566, label %.lr.ph565

.lr.ph565:                                        ; preds = %179
  %187 = add nsw i64 %.2420592, -1
  %188 = mul nsw i64 %171, %187
  %invariant.gep568 = getelementptr %struct.complex, ptr %22, i64 %188
  %min.iters.check945 = icmp ult i64 %180, 4
  br i1 %min.iters.check945, label %scalar.ph944.preheader, label %vector.ph946

vector.ph946:                                     ; preds = %.lr.ph565
  %n.vec948 = and i64 %180, -4
  %ind.end949 = or disjoint i64 %n.vec948, 1
  br label %vector.body951

vector.body951:                                   ; preds = %vector.body951, %vector.ph946
  %index952 = phi i64 [ 0, %vector.ph946 ], [ %index.next954, %vector.body951 ]
  %offset.idx953 = or disjoint i64 %index952, 1
  %189 = or disjoint i64 %index952, 3
  %190 = getelementptr %struct.complex, ptr %invariant.gep568, i64 %offset.idx953
  %191 = getelementptr %struct.complex, ptr %invariant.gep568, i64 %189
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %190, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %191, align 4, !tbaa !10
  %index.next954 = add nuw i64 %index952, 4
  %192 = icmp eq i64 %index.next954, %n.vec948
  br i1 %192, label %middle.block943, label %vector.body951, !llvm.loop !27

middle.block943:                                  ; preds = %vector.body951
  %cmp.n955 = icmp eq i64 %180, %n.vec948
  br i1 %cmp.n955, label %._crit_edge566, label %scalar.ph944.preheader

scalar.ph944.preheader:                           ; preds = %middle.block943, %.lr.ph565
  %.0417563.ph = phi i64 [ 1, %.lr.ph565 ], [ %ind.end949, %middle.block943 ]
  br label %scalar.ph944

scalar.ph944:                                     ; preds = %scalar.ph944.preheader, %scalar.ph944
  %.0417563 = phi i64 [ %193, %scalar.ph944 ], [ %.0417563.ph, %scalar.ph944.preheader ]
  %gep569 = getelementptr %struct.complex, ptr %invariant.gep568, i64 %.0417563
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep569, align 4, !tbaa !10
  %193 = add nuw nsw i64 %.0417563, 1
  %.not441.not = icmp slt i64 %.0417563, %186
  br i1 %.not441.not, label %scalar.ph944, label %._crit_edge566, !llvm.loop !28

._crit_edge566:                                   ; preds = %scalar.ph944, %middle.block943, %179
  %.0417.lcssa = phi i64 [ 1, %179 ], [ %ind.end949, %middle.block943 ], [ %193, %scalar.ph944 ]
  %194 = add i64 %186, %169
  %195 = call i64 @llvm.smin.i64(i64 %168, i64 %194)
  %.not443572 = icmp sgt i64 %.0417.lcssa, %195
  br i1 %.not443572, label %._crit_edge576, label %.lr.ph575

.lr.ph575:                                        ; preds = %._crit_edge566
  %196 = add nsw i64 %.2420592, -1
  %197 = mul nsw i64 %171, %196
  %198 = mul nsw i64 %.2420592, %19
  %gep596 = getelementptr %struct.complex, ptr %invariant.gep595, i64 %.2420592
  %invariant.gep580 = getelementptr %struct.complex, ptr %gep596, i64 %198
  %invariant.gep582 = getelementptr %struct.complex, ptr %22, i64 %197
  %199 = add i64 %smin921, 1
  %200 = sub i64 %199, %.0417.lcssa
  %min.iters.check924 = icmp ult i64 %200, 8
  br i1 %min.iters.check924, label %scalar.ph923.preheader, label %vector.memcheck896

vector.memcheck896:                               ; preds = %.lr.ph575
  %201 = shl i64 %.0417.lcssa, 3
  %scevgep900 = getelementptr i8, ptr %gep1071, i64 %201
  %scevgep905 = getelementptr i8, ptr %gep1075, i64 %201
  %scevgep908 = getelementptr i8, ptr %gep1073, i64 %201
  %scevgep911 = getelementptr i8, ptr %gep1077, i64 %201
  %bound0914 = icmp ult ptr %scevgep900, %scevgep907
  %bound1915 = icmp ult ptr %scevgep905, %scevgep903
  %found.conflict916 = and i1 %bound0914, %bound1915
  %bound0917 = icmp ult ptr %scevgep908, %scevgep913
  %bound1918 = icmp ult ptr %scevgep911, %scevgep910
  %found.conflict919 = and i1 %bound0917, %bound1918
  %conflict.rdx920 = or i1 %found.conflict916, %found.conflict919
  br i1 %conflict.rdx920, label %scalar.ph923.preheader, label %vector.ph925

vector.ph925:                                     ; preds = %vector.memcheck896
  %n.vec927 = and i64 %200, -4
  %ind.end928 = add i64 %.0417.lcssa, %n.vec927
  br label %vector.body930

vector.body930:                                   ; preds = %vector.body930, %vector.ph925
  %index931 = phi i64 [ 0, %vector.ph925 ], [ %index.next941, %vector.body930 ]
  %offset.idx932 = add i64 %.0417.lcssa, %index931
  %202 = add i64 %offset.idx932, 2
  %203 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %offset.idx932
  %204 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %202
  %wide.vec933 = load <4 x float>, ptr %203, align 4, !tbaa !10
  %wide.vec934 = load <4 x float>, ptr %204, align 4, !tbaa !10
  %205 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %offset.idx932
  %206 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %202
  store <4 x float> %wide.vec933, ptr %205, align 4, !tbaa !10
  store <4 x float> %wide.vec934, ptr %206, align 4, !tbaa !10
  %index.next941 = add nuw i64 %index931, 4
  %207 = icmp eq i64 %index.next941, %n.vec927
  br i1 %207, label %middle.block922, label %vector.body930, !llvm.loop !29

middle.block922:                                  ; preds = %vector.body930
  %cmp.n942 = icmp eq i64 %200, %n.vec927
  br i1 %cmp.n942, label %._crit_edge576, label %scalar.ph923.preheader

scalar.ph923.preheader:                           ; preds = %middle.block922, %vector.memcheck896, %.lr.ph575
  %.0416573.ph = phi i64 [ %.0417.lcssa, %vector.memcheck896 ], [ %.0417.lcssa, %.lr.ph575 ], [ %ind.end928, %middle.block922 ]
  %208 = add i64 %smin1026, 1
  %209 = sub i64 %208, %.0416573.ph
  %210 = sub i64 %smin1026, %.0416573.ph
  %xtraiter1027 = and i64 %209, 3
  %lcmp.mod1028.not = icmp eq i64 %xtraiter1027, 0
  br i1 %lcmp.mod1028.not, label %scalar.ph923.prol.loopexit, label %scalar.ph923.prol

scalar.ph923.prol:                                ; preds = %scalar.ph923.preheader, %scalar.ph923.prol
  %.0416573.prol = phi i64 [ %212, %scalar.ph923.prol ], [ %.0416573.ph, %scalar.ph923.preheader ]
  %prol.iter1029 = phi i64 [ %prol.iter1029.next, %scalar.ph923.prol ], [ 0, %scalar.ph923.preheader ]
  %gep581.prol = getelementptr %struct.complex, ptr %invariant.gep580, i64 %.0416573.prol
  %gep583.prol = getelementptr %struct.complex, ptr %invariant.gep582, i64 %.0416573.prol
  %211 = load <2 x float>, ptr %gep581.prol, align 4, !tbaa !10
  store <2 x float> %211, ptr %gep583.prol, align 4, !tbaa !10
  %212 = add i64 %.0416573.prol, 1
  %prol.iter1029.next = add i64 %prol.iter1029, 1
  %prol.iter1029.cmp.not = icmp eq i64 %prol.iter1029.next, %xtraiter1027
  br i1 %prol.iter1029.cmp.not, label %scalar.ph923.prol.loopexit, label %scalar.ph923.prol, !llvm.loop !30

scalar.ph923.prol.loopexit:                       ; preds = %scalar.ph923.prol, %scalar.ph923.preheader
  %.0416573.unr = phi i64 [ %.0416573.ph, %scalar.ph923.preheader ], [ %212, %scalar.ph923.prol ]
  %213 = icmp ult i64 %210, 3
  br i1 %213, label %._crit_edge576, label %scalar.ph923

scalar.ph923:                                     ; preds = %scalar.ph923.prol.loopexit, %scalar.ph923
  %.0416573 = phi i64 [ %221, %scalar.ph923 ], [ %.0416573.unr, %scalar.ph923.prol.loopexit ]
  %gep581 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %.0416573
  %gep583 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %.0416573
  %214 = load <2 x float>, ptr %gep581, align 4, !tbaa !10
  store <2 x float> %214, ptr %gep583, align 4, !tbaa !10
  %215 = add i64 %.0416573, 1
  %gep581.1 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %215
  %gep583.1 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %215
  %216 = load <2 x float>, ptr %gep581.1, align 4, !tbaa !10
  store <2 x float> %216, ptr %gep583.1, align 4, !tbaa !10
  %217 = add i64 %.0416573, 2
  %gep581.2 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %217
  %gep583.2 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %217
  %218 = load <2 x float>, ptr %gep581.2, align 4, !tbaa !10
  store <2 x float> %218, ptr %gep583.2, align 4, !tbaa !10
  %219 = add i64 %.0416573, 3
  %gep581.3 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %219
  %gep583.3 = getelementptr %struct.complex, ptr %invariant.gep582, i64 %219
  %220 = load <2 x float>, ptr %gep581.3, align 4, !tbaa !10
  store <2 x float> %220, ptr %gep583.3, align 4, !tbaa !10
  %221 = add i64 %.0416573, 4
  %exitcond649.not.3 = icmp eq i64 %219, %smin
  br i1 %exitcond649.not.3, label %._crit_edge576, label %scalar.ph923, !llvm.loop !31

._crit_edge576:                                   ; preds = %scalar.ph923.prol.loopexit, %scalar.ph923, %middle.block922, %._crit_edge566
  %.0416.lcssa = phi i64 [ %.0417.lcssa, %._crit_edge566 ], [ %185, %middle.block922 ], [ %185, %scalar.ph923 ], [ %185, %scalar.ph923.prol.loopexit ]
  %.not444584 = icmp sgt i64 %.0416.lcssa, %171
  br i1 %.not444584, label %._crit_edge588, label %.lr.ph587

.lr.ph587:                                        ; preds = %._crit_edge576
  %222 = add nsw i64 %.2420592, -1
  %223 = mul nsw i64 %171, %222
  %invariant.gep589 = getelementptr %struct.complex, ptr %22, i64 %223
  %224 = sub i64 %173, %.0416.lcssa
  %min.iters.check885 = icmp ult i64 %224, 4
  br i1 %min.iters.check885, label %scalar.ph884.preheader, label %vector.ph886

vector.ph886:                                     ; preds = %.lr.ph587
  %n.vec888 = and i64 %224, -4
  %ind.end889 = add i64 %.0416.lcssa, %n.vec888
  %invariant.gep1068 = getelementptr i8, ptr %invariant.gep589, i64 16
  br label %vector.body891

vector.body891:                                   ; preds = %vector.body891, %vector.ph886
  %index892 = phi i64 [ 0, %vector.ph886 ], [ %index.next894, %vector.body891 ]
  %offset.idx893 = add i64 %.0416.lcssa, %index892
  %225 = getelementptr %struct.complex, ptr %invariant.gep589, i64 %offset.idx893
  %gep1069 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %offset.idx893
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %225, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep1069, align 4, !tbaa !10
  %index.next894 = add nuw i64 %index892, 4
  %226 = icmp eq i64 %index.next894, %n.vec888
  br i1 %226, label %middle.block883, label %vector.body891, !llvm.loop !32

middle.block883:                                  ; preds = %vector.body891
  %cmp.n895 = icmp eq i64 %224, %n.vec888
  br i1 %cmp.n895, label %._crit_edge588, label %scalar.ph884.preheader

scalar.ph884.preheader:                           ; preds = %middle.block883, %.lr.ph587
  %.0415585.ph = phi i64 [ %.0416.lcssa, %.lr.ph587 ], [ %ind.end889, %middle.block883 ]
  br label %scalar.ph884

scalar.ph884:                                     ; preds = %scalar.ph884.preheader, %scalar.ph884
  %.0415585 = phi i64 [ %227, %scalar.ph884 ], [ %.0415585.ph, %scalar.ph884.preheader ]
  %gep590 = getelementptr %struct.complex, ptr %invariant.gep589, i64 %.0415585
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep590, align 4, !tbaa !10
  %227 = add i64 %.0415585, 1
  %exitcond650.not = icmp eq i64 %.0415585, %171
  br i1 %exitcond650.not, label %._crit_edge588, label %scalar.ph884, !llvm.loop !33

._crit_edge588:                                   ; preds = %scalar.ph884, %middle.block883, %._crit_edge576
  %228 = add nuw i64 %.2420592, 1
  %indvars.iv.next = add i64 %indvars.iv, -1
  %exitcond651.not = icmp eq i64 %.2420592, %164
  %indvar.next898 = add i64 %indvar897, 1
  br i1 %exitcond651.not, label %.loopexit, label %179, !llvm.loop !34

229:                                              ; preds = %160
  %230 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.14, i64 noundef 2, i64 noundef 2) #4
  %231 = icmp eq i64 %230, 0
  br i1 %231, label %235, label %232

232:                                              ; preds = %229
  %233 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.15, i64 noundef 2, i64 noundef 2) #4
  %234 = icmp eq i64 %233, 0
  br i1 %234, label %235, label %292

235:                                              ; preds = %232, %229
  %236 = load i64, ptr %4, align 8, !tbaa !5
  %.not436558 = icmp slt i64 %236, 1
  br i1 %.not436558, label %.loopexit, label %.lr.ph561

.lr.ph561:                                        ; preds = %235
  %237 = zext i1 %.fr to i64
  %238 = sext i1 %.fr to i64
  %239 = load i64, ptr %8, align 8, !tbaa !5
  %240 = shl i64 %239, 3
  %241 = shl i64 %19, 3
  %invariant.gep1060 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep1062 = getelementptr i8, ptr %7, i64 -4
  %invariant.gep1064 = getelementptr i8, ptr %5, i64 -8
  %invariant.gep1066 = getelementptr i8, ptr %5, i64 -4
  br label %242

242:                                              ; preds = %.lr.ph561, %290
  %indvar826 = phi i64 [ 0, %.lr.ph561 ], [ %indvar.next827, %290 ]
  %.3421559 = phi i64 [ 1, %.lr.ph561 ], [ %291, %290 ]
  %243 = mul i64 %240, %indvar826
  %gep1061 = getelementptr i8, ptr %invariant.gep1060, i64 %243
  %gep1063 = getelementptr i8, ptr %invariant.gep1062, i64 %243
  %244 = mul i64 %241, %indvar826
  %gep1065 = getelementptr i8, ptr %invariant.gep1064, i64 %244
  %gep1067 = getelementptr i8, ptr %invariant.gep1066, i64 %244
  %scevgep837 = getelementptr i8, ptr %7, i64 %243
  %scevgep840 = getelementptr i8, ptr %5, i64 %244
  %.0411 = add nuw nsw i64 %.3421559, %237
  %spec.select = add nsw i64 %.3421559, %238
  %.1412 = select i1 %31, i64 1, i64 %.0411
  %.0409 = select i1 %31, i64 %spec.select, i64 %236
  %.not437.not537 = icmp ugt i64 %.1412, 1
  br i1 %.not437.not537, label %.lr.ph540, label %.preheader

.lr.ph540:                                        ; preds = %242
  %245 = add nsw i64 %.3421559, -1
  %246 = mul nsw i64 %239, %245
  %invariant.gep541 = getelementptr %struct.complex, ptr %22, i64 %246
  %247 = add i64 %.1412, -1
  %min.iters.check872 = icmp ult i64 %.1412, 5
  br i1 %min.iters.check872, label %scalar.ph871.preheader, label %vector.ph873

scalar.ph871.preheader:                           ; preds = %middle.block870, %.lr.ph540
  %.3426538.ph = phi i64 [ 1, %.lr.ph540 ], [ %ind.end876, %middle.block870 ]
  br label %scalar.ph871

vector.ph873:                                     ; preds = %.lr.ph540
  %n.vec875 = and i64 %247, -4
  %ind.end876 = or disjoint i64 %n.vec875, 1
  br label %vector.body878

vector.body878:                                   ; preds = %vector.body878, %vector.ph873
  %index879 = phi i64 [ 0, %vector.ph873 ], [ %index.next881, %vector.body878 ]
  %offset.idx880 = or disjoint i64 %index879, 1
  %248 = or disjoint i64 %index879, 3
  %249 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %offset.idx880
  %250 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %248
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %249, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %250, align 4, !tbaa !10
  %index.next881 = add nuw i64 %index879, 4
  %251 = icmp eq i64 %index.next881, %n.vec875
  br i1 %251, label %middle.block870, label %vector.body878, !llvm.loop !35

middle.block870:                                  ; preds = %vector.body878
  %cmp.n882 = icmp eq i64 %247, %n.vec875
  br i1 %cmp.n882, label %.preheader, label %scalar.ph871.preheader

.preheader:                                       ; preds = %scalar.ph871, %middle.block870, %242
  %.not438543 = icmp sgt i64 %.1412, %.0409
  br i1 %.not438543, label %._crit_edge546, label %.lr.ph545

.lr.ph545:                                        ; preds = %.preheader
  %252 = add nsw i64 %.3421559, -1
  %253 = mul nsw i64 %239, %252
  %254 = mul nsw i64 %.3421559, %19
  %invariant.gep547 = getelementptr %struct.complex, ptr %21, i64 %254
  %invariant.gep549 = getelementptr %struct.complex, ptr %22, i64 %253
  %255 = add i64 %.0409, 1
  %256 = sub i64 %255, %.1412
  %min.iters.check851 = icmp ult i64 %256, 8
  br i1 %min.iters.check851, label %scalar.ph850.preheader, label %vector.memcheck825

scalar.ph850.preheader:                           ; preds = %middle.block849, %vector.memcheck825, %.lr.ph545
  %.4427544.ph = phi i64 [ %.1412, %vector.memcheck825 ], [ %.1412, %.lr.ph545 ], [ %ind.end855, %middle.block849 ]
  %257 = add i64 %.0409, 1
  %258 = sub i64 %257, %.4427544.ph
  %259 = sub i64 %.0409, %.4427544.ph
  %xtraiter1023 = and i64 %258, 3
  %lcmp.mod1024.not = icmp eq i64 %xtraiter1023, 0
  br i1 %lcmp.mod1024.not, label %scalar.ph850.prol.loopexit, label %scalar.ph850.prol

scalar.ph850.prol:                                ; preds = %scalar.ph850.preheader, %scalar.ph850.prol
  %.4427544.prol = phi i64 [ %261, %scalar.ph850.prol ], [ %.4427544.ph, %scalar.ph850.preheader ]
  %prol.iter1025 = phi i64 [ %prol.iter1025.next, %scalar.ph850.prol ], [ 0, %scalar.ph850.preheader ]
  %gep548.prol = getelementptr %struct.complex, ptr %invariant.gep547, i64 %.4427544.prol
  %gep550.prol = getelementptr %struct.complex, ptr %invariant.gep549, i64 %.4427544.prol
  %260 = load <2 x float>, ptr %gep548.prol, align 4, !tbaa !10
  store <2 x float> %260, ptr %gep550.prol, align 4, !tbaa !10
  %261 = add nuw i64 %.4427544.prol, 1
  %prol.iter1025.next = add i64 %prol.iter1025, 1
  %prol.iter1025.cmp.not = icmp eq i64 %prol.iter1025.next, %xtraiter1023
  br i1 %prol.iter1025.cmp.not, label %scalar.ph850.prol.loopexit, label %scalar.ph850.prol, !llvm.loop !36

scalar.ph850.prol.loopexit:                       ; preds = %scalar.ph850.prol, %scalar.ph850.preheader
  %.4427544.unr = phi i64 [ %.4427544.ph, %scalar.ph850.preheader ], [ %261, %scalar.ph850.prol ]
  %262 = icmp ult i64 %259, 3
  br i1 %262, label %._crit_edge546, label %scalar.ph850

vector.memcheck825:                               ; preds = %.lr.ph545
  %263 = shl i64 %.1412, 3
  %scevgep829 = getelementptr i8, ptr %gep1061, i64 %263
  %264 = shl i64 %.0409, 3
  %scevgep831 = getelementptr i8, ptr %gep1063, i64 %264
  %scevgep833 = getelementptr i8, ptr %gep1065, i64 %263
  %scevgep835 = getelementptr i8, ptr %gep1067, i64 %264
  %scevgep836 = getelementptr i8, ptr %gep1063, i64 %263
  %scevgep838 = getelementptr i8, ptr %scevgep837, i64 %264
  %scevgep839 = getelementptr i8, ptr %gep1067, i64 %263
  %scevgep841 = getelementptr i8, ptr %scevgep840, i64 %264
  %bound0842 = icmp ult ptr %scevgep829, %scevgep835
  %bound1843 = icmp ult ptr %scevgep833, %scevgep831
  %found.conflict844 = and i1 %bound0842, %bound1843
  %bound0845 = icmp ult ptr %scevgep836, %scevgep841
  %bound1846 = icmp ult ptr %scevgep839, %scevgep838
  %found.conflict847 = and i1 %bound0845, %bound1846
  %conflict.rdx848 = or i1 %found.conflict844, %found.conflict847
  br i1 %conflict.rdx848, label %scalar.ph850.preheader, label %vector.ph852

vector.ph852:                                     ; preds = %vector.memcheck825
  %n.vec854 = and i64 %256, -4
  %ind.end855 = add i64 %.1412, %n.vec854
  br label %vector.body857

vector.body857:                                   ; preds = %vector.body857, %vector.ph852
  %index858 = phi i64 [ 0, %vector.ph852 ], [ %index.next868, %vector.body857 ]
  %offset.idx859 = add i64 %.1412, %index858
  %265 = add i64 %offset.idx859, 2
  %266 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %offset.idx859
  %267 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %265
  %wide.vec860 = load <4 x float>, ptr %266, align 4, !tbaa !10
  %wide.vec861 = load <4 x float>, ptr %267, align 4, !tbaa !10
  %268 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %offset.idx859
  %269 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %265
  store <4 x float> %wide.vec860, ptr %268, align 4, !tbaa !10
  store <4 x float> %wide.vec861, ptr %269, align 4, !tbaa !10
  %index.next868 = add nuw i64 %index858, 4
  %270 = icmp eq i64 %index.next868, %n.vec854
  br i1 %270, label %middle.block849, label %vector.body857, !llvm.loop !37

middle.block849:                                  ; preds = %vector.body857
  %cmp.n869 = icmp eq i64 %256, %n.vec854
  br i1 %cmp.n869, label %._crit_edge546, label %scalar.ph850.preheader

scalar.ph871:                                     ; preds = %scalar.ph871.preheader, %scalar.ph871
  %.3426538 = phi i64 [ %271, %scalar.ph871 ], [ %.3426538.ph, %scalar.ph871.preheader ]
  %gep542 = getelementptr %struct.complex, ptr %invariant.gep541, i64 %.3426538
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep542, align 4, !tbaa !10
  %271 = add nuw nsw i64 %.3426538, 1
  %exitcond645.not = icmp eq i64 %271, %.1412
  br i1 %exitcond645.not, label %.preheader, label %scalar.ph871, !llvm.loop !38

scalar.ph850:                                     ; preds = %scalar.ph850.prol.loopexit, %scalar.ph850
  %.4427544 = phi i64 [ %279, %scalar.ph850 ], [ %.4427544.unr, %scalar.ph850.prol.loopexit ]
  %gep548 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %.4427544
  %gep550 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %.4427544
  %272 = load <2 x float>, ptr %gep548, align 4, !tbaa !10
  store <2 x float> %272, ptr %gep550, align 4, !tbaa !10
  %273 = add nuw i64 %.4427544, 1
  %gep548.1 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %273
  %gep550.1 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %273
  %274 = load <2 x float>, ptr %gep548.1, align 4, !tbaa !10
  store <2 x float> %274, ptr %gep550.1, align 4, !tbaa !10
  %275 = add nuw i64 %.4427544, 2
  %gep548.2 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %275
  %gep550.2 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %275
  %276 = load <2 x float>, ptr %gep548.2, align 4, !tbaa !10
  store <2 x float> %276, ptr %gep550.2, align 4, !tbaa !10
  %277 = add nuw i64 %.4427544, 3
  %gep548.3 = getelementptr %struct.complex, ptr %invariant.gep547, i64 %277
  %gep550.3 = getelementptr %struct.complex, ptr %invariant.gep549, i64 %277
  %278 = load <2 x float>, ptr %gep548.3, align 4, !tbaa !10
  store <2 x float> %278, ptr %gep550.3, align 4, !tbaa !10
  %279 = add nuw i64 %.4427544, 4
  %exitcond646.not.3 = icmp eq i64 %277, %.0409
  br i1 %exitcond646.not.3, label %._crit_edge546, label %scalar.ph850, !llvm.loop !39

._crit_edge546:                                   ; preds = %scalar.ph850.prol.loopexit, %scalar.ph850, %middle.block849, %.preheader
  %.not439.not551 = icmp slt i64 %.0409, %239
  br i1 %.not439.not551, label %.lr.ph554, label %._crit_edge555

.lr.ph554:                                        ; preds = %._crit_edge546
  %280 = add nsw i64 %.3421559, -1
  %281 = mul nsw i64 %239, %280
  %invariant.gep556 = getelementptr %struct.complex, ptr %7, i64 %281
  %282 = sub i64 %239, %.0409
  %min.iters.check814 = icmp ult i64 %282, 4
  br i1 %min.iters.check814, label %scalar.ph813.preheader, label %vector.ph815

vector.ph815:                                     ; preds = %.lr.ph554
  %n.vec817 = and i64 %282, -4
  %ind.end818 = add i64 %.0409, %n.vec817
  %invariant.gep1058 = getelementptr i8, ptr %invariant.gep556, i64 16
  br label %vector.body820

vector.body820:                                   ; preds = %vector.body820, %vector.ph815
  %index821 = phi i64 [ 0, %vector.ph815 ], [ %index.next823, %vector.body820 ]
  %offset.idx822 = add i64 %.0409, %index821
  %283 = getelementptr %struct.complex, ptr %invariant.gep556, i64 %offset.idx822
  %gep1059 = getelementptr %struct.complex, ptr %invariant.gep1058, i64 %offset.idx822
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %283, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep1059, align 4, !tbaa !10
  %index.next823 = add nuw i64 %index821, 4
  %284 = icmp eq i64 %index.next823, %n.vec817
  br i1 %284, label %middle.block812, label %vector.body820, !llvm.loop !40

middle.block812:                                  ; preds = %vector.body820
  %cmp.n824 = icmp eq i64 %282, %n.vec817
  br i1 %cmp.n824, label %._crit_edge555, label %scalar.ph813.preheader

scalar.ph813.preheader:                           ; preds = %middle.block812, %.lr.ph554
  %.5428.in552.ph = phi i64 [ %.0409, %.lr.ph554 ], [ %ind.end818, %middle.block812 ]
  br label %scalar.ph813

scalar.ph813:                                     ; preds = %scalar.ph813.preheader, %scalar.ph813
  %.5428.in552 = phi i64 [ %.5428, %scalar.ph813 ], [ %.5428.in552.ph, %scalar.ph813.preheader ]
  %.5428 = add nsw i64 %.5428.in552, 1
  %gep557 = getelementptr %struct.complex, ptr %invariant.gep556, i64 %.5428.in552
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep557, align 4, !tbaa !10
  %exitcond647.not = icmp eq i64 %.5428, %239
  br i1 %exitcond647.not, label %._crit_edge555, label %scalar.ph813, !llvm.loop !41

._crit_edge555:                                   ; preds = %scalar.ph813, %middle.block812, %._crit_edge546
  br i1 %25, label %285, label %290

285:                                              ; preds = %._crit_edge555
  %286 = add nsw i64 %.3421559, -1
  %287 = mul nsw i64 %239, %286
  %288 = getelementptr %struct.complex, ptr %22, i64 %.3421559
  %289 = getelementptr %struct.complex, ptr %288, i64 %287, i32 1
  store float -1.000000e+10, ptr %289, align 4, !tbaa !16
  br label %290

290:                                              ; preds = %._crit_edge555, %285
  %291 = add nuw i64 %.3421559, 1
  %exitcond648.not = icmp eq i64 %.3421559, %236
  %indvar.next827 = add i64 %indvar826, 1
  br i1 %exitcond648.not, label %.loopexit, label %242, !llvm.loop !42

292:                                              ; preds = %232
  %293 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.16, i64 noundef 2, i64 noundef 2) #4
  %294 = icmp eq i64 %293, 0
  br i1 %294, label %298, label %295

295:                                              ; preds = %292
  %296 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.17, i64 noundef 2, i64 noundef 2) #4
  %297 = icmp eq i64 %296, 0
  br i1 %297, label %298, label %372

298:                                              ; preds = %295, %292
  %299 = load i64, ptr %4, align 8, !tbaa !5
  %.not431532 = icmp slt i64 %299, 1
  br i1 %.not431532, label %.loopexit, label %.lr.ph536

.lr.ph536:                                        ; preds = %298
  %.459 = select i1 %.fr, i64 2, i64 1
  %300 = load i64, ptr %8, align 8, !tbaa !5
  %301 = shl i64 %300, 3
  %302 = shl i64 %19, 3
  %303 = add i64 %302, 8
  %invariant.gep1052 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep1054 = getelementptr i8, ptr %7, i64 -4
  %invariant.gep1056 = getelementptr i8, ptr %5, i64 8
  %304 = load i64, ptr %9, align 8, !tbaa !5
  %305 = add nsw i64 %304, 1
  %. = select i1 %.fr, i64 %304, i64 %305
  br label %306

306:                                              ; preds = %.lr.ph536, %370
  %indvar755 = phi i64 [ 0, %.lr.ph536 ], [ %indvar.next756, %370 ]
  %.4422.neg534 = phi i64 [ -1, %.lr.ph536 ], [ %.4422.neg, %370 ]
  %.4422533 = phi i64 [ 1, %.lr.ph536 ], [ %371, %370 ]
  %307 = mul i64 %301, %indvar755
  %gep1053 = getelementptr i8, ptr %invariant.gep1052, i64 %307
  %gep1055 = getelementptr i8, ptr %invariant.gep1054, i64 %307
  %308 = mul i64 %303, %indvar755
  %scevgep761 = getelementptr i8, ptr %5, i64 %308
  %309 = or disjoint i64 %308, 4
  %scevgep763 = getelementptr i8, ptr %5, i64 %309
  %scevgep766 = getelementptr i8, ptr %7, i64 %307
  %gep1057 = getelementptr i8, ptr %invariant.gep1056, i64 %308
  br i1 %31, label %310, label %314

310:                                              ; preds = %306
  %311 = add nsw i64 %.4422.neg534, 2
  %312 = add i64 %311, %304
  %313 = call i64 @llvm.smax.i64(i64 %312, i64 1)
  br label %319

314:                                              ; preds = %306
  %315 = load i64, ptr %3, align 8, !tbaa !5
  %316 = add nsw i64 %.4422.neg534, 1
  %317 = add i64 %316, %315
  %318 = call i64 @llvm.smin.i64(i64 %305, i64 %317)
  br label %319

319:                                              ; preds = %310, %314
  %.0414 = phi i64 [ 1, %314 ], [ %305, %310 ]
  %.3 = phi i64 [ %.459, %314 ], [ %313, %310 ]
  %.1410 = phi i64 [ %318, %314 ], [ %., %310 ]
  %.not433.not511 = icmp ugt i64 %.3, 1
  br i1 %.not433.not511, label %.lr.ph514, label %.preheader465

.lr.ph514:                                        ; preds = %319
  %320 = add nsw i64 %.4422533, -1
  %321 = mul nsw i64 %300, %320
  %invariant.gep515 = getelementptr %struct.complex, ptr %22, i64 %321
  %322 = add nsw i64 %.3, -1
  %min.iters.check801 = icmp ult i64 %.3, 5
  br i1 %min.iters.check801, label %scalar.ph800.preheader, label %vector.ph802

scalar.ph800.preheader:                           ; preds = %middle.block799, %.lr.ph514
  %.6512.ph = phi i64 [ 1, %.lr.ph514 ], [ %ind.end805, %middle.block799 ]
  br label %scalar.ph800

vector.ph802:                                     ; preds = %.lr.ph514
  %n.vec804 = and i64 %322, -4
  %ind.end805 = or disjoint i64 %n.vec804, 1
  br label %vector.body807

vector.body807:                                   ; preds = %vector.body807, %vector.ph802
  %index808 = phi i64 [ 0, %vector.ph802 ], [ %index.next810, %vector.body807 ]
  %offset.idx809 = or disjoint i64 %index808, 1
  %323 = or disjoint i64 %index808, 3
  %324 = getelementptr %struct.complex, ptr %invariant.gep515, i64 %offset.idx809
  %325 = getelementptr %struct.complex, ptr %invariant.gep515, i64 %323
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %324, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %325, align 4, !tbaa !10
  %index.next810 = add nuw i64 %index808, 4
  %326 = icmp eq i64 %index.next810, %n.vec804
  br i1 %326, label %middle.block799, label %vector.body807, !llvm.loop !43

middle.block799:                                  ; preds = %vector.body807
  %cmp.n811 = icmp eq i64 %322, %n.vec804
  br i1 %cmp.n811, label %.preheader465, label %scalar.ph800.preheader

.preheader465:                                    ; preds = %scalar.ph800, %middle.block799, %319
  %.not434517 = icmp sgt i64 %.3, %.1410
  br i1 %.not434517, label %._crit_edge520, label %.lr.ph519

.lr.ph519:                                        ; preds = %.preheader465
  %327 = add nsw i64 %.4422533, -1
  %328 = mul nsw i64 %300, %327
  %329 = sub i64 %.4422533, %.0414
  %330 = mul nsw i64 %.4422533, %19
  %invariant.gep521 = getelementptr %struct.complex, ptr %21, i64 %330
  %invariant.gep523 = getelementptr %struct.complex, ptr %22, i64 %328
  %331 = getelementptr %struct.complex, ptr %invariant.gep521, i64 %329
  %332 = add i64 %.1410, 1
  %333 = sub i64 %332, %.3
  %min.iters.check780 = icmp ult i64 %333, 10
  br i1 %min.iters.check780, label %scalar.ph779.preheader, label %vector.memcheck754

scalar.ph779.preheader:                           ; preds = %middle.block778, %vector.memcheck754, %.lr.ph519
  %.7518.ph = phi i64 [ %.3, %vector.memcheck754 ], [ %.3, %.lr.ph519 ], [ %ind.end784, %middle.block778 ]
  %334 = add i64 %.1410, 1
  %335 = sub i64 %334, %.7518.ph
  %336 = sub i64 %.1410, %.7518.ph
  %xtraiter1021 = and i64 %335, 3
  %lcmp.mod1022.not = icmp eq i64 %xtraiter1021, 0
  br i1 %lcmp.mod1022.not, label %scalar.ph779.prol.loopexit, label %scalar.ph779.prol

scalar.ph779.prol:                                ; preds = %scalar.ph779.preheader, %scalar.ph779.prol
  %.7518.prol = phi i64 [ %338, %scalar.ph779.prol ], [ %.7518.ph, %scalar.ph779.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph779.prol ], [ 0, %scalar.ph779.preheader ]
  %gep522.prol = getelementptr %struct.complex, ptr %331, i64 %.7518.prol
  %gep524.prol = getelementptr %struct.complex, ptr %invariant.gep523, i64 %.7518.prol
  %337 = load <2 x float>, ptr %gep522.prol, align 4, !tbaa !10
  store <2 x float> %337, ptr %gep524.prol, align 4, !tbaa !10
  %338 = add nuw i64 %.7518.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1021
  br i1 %prol.iter.cmp.not, label %scalar.ph779.prol.loopexit, label %scalar.ph779.prol, !llvm.loop !44

scalar.ph779.prol.loopexit:                       ; preds = %scalar.ph779.prol, %scalar.ph779.preheader
  %.7518.unr = phi i64 [ %.7518.ph, %scalar.ph779.preheader ], [ %338, %scalar.ph779.prol ]
  %339 = icmp ult i64 %336, 3
  br i1 %339, label %._crit_edge520, label %scalar.ph779

vector.memcheck754:                               ; preds = %.lr.ph519
  %340 = shl i64 %.3, 3
  %scevgep758 = getelementptr i8, ptr %gep1053, i64 %340
  %341 = shl i64 %.1410, 3
  %scevgep760 = getelementptr i8, ptr %gep1055, i64 %341
  %342 = shl i64 %.0414, 3
  %343 = sub i64 %340, %342
  %scevgep762 = getelementptr i8, ptr %scevgep761, i64 %343
  %344 = sub i64 %341, %342
  %scevgep764 = getelementptr i8, ptr %scevgep763, i64 %344
  %scevgep765 = getelementptr i8, ptr %gep1055, i64 %340
  %scevgep767 = getelementptr i8, ptr %scevgep766, i64 %341
  %scevgep768 = getelementptr i8, ptr %scevgep763, i64 %343
  %scevgep770 = getelementptr i8, ptr %gep1057, i64 %344
  %bound0771 = icmp ult ptr %scevgep758, %scevgep764
  %bound1772 = icmp ult ptr %scevgep762, %scevgep760
  %found.conflict773 = and i1 %bound0771, %bound1772
  %bound0774 = icmp ult ptr %scevgep765, %scevgep770
  %bound1775 = icmp ult ptr %scevgep768, %scevgep767
  %found.conflict776 = and i1 %bound0774, %bound1775
  %conflict.rdx777 = or i1 %found.conflict773, %found.conflict776
  br i1 %conflict.rdx777, label %scalar.ph779.preheader, label %vector.ph781

vector.ph781:                                     ; preds = %vector.memcheck754
  %n.vec783 = and i64 %333, -4
  %ind.end784 = add i64 %.3, %n.vec783
  br label %vector.body786

vector.body786:                                   ; preds = %vector.body786, %vector.ph781
  %index787 = phi i64 [ 0, %vector.ph781 ], [ %index.next797, %vector.body786 ]
  %offset.idx788 = add i64 %.3, %index787
  %345 = add i64 %offset.idx788, 2
  %346 = getelementptr %struct.complex, ptr %331, i64 %offset.idx788
  %347 = getelementptr %struct.complex, ptr %331, i64 %345
  %wide.vec789 = load <4 x float>, ptr %346, align 4, !tbaa !10
  %wide.vec790 = load <4 x float>, ptr %347, align 4, !tbaa !10
  %348 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %offset.idx788
  %349 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %345
  store <4 x float> %wide.vec789, ptr %348, align 4, !tbaa !10
  store <4 x float> %wide.vec790, ptr %349, align 4, !tbaa !10
  %index.next797 = add nuw i64 %index787, 4
  %350 = icmp eq i64 %index.next797, %n.vec783
  br i1 %350, label %middle.block778, label %vector.body786, !llvm.loop !45

middle.block778:                                  ; preds = %vector.body786
  %cmp.n798 = icmp eq i64 %333, %n.vec783
  br i1 %cmp.n798, label %._crit_edge520, label %scalar.ph779.preheader

scalar.ph800:                                     ; preds = %scalar.ph800.preheader, %scalar.ph800
  %.6512 = phi i64 [ %351, %scalar.ph800 ], [ %.6512.ph, %scalar.ph800.preheader ]
  %gep516 = getelementptr %struct.complex, ptr %invariant.gep515, i64 %.6512
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep516, align 4, !tbaa !10
  %351 = add nuw nsw i64 %.6512, 1
  %exitcond641.not = icmp eq i64 %351, %.3
  br i1 %exitcond641.not, label %.preheader465, label %scalar.ph800, !llvm.loop !46

scalar.ph779:                                     ; preds = %scalar.ph779.prol.loopexit, %scalar.ph779
  %.7518 = phi i64 [ %359, %scalar.ph779 ], [ %.7518.unr, %scalar.ph779.prol.loopexit ]
  %gep522 = getelementptr %struct.complex, ptr %331, i64 %.7518
  %gep524 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %.7518
  %352 = load <2 x float>, ptr %gep522, align 4, !tbaa !10
  store <2 x float> %352, ptr %gep524, align 4, !tbaa !10
  %353 = add nuw i64 %.7518, 1
  %gep522.1 = getelementptr %struct.complex, ptr %331, i64 %353
  %gep524.1 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %353
  %354 = load <2 x float>, ptr %gep522.1, align 4, !tbaa !10
  store <2 x float> %354, ptr %gep524.1, align 4, !tbaa !10
  %355 = add nuw i64 %.7518, 2
  %gep522.2 = getelementptr %struct.complex, ptr %331, i64 %355
  %gep524.2 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %355
  %356 = load <2 x float>, ptr %gep522.2, align 4, !tbaa !10
  store <2 x float> %356, ptr %gep524.2, align 4, !tbaa !10
  %357 = add nuw i64 %.7518, 3
  %gep522.3 = getelementptr %struct.complex, ptr %331, i64 %357
  %gep524.3 = getelementptr %struct.complex, ptr %invariant.gep523, i64 %357
  %358 = load <2 x float>, ptr %gep522.3, align 4, !tbaa !10
  store <2 x float> %358, ptr %gep524.3, align 4, !tbaa !10
  %359 = add nuw i64 %.7518, 4
  %exitcond642.not.3 = icmp eq i64 %357, %.1410
  br i1 %exitcond642.not.3, label %._crit_edge520, label %scalar.ph779, !llvm.loop !47

._crit_edge520:                                   ; preds = %scalar.ph779.prol.loopexit, %scalar.ph779, %middle.block778, %.preheader465
  %.not435.not525 = icmp slt i64 %.1410, %300
  br i1 %.not435.not525, label %.lr.ph528, label %._crit_edge529

.lr.ph528:                                        ; preds = %._crit_edge520
  %360 = add nsw i64 %.4422533, -1
  %361 = mul nsw i64 %300, %360
  %invariant.gep530 = getelementptr %struct.complex, ptr %7, i64 %361
  %362 = sub i64 %300, %.1410
  %min.iters.check743 = icmp ult i64 %362, 4
  br i1 %min.iters.check743, label %scalar.ph742.preheader, label %vector.ph744

vector.ph744:                                     ; preds = %.lr.ph528
  %n.vec746 = and i64 %362, -4
  %ind.end747 = add i64 %.1410, %n.vec746
  %invariant.gep1050 = getelementptr i8, ptr %invariant.gep530, i64 16
  br label %vector.body749

vector.body749:                                   ; preds = %vector.body749, %vector.ph744
  %index750 = phi i64 [ 0, %vector.ph744 ], [ %index.next752, %vector.body749 ]
  %offset.idx751 = add i64 %.1410, %index750
  %363 = getelementptr %struct.complex, ptr %invariant.gep530, i64 %offset.idx751
  %gep1051 = getelementptr %struct.complex, ptr %invariant.gep1050, i64 %offset.idx751
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %363, align 4, !tbaa !10
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep1051, align 4, !tbaa !10
  %index.next752 = add nuw i64 %index750, 4
  %364 = icmp eq i64 %index.next752, %n.vec746
  br i1 %364, label %middle.block741, label %vector.body749, !llvm.loop !48

middle.block741:                                  ; preds = %vector.body749
  %cmp.n753 = icmp eq i64 %362, %n.vec746
  br i1 %cmp.n753, label %._crit_edge529, label %scalar.ph742.preheader

scalar.ph742.preheader:                           ; preds = %middle.block741, %.lr.ph528
  %.8.in526.ph = phi i64 [ %.1410, %.lr.ph528 ], [ %ind.end747, %middle.block741 ]
  br label %scalar.ph742

scalar.ph742:                                     ; preds = %scalar.ph742.preheader, %scalar.ph742
  %.8.in526 = phi i64 [ %.8, %scalar.ph742 ], [ %.8.in526.ph, %scalar.ph742.preheader ]
  %.8 = add nsw i64 %.8.in526, 1
  %gep531 = getelementptr %struct.complex, ptr %invariant.gep530, i64 %.8.in526
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep531, align 4, !tbaa !10
  %exitcond643.not = icmp eq i64 %.8, %300
  br i1 %exitcond643.not, label %._crit_edge529, label %scalar.ph742, !llvm.loop !49

._crit_edge529:                                   ; preds = %scalar.ph742, %middle.block741, %._crit_edge520
  br i1 %25, label %365, label %370

365:                                              ; preds = %._crit_edge529
  %366 = add nsw i64 %.4422533, -1
  %367 = mul nsw i64 %300, %366
  %368 = getelementptr %struct.complex, ptr %22, i64 %.0414
  %369 = getelementptr %struct.complex, ptr %368, i64 %367, i32 1
  store float -1.000000e+10, ptr %369, align 4, !tbaa !16
  br label %370

370:                                              ; preds = %._crit_edge529, %365
  %371 = add nuw i64 %.4422533, 1
  %.4422.neg = xor i64 %.4422533, -1
  %exitcond644.not = icmp eq i64 %.4422533, %299
  %indvar.next756 = add i64 %indvar755, 1
  br i1 %exitcond644.not, label %.loopexit, label %306, !llvm.loop !50

372:                                              ; preds = %295
  %373 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.18, i64 noundef 2, i64 noundef 2) #4
  %374 = icmp eq i64 %373, 0
  br i1 %374, label %378, label %375

375:                                              ; preds = %372
  %376 = call i64 @s_cmp(ptr noundef nonnull %0, ptr noundef nonnull @.str.19, i64 noundef 2, i64 noundef 2) #4
  %377 = icmp eq i64 %376, 0
  br i1 %377, label %378, label %.loopexit

378:                                              ; preds = %375, %372
  %379 = load i64, ptr %4, align 8, !tbaa !5
  %.not429494 = icmp slt i64 %379, 1
  br i1 %.not429494, label %.loopexit, label %.lr.ph500

.lr.ph500:                                        ; preds = %378
  br i1 %25, label %.lr.ph500.split.us, label %.lr.ph500.split

.lr.ph500.split.us:                               ; preds = %.lr.ph500
  br i1 %.fr, label %.lr.ph500.split.us.split.us.preheader, label %.lr.ph500.split.us.split.preheader

.lr.ph500.split.us.split.us.preheader:            ; preds = %.lr.ph500.split.us
  %invariant.gep1048 = getelementptr i8, ptr %7, i64 8
  br label %.lr.ph500.split.us.split.us

.lr.ph500.split.us.split.preheader:               ; preds = %.lr.ph500.split.us
  %scevgep703 = getelementptr i8, ptr %7, i64 4
  %scevgep710 = getelementptr i8, ptr %7, i64 8
  %380 = shl i64 %19, 3
  %invariant.gep1046 = getelementptr i8, ptr %5, i64 -8
  br label %.lr.ph500.split.us.split

.lr.ph500.split.us.split.us:                      ; preds = %.lr.ph500.split.us.split.us.preheader, %._crit_edge485.split.us.us.split.us.us
  %.0498.us.us = phi i64 [ %.1.lcssa.us.us, %._crit_edge485.split.us.us.split.us.us ], [ 0, %.lr.ph500.split.us.split.us.preheader ]
  %.5495.us.us = phi i64 [ %381, %._crit_edge485.split.us.us.split.us.us ], [ 1, %.lr.ph500.split.us.split.us.preheader ]
  %spec.select460.us.us = select i1 %31, i64 1, i64 %.5495.us.us
  %spec.select461.us.us = select i1 %31, i64 %.5495.us.us, i64 %379
  %.not430480.us.us = icmp sgt i64 %spec.select460.us.us, %spec.select461.us.us
  br i1 %.not430480.us.us, label %._crit_edge485.split.us.us.split.us.us, label %.lr.ph484.us.us

._crit_edge485.split.us.us.split.us.us:           ; preds = %.prol.loopexit1018, %.lr.ph484.us.us.new, %.lr.ph500.split.us.split.us
  %.1.lcssa.us.us = phi i64 [ %.0498.us.us, %.lr.ph500.split.us.split.us ], [ %385, %.lr.ph484.us.us.new ], [ %385, %.prol.loopexit1018 ]
  %381 = add nuw i64 %.5495.us.us, 1
  %exitcond640.not = icmp eq i64 %.5495.us.us, %379
  br i1 %exitcond640.not, label %.loopexit, label %.lr.ph500.split.us.split.us, !llvm.loop !51

.lr.ph484.us.us:                                  ; preds = %.lr.ph500.split.us.split.us
  %382 = mul nsw i64 %.5495.us.us, %19
  %invariant.gep486.us.us = getelementptr %struct.complex, ptr %21, i64 %382
  %383 = add i64 %spec.select461.us.us, 1
  %384 = add i64 %383, %.0498.us.us
  %385 = sub i64 %384, %spec.select460.us.us
  %386 = sub i64 %383, %spec.select460.us.us
  %xtraiter1019 = and i64 %386, 1
  %lcmp.mod1020.not = icmp eq i64 %xtraiter1019, 0
  br i1 %lcmp.mod1020.not, label %.prol.loopexit1018, label %.prol.preheader1017

.prol.preheader1017:                              ; preds = %.lr.ph484.us.us
  %387 = add i64 %.0498.us.us, 1
  %gep487.us.us.us.us.prol = getelementptr %struct.complex, ptr %invariant.gep486.us.us, i64 %spec.select460.us.us
  %388 = getelementptr %struct.complex, ptr %7, i64 %.0498.us.us
  %389 = load <2 x float>, ptr %gep487.us.us.us.us.prol, align 4, !tbaa !10
  %390 = icmp eq i64 %spec.select460.us.us, %.5495.us.us
  %storemerge1008.prol = select i1 %390, <2 x float> <float -1.000000e+10, float -1.000000e+10>, <2 x float> %389
  store <2 x float> %storemerge1008.prol, ptr %388, align 4, !tbaa !10
  %391 = add nuw nsw i64 %spec.select460.us.us, 1
  br label %.prol.loopexit1018

.prol.loopexit1018:                               ; preds = %.prol.preheader1017, %.lr.ph484.us.us
  %.1482.us.us.us.us.unr = phi i64 [ %.0498.us.us, %.lr.ph484.us.us ], [ %387, %.prol.preheader1017 ]
  %.9481.us.us.us.us.unr = phi i64 [ %spec.select460.us.us, %.lr.ph484.us.us ], [ %391, %.prol.preheader1017 ]
  %392 = icmp eq i64 %spec.select461.us.us, %spec.select460.us.us
  br i1 %392, label %._crit_edge485.split.us.us.split.us.us, label %.lr.ph484.us.us.new

.lr.ph484.us.us.new:                              ; preds = %.prol.loopexit1018, %.lr.ph484.us.us.new
  %.1482.us.us.us.us = phi i64 [ %397, %.lr.ph484.us.us.new ], [ %.1482.us.us.us.us.unr, %.prol.loopexit1018 ]
  %.9481.us.us.us.us = phi i64 [ %400, %.lr.ph484.us.us.new ], [ %.9481.us.us.us.us.unr, %.prol.loopexit1018 ]
  %gep487.us.us.us.us = getelementptr %struct.complex, ptr %invariant.gep486.us.us, i64 %.9481.us.us.us.us
  %393 = getelementptr %struct.complex, ptr %7, i64 %.1482.us.us.us.us
  %394 = load <2 x float>, ptr %gep487.us.us.us.us, align 4, !tbaa !10
  %395 = icmp eq i64 %.9481.us.us.us.us, %.5495.us.us
  %storemerge1008 = select i1 %395, <2 x float> <float -1.000000e+10, float -1.000000e+10>, <2 x float> %394
  store <2 x float> %storemerge1008, ptr %393, align 4, !tbaa !10
  %396 = add nuw nsw i64 %.9481.us.us.us.us, 1
  %397 = add i64 %.1482.us.us.us.us, 2
  %gep487.us.us.us.us.1 = getelementptr %struct.complex, ptr %invariant.gep486.us.us, i64 %396
  %gep1049 = getelementptr %struct.complex, ptr %invariant.gep1048, i64 %.1482.us.us.us.us
  %398 = load <2 x float>, ptr %gep487.us.us.us.us.1, align 4, !tbaa !10
  %399 = icmp eq i64 %396, %.5495.us.us
  %storemerge1008.1 = select i1 %399, <2 x float> <float -1.000000e+10, float -1.000000e+10>, <2 x float> %398
  store <2 x float> %storemerge1008.1, ptr %gep1049, align 4, !tbaa !10
  %400 = add nuw nsw i64 %.9481.us.us.us.us, 2
  %exitcond639.not.1 = icmp eq i64 %397, %385
  br i1 %exitcond639.not.1, label %._crit_edge485.split.us.us.split.us.us, label %.lr.ph484.us.us.new, !llvm.loop !52

.lr.ph500.split.us.split:                         ; preds = %.lr.ph500.split.us.split.preheader, %._crit_edge485.split.us.us.split
  %indvar712 = phi i64 [ 0, %.lr.ph500.split.us.split.preheader ], [ %indvar.next713, %._crit_edge485.split.us.us.split ]
  %.0498.us = phi i64 [ 0, %.lr.ph500.split.us.split.preheader ], [ %.1.lcssa.us, %._crit_edge485.split.us.us.split ]
  %.5495.us = phi i64 [ 1, %.lr.ph500.split.us.split.preheader ], [ %402, %._crit_edge485.split.us.us.split ]
  %401 = mul i64 %380, %indvar712
  %gep1047 = getelementptr i8, ptr %invariant.gep1046, i64 %401
  %scevgep716 = getelementptr i8, ptr %5, i64 %401
  %spec.select460.us = select i1 %31, i64 1, i64 %.5495.us
  %spec.select461.us = select i1 %31, i64 %.5495.us, i64 %379
  %.not430480.us = icmp sgt i64 %spec.select460.us, %spec.select461.us
  br i1 %.not430480.us, label %._crit_edge485.split.us.us.split, label %.lr.ph484.us

._crit_edge485.split.us.us.split:                 ; preds = %scalar.ph722, %middle.block721, %.lr.ph500.split.us.split
  %.1.lcssa.us = phi i64 [ %.0498.us, %.lr.ph500.split.us.split ], [ %406, %middle.block721 ], [ %406, %scalar.ph722 ]
  %402 = add nuw i64 %.5495.us, 1
  %exitcond638.not = icmp eq i64 %.5495.us, %379
  %indvar.next713 = add i64 %indvar712, 1
  br i1 %exitcond638.not, label %.loopexit, label %.lr.ph500.split.us.split, !llvm.loop !51

.lr.ph484.us:                                     ; preds = %.lr.ph500.split.us.split
  %403 = mul nsw i64 %.5495.us, %19
  %invariant.gep486.us = getelementptr %struct.complex, ptr %21, i64 %403
  %404 = add i64 %spec.select461.us, 1
  %405 = add i64 %404, %.0498.us
  %406 = sub i64 %405, %spec.select460.us
  %407 = sub i64 %404, %spec.select460.us
  %min.iters.check723 = icmp ult i64 %407, 18
  br i1 %min.iters.check723, label %scalar.ph722.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph484.us
  %408 = sub i64 %spec.select461.us, %spec.select460.us
  %409 = shl i64 %.0498.us, 3
  %scevgep702 = getelementptr i8, ptr %7, i64 %409
  %mul.result = shl i64 %408, 3
  %410 = getelementptr i8, ptr %scevgep702, i64 %mul.result
  %411 = icmp ult ptr %410, %scevgep702
  %scevgep704 = getelementptr i8, ptr %scevgep703, i64 %409
  %mul.result706 = shl i64 %408, 3
  %mul.overflow707 = icmp ugt i64 %408, 2305843009213693951
  %412 = getelementptr i8, ptr %scevgep704, i64 %mul.result706
  %413 = icmp ult ptr %412, %scevgep704
  %414 = or i1 %413, %mul.overflow707
  %415 = or i1 %411, %414
  br i1 %415, label %scalar.ph722.preheader, label %vector.memcheck708

vector.memcheck708:                               ; preds = %vector.scevcheck
  %416 = shl i64 %.0498.us, 3
  %scevgep709 = getelementptr i8, ptr %7, i64 %416
  %417 = shl i64 %spec.select461.us, 3
  %418 = add i64 %417, %416
  %419 = shl i64 %spec.select460.us, 3
  %420 = sub i64 %418, %419
  %scevgep711 = getelementptr i8, ptr %scevgep710, i64 %420
  %scevgep715 = getelementptr i8, ptr %gep1047, i64 %419
  %scevgep717 = getelementptr i8, ptr %scevgep716, i64 %417
  %bound0718 = icmp ult ptr %scevgep709, %scevgep717
  %bound1719 = icmp ult ptr %scevgep715, %scevgep711
  %found.conflict720 = and i1 %bound0718, %bound1719
  br i1 %found.conflict720, label %scalar.ph722.preheader, label %vector.ph724

vector.ph724:                                     ; preds = %vector.memcheck708
  %n.vec726 = and i64 %407, -2
  %ind.end727 = add i64 %.0498.us, %n.vec726
  %ind.end729 = add i64 %spec.select460.us, %n.vec726
  %.splatinsert = insertelement <2 x i64> poison, i64 %spec.select460.us, i64 0
  %.splat = shufflevector <2 x i64> %.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
  %induction = add <2 x i64> %.splat, <i64 0, i64 1>
  %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.5495.us, i64 0
  %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
  %421 = getelementptr %struct.complex, ptr %invariant.gep486.us, i64 %spec.select460.us
  %422 = getelementptr %struct.complex, ptr %7, i64 %.0498.us
  br label %vector.body731

vector.body731:                                   ; preds = %vector.body731, %vector.ph724
  %index732 = phi i64 [ 0, %vector.ph724 ], [ %index.next739, %vector.body731 ]
  %vec.ind = phi <2 x i64> [ %induction, %vector.ph724 ], [ %vec.ind.next, %vector.body731 ]
  %423 = getelementptr %struct.complex, ptr %421, i64 %index732
  %wide.vec735 = load <4 x float>, ptr %423, align 4, !tbaa !10
  %strided.vec736 = shufflevector <4 x float> %wide.vec735, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec737 = shufflevector <4 x float> %wide.vec735, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %424 = icmp eq <2 x i64> %vec.ind, %broadcast.splat
  %425 = select <2 x i1> %424, <2 x float> <float -1.000000e+10, float -1.000000e+10>, <2 x float> %strided.vec737
  %426 = getelementptr %struct.complex, ptr %422, i64 %index732
  %interleaved.vec738 = shufflevector <2 x float> %strided.vec736, <2 x float> %425, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec738, ptr %426, align 4
  %index.next739 = add nuw i64 %index732, 2
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %427 = icmp eq i64 %index.next739, %n.vec726
  br i1 %427, label %middle.block721, label %vector.body731, !llvm.loop !53

middle.block721:                                  ; preds = %vector.body731
  %cmp.n740 = icmp eq i64 %407, %n.vec726
  br i1 %cmp.n740, label %._crit_edge485.split.us.us.split, label %scalar.ph722.preheader

scalar.ph722.preheader:                           ; preds = %middle.block721, %vector.memcheck708, %vector.scevcheck, %.lr.ph484.us
  %.1482.us.us.ph = phi i64 [ %.0498.us, %vector.memcheck708 ], [ %.0498.us, %vector.scevcheck ], [ %.0498.us, %.lr.ph484.us ], [ %ind.end727, %middle.block721 ]
  %.9481.us.us.ph = phi i64 [ %spec.select460.us, %vector.memcheck708 ], [ %spec.select460.us, %vector.scevcheck ], [ %spec.select460.us, %.lr.ph484.us ], [ %ind.end729, %middle.block721 ]
  br label %scalar.ph722

scalar.ph722:                                     ; preds = %scalar.ph722.preheader, %scalar.ph722
  %.1482.us.us = phi i64 [ %428, %scalar.ph722 ], [ %.1482.us.us.ph, %scalar.ph722.preheader ]
  %.9481.us.us = phi i64 [ %435, %scalar.ph722 ], [ %.9481.us.us.ph, %scalar.ph722.preheader ]
  %428 = add i64 %.1482.us.us, 1
  %gep487.us.us = getelementptr %struct.complex, ptr %invariant.gep486.us, i64 %.9481.us.us
  %429 = load float, ptr %gep487.us.us, align 4, !tbaa !14
  %430 = getelementptr %struct.complex, ptr %7, i64 %.1482.us.us
  store float %429, ptr %430, align 4, !tbaa !14
  %431 = getelementptr inbounds i8, ptr %gep487.us.us, i64 4
  %432 = load float, ptr %431, align 4, !tbaa !16
  %433 = getelementptr inbounds i8, ptr %430, i64 4
  %434 = icmp eq i64 %.9481.us.us, %.5495.us
  %spec.store.select = select i1 %434, float -1.000000e+10, float %432
  store float %spec.store.select, ptr %433, align 4
  %435 = add nuw nsw i64 %.9481.us.us, 1
  %exitcond637.not = icmp eq i64 %428, %406
  br i1 %exitcond637.not, label %._crit_edge485.split.us.us.split, label %scalar.ph722, !llvm.loop !54

.lr.ph500.split:                                  ; preds = %.lr.ph500
  br i1 %.fr, label %.lr.ph500.split.split.us.preheader, label %.lr.ph500.split.split.preheader

.lr.ph500.split.split.us.preheader:               ; preds = %.lr.ph500.split
  %invariant.gep1044 = getelementptr i8, ptr %7, i64 8
  br label %.lr.ph500.split.split.us

.lr.ph500.split.split.preheader:                  ; preds = %.lr.ph500.split
  %scevgep678 = getelementptr i8, ptr %7, i64 4
  %436 = shl i64 %19, 3
  %scevgep684 = getelementptr i8, ptr %7, i64 4
  %scevgep686 = getelementptr i8, ptr %7, i64 8
  %invariant.gep1040 = getelementptr i8, ptr %5, i64 -8
  %invariant.gep1042 = getelementptr i8, ptr %5, i64 -4
  %invariant.gep1038 = getelementptr i8, ptr %7, i64 16
  br label %.lr.ph500.split.split

.lr.ph500.split.split.us:                         ; preds = %.lr.ph500.split.split.us.preheader, %._crit_edge485.split.split.us.us
  %.0498.us501 = phi i64 [ %.1.lcssa.us506, %._crit_edge485.split.split.us.us ], [ 0, %.lr.ph500.split.split.us.preheader ]
  %.5495.us502 = phi i64 [ %437, %._crit_edge485.split.split.us.us ], [ 1, %.lr.ph500.split.split.us.preheader ]
  %spec.select460.us503 = select i1 %31, i64 1, i64 %.5495.us502
  %spec.select461.us504 = select i1 %31, i64 %.5495.us502, i64 %379
  %.not430480.us505 = icmp sgt i64 %spec.select460.us503, %spec.select461.us504
  br i1 %.not430480.us505, label %._crit_edge485.split.split.us.us, label %.lr.ph484.us508

._crit_edge485.split.split.us.us:                 ; preds = %.prol.loopexit, %.lr.ph484.us508.new, %.lr.ph500.split.split.us
  %.1.lcssa.us506 = phi i64 [ %.0498.us501, %.lr.ph500.split.split.us ], [ %441, %.lr.ph484.us508.new ], [ %441, %.prol.loopexit ]
  %437 = add nuw i64 %.5495.us502, 1
  %exitcond636.not = icmp eq i64 %.5495.us502, %379
  br i1 %exitcond636.not, label %.loopexit, label %.lr.ph500.split.split.us, !llvm.loop !51

.lr.ph484.us508:                                  ; preds = %.lr.ph500.split.split.us
  %438 = mul nsw i64 %.5495.us502, %19
  %invariant.gep486.us509 = getelementptr %struct.complex, ptr %21, i64 %438
  %439 = add i64 %spec.select461.us504, 1
  %440 = add i64 %439, %.0498.us501
  %441 = sub i64 %440, %spec.select460.us503
  %442 = sub i64 %439, %spec.select460.us503
  %xtraiter = and i64 %442, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph484.us508
  %443 = add i64 %.0498.us501, 1
  %gep487.us490.us.prol = getelementptr %struct.complex, ptr %invariant.gep486.us509, i64 %spec.select460.us503
  %444 = getelementptr %struct.complex, ptr %7, i64 %.0498.us501
  %445 = load <2 x float>, ptr %gep487.us490.us.prol, align 4, !tbaa !10
  %446 = icmp eq i64 %spec.select460.us503, %.5495.us502
  %storemerge.prol = select i1 %446, <2 x float> <float -1.000000e+10, float 1.000000e+10>, <2 x float> %445
  store <2 x float> %storemerge.prol, ptr %444, align 4, !tbaa !10
  %447 = add nuw nsw i64 %spec.select460.us503, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.preheader, %.lr.ph484.us508
  %.1482.us488.us.unr = phi i64 [ %.0498.us501, %.lr.ph484.us508 ], [ %443, %.prol.preheader ]
  %.9481.us489.us.unr = phi i64 [ %spec.select460.us503, %.lr.ph484.us508 ], [ %447, %.prol.preheader ]
  %448 = icmp eq i64 %spec.select461.us504, %spec.select460.us503
  br i1 %448, label %._crit_edge485.split.split.us.us, label %.lr.ph484.us508.new

.lr.ph484.us508.new:                              ; preds = %.prol.loopexit, %.lr.ph484.us508.new
  %.1482.us488.us = phi i64 [ %453, %.lr.ph484.us508.new ], [ %.1482.us488.us.unr, %.prol.loopexit ]
  %.9481.us489.us = phi i64 [ %456, %.lr.ph484.us508.new ], [ %.9481.us489.us.unr, %.prol.loopexit ]
  %gep487.us490.us = getelementptr %struct.complex, ptr %invariant.gep486.us509, i64 %.9481.us489.us
  %449 = getelementptr %struct.complex, ptr %7, i64 %.1482.us488.us
  %450 = load <2 x float>, ptr %gep487.us490.us, align 4, !tbaa !10
  %451 = icmp eq i64 %.9481.us489.us, %.5495.us502
  %storemerge = select i1 %451, <2 x float> <float -1.000000e+10, float 1.000000e+10>, <2 x float> %450
  store <2 x float> %storemerge, ptr %449, align 4, !tbaa !10
  %452 = add nuw nsw i64 %.9481.us489.us, 1
  %453 = add i64 %.1482.us488.us, 2
  %gep487.us490.us.1 = getelementptr %struct.complex, ptr %invariant.gep486.us509, i64 %452
  %gep1045 = getelementptr %struct.complex, ptr %invariant.gep1044, i64 %.1482.us488.us
  %454 = load <2 x float>, ptr %gep487.us490.us.1, align 4, !tbaa !10
  %455 = icmp eq i64 %452, %.5495.us502
  %storemerge.1 = select i1 %455, <2 x float> <float -1.000000e+10, float 1.000000e+10>, <2 x float> %454
  store <2 x float> %storemerge.1, ptr %gep1045, align 4, !tbaa !10
  %456 = add nuw nsw i64 %.9481.us489.us, 2
  %exitcond635.not.1 = icmp eq i64 %453, %441
  br i1 %exitcond635.not.1, label %._crit_edge485.split.split.us.us, label %.lr.ph484.us508.new, !llvm.loop !52

.lr.ph500.split.split:                            ; preds = %.lr.ph500.split.split.preheader, %._crit_edge485.split.split
  %indvar = phi i64 [ 0, %.lr.ph500.split.split.preheader ], [ %indvar.next, %._crit_edge485.split.split ]
  %.0498 = phi i64 [ 0, %.lr.ph500.split.split.preheader ], [ %.1.lcssa, %._crit_edge485.split.split ]
  %.5495 = phi i64 [ 1, %.lr.ph500.split.split.preheader ], [ %475, %._crit_edge485.split.split ]
  %457 = mul i64 %436, %indvar
  %gep1041 = getelementptr i8, ptr %invariant.gep1040, i64 %457
  %gep1043 = getelementptr i8, ptr %invariant.gep1042, i64 %457
  %scevgep689 = getelementptr i8, ptr %5, i64 %457
  %spec.select460 = select i1 %31, i64 1, i64 %.5495
  %spec.select461 = select i1 %31, i64 %.5495, i64 %379
  %.not430480 = icmp sgt i64 %spec.select460, %spec.select461
  br i1 %.not430480, label %._crit_edge485.split.split, label %.lr.ph484

.lr.ph484:                                        ; preds = %.lr.ph500.split.split
  %458 = mul nsw i64 %.5495, %19
  %invariant.gep486 = getelementptr %struct.complex, ptr %21, i64 %458
  %459 = add i64 %spec.select461, 1
  %460 = add i64 %459, %.0498
  %461 = sub i64 %460, %spec.select460
  %462 = sub i64 %459, %spec.select460
  %min.iters.check = icmp ult i64 %462, 10
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph484
  %463 = shl i64 %.0498, 3
  %scevgep = getelementptr i8, ptr %7, i64 %463
  %464 = shl i64 %spec.select461, 3
  %465 = add i64 %464, %463
  %466 = shl i64 %spec.select460, 3
  %467 = sub i64 %465, %466
  %scevgep679 = getelementptr i8, ptr %scevgep678, i64 %467
  %scevgep681 = getelementptr i8, ptr %gep1041, i64 %466
  %scevgep683 = getelementptr i8, ptr %gep1043, i64 %464
  %scevgep685 = getelementptr i8, ptr %scevgep684, i64 %463
  %scevgep687 = getelementptr i8, ptr %scevgep686, i64 %467
  %scevgep688 = getelementptr i8, ptr %gep1043, i64 %466
  %scevgep690 = getelementptr i8, ptr %scevgep689, i64 %464
  %bound0 = icmp ult ptr %scevgep, %scevgep683
  %bound1 = icmp ult ptr %scevgep681, %scevgep679
  %found.conflict = and i1 %bound0, %bound1
  %bound0691 = icmp ult ptr %scevgep685, %scevgep690
  %bound1692 = icmp ult ptr %scevgep688, %scevgep687
  %found.conflict693 = and i1 %bound0691, %bound1692
  %conflict.rdx = or i1 %found.conflict, %found.conflict693
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %462, -4
  %ind.end = add i64 %.0498, %n.vec
  %ind.end694 = add i64 %spec.select460, %n.vec
  %invariant.gep1037 = getelementptr i8, ptr %invariant.gep486, i64 16
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %.0498, %index
  %offset.idx696 = add i64 %spec.select460, %index
  %468 = getelementptr %struct.complex, ptr %invariant.gep486, i64 %offset.idx696
  %gep = getelementptr %struct.complex, ptr %invariant.gep1037, i64 %offset.idx696
  %wide.vec = load <4 x float>, ptr %468, align 4, !tbaa !10
  %wide.vec697 = load <4 x float>, ptr %gep, align 4, !tbaa !10
  %469 = getelementptr %struct.complex, ptr %7, i64 %offset.idx
  %gep1039 = getelementptr %struct.complex, ptr %invariant.gep1038, i64 %offset.idx
  store <4 x float> %wide.vec, ptr %469, align 4, !tbaa !10
  store <4 x float> %wide.vec697, ptr %gep1039, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 4
  %470 = icmp eq i64 %index.next, %n.vec
  br i1 %470, label %middle.block, label %vector.body, !llvm.loop !55

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %462, %n.vec
  br i1 %cmp.n, label %._crit_edge485.split.split, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph484
  %.1482.ph = phi i64 [ %.0498, %vector.memcheck ], [ %.0498, %.lr.ph484 ], [ %ind.end, %middle.block ]
  %.9481.ph = phi i64 [ %spec.select460, %vector.memcheck ], [ %spec.select460, %.lr.ph484 ], [ %ind.end694, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.1482 = phi i64 [ %471, %scalar.ph ], [ %.1482.ph, %scalar.ph.preheader ]
  %.9481 = phi i64 [ %474, %scalar.ph ], [ %.9481.ph, %scalar.ph.preheader ]
  %471 = add i64 %.1482, 1
  %gep487 = getelementptr %struct.complex, ptr %invariant.gep486, i64 %.9481
  %472 = getelementptr %struct.complex, ptr %7, i64 %.1482
  %473 = load <2 x float>, ptr %gep487, align 4, !tbaa !10
  store <2 x float> %473, ptr %472, align 4, !tbaa !10
  %474 = add nuw nsw i64 %.9481, 1
  %exitcond633.not = icmp eq i64 %471, %461
  br i1 %exitcond633.not, label %._crit_edge485.split.split, label %scalar.ph, !llvm.loop !56

._crit_edge485.split.split:                       ; preds = %scalar.ph, %middle.block, %.lr.ph500.split.split
  %.1.lcssa = phi i64 [ %.0498, %.lr.ph500.split.split ], [ %461, %middle.block ], [ %461, %scalar.ph ]
  %475 = add nuw i64 %.5495, 1
  %exitcond634.not = icmp eq i64 %.5495, %379
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond634.not, label %.loopexit, label %.lr.ph500.split.split, !llvm.loop !51

.loopexit:                                        ; preds = %._crit_edge485.split.split, %._crit_edge485.split.split.us.us, %._crit_edge485.split.us.us.split, %._crit_edge485.split.us.us.split.us.us, %370, %290, %._crit_edge588, %._crit_edge610, %378, %298, %235, %163, %106, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  ret i32 0
}

declare void @r_cnjg(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @cbeg_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 #2 = { 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !11, i64 0}
!15 = !{!"", !11, i64 0, !11, i64 4}
!16 = !{!15, !11, i64 4}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.unroll.disable"}
!23 = distinct !{!23, !13, !19}
!24 = distinct !{!24, !13, !19, !20}
!25 = distinct !{!25, !13, !20, !19}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13, !19, !20}
!28 = distinct !{!28, !13, !20, !19}
!29 = distinct !{!29, !13, !19, !20}
!30 = distinct !{!30, !22}
!31 = distinct !{!31, !13, !19}
!32 = distinct !{!32, !13, !19, !20}
!33 = distinct !{!33, !13, !20, !19}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13, !19, !20}
!36 = distinct !{!36, !22}
!37 = distinct !{!37, !13, !19, !20}
!38 = distinct !{!38, !13, !20, !19}
!39 = distinct !{!39, !13, !19}
!40 = distinct !{!40, !13, !19, !20}
!41 = distinct !{!41, !13, !20, !19}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13, !19, !20}
!44 = distinct !{!44, !22}
!45 = distinct !{!45, !13, !19, !20}
!46 = distinct !{!46, !13, !20, !19}
!47 = distinct !{!47, !13, !19}
!48 = distinct !{!48, !13, !19, !20}
!49 = distinct !{!49, !13, !20, !19}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13, !19, !20}
!54 = distinct !{!54, !13, !19}
!55 = distinct !{!55, !13, !19, !20}
!56 = distinct !{!56, !13, !19}


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