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

; 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.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = 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, i64 noundef %11, i64 noundef %12, i64 noundef %13) #2 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, 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 float, align 4
  %36 = alloca %struct.complex, align 4
  %37 = alloca %struct.complex, align 4
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %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
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store i64 %11, ptr %26, align 8, !tbaa !9
  store i64 %12, ptr %27, align 8, !tbaa !9
  store i64 %13, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  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 4, 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 8, 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
  %50 = load ptr, ptr %21, align 8, !tbaa !5
  %51 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %51, ptr %29, align 8, !tbaa !9
  %52 = load i64, ptr %29, align 8, !tbaa !9
  %53 = add nsw i64 1, %52
  store i64 %53, ptr %30, align 8, !tbaa !9
  %54 = load i64, ptr %30, align 8, !tbaa !9
  %55 = load ptr, ptr %20, align 8, !tbaa !5
  %56 = sub i64 0, %54
  %57 = getelementptr inbounds %struct.complex, ptr %55, i64 %56
  store ptr %57, ptr %20, align 8, !tbaa !5
  %58 = load ptr, ptr %22, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.complex, ptr %58, i32 -1
  store ptr %59, ptr %22, align 8, !tbaa !5
  %60 = load ptr, ptr %15, align 8, !tbaa !5
  %61 = call i64 @s_cmp(ptr noundef %60, ptr noundef @.str.4, i64 noundef 2, i64 noundef 2)
  %62 = icmp eq i64 %61, 0
  %63 = zext i1 %62 to i32
  %64 = sext i32 %63 to i64
  store i64 %64, ptr %41, align 8, !tbaa !9
  %65 = load ptr, ptr %15, align 8, !tbaa !5
  %66 = call i64 @s_cmp(ptr noundef %65, ptr noundef @.str.6, i64 noundef 2, i64 noundef 2)
  %67 = icmp eq i64 %66, 0
  %68 = zext i1 %67 to i32
  %69 = sext i32 %68 to i64
  store i64 %69, ptr %42, align 8, !tbaa !9
  %70 = load ptr, ptr %15, align 8, !tbaa !5
  %71 = call i64 @s_cmp(ptr noundef %70, ptr noundef @.str.16, i64 noundef 2, i64 noundef 2)
  %72 = icmp eq i64 %71, 0
  %73 = zext i1 %72 to i32
  %74 = sext i32 %73 to i64
  store i64 %74, ptr %44, align 8, !tbaa !9
  %75 = load ptr, ptr %15, align 8, !tbaa !5
  %76 = call i64 @s_cmp(ptr noundef %75, ptr noundef @.str.7, i64 noundef 2, i64 noundef 2)
  %77 = icmp eq i64 %76, 0
  %78 = zext i1 %77 to i32
  %79 = sext i32 %78 to i64
  store i64 %79, ptr %43, align 8, !tbaa !9
  %80 = load i64, ptr %42, align 8, !tbaa !9
  %81 = icmp ne i64 %80, 0
  br i1 %81, label %88, label %82

82:                                               ; preds = %14
  %83 = load i64, ptr %44, align 8, !tbaa !9
  %84 = icmp ne i64 %83, 0
  br i1 %84, label %88, label %85

85:                                               ; preds = %82
  %86 = load i64, ptr %43, align 8, !tbaa !9
  %87 = icmp ne i64 %86, 0
  br i1 %87, label %88, label %93

88:                                               ; preds = %85, %82, %14
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = zext i8 %90 to i32
  %92 = icmp eq i32 %91, 85
  br label %93

93:                                               ; preds = %88, %85
  %94 = phi i1 [ false, %85 ], [ %92, %88 ]
  %95 = zext i1 %94 to i32
  %96 = sext i32 %95 to i64
  store i64 %96, ptr %49, align 8, !tbaa !9
  %97 = load i64, ptr %42, align 8, !tbaa !9
  %98 = icmp ne i64 %97, 0
  br i1 %98, label %105, label %99

99:                                               ; preds = %93
  %100 = load i64, ptr %44, align 8, !tbaa !9
  %101 = icmp ne i64 %100, 0
  br i1 %101, label %105, label %102

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

105:                                              ; preds = %102, %99, %93
  %106 = load ptr, ptr %16, 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 %48, align 8, !tbaa !9
  %114 = load i64, ptr %43, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %116, label %121

116:                                              ; preds = %110
  %117 = load ptr, ptr %17, 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 %47, align 8, !tbaa !9
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  store i64 %126, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %127

127:                                              ; preds = %392, %121
  %128 = load i64, ptr %39, align 8, !tbaa !9
  %129 = load i64, ptr %31, align 8, !tbaa !9
  %130 = icmp sle i64 %128, %129
  br i1 %130, label %131, label %395

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

134:                                              ; preds = %297, %131
  %135 = load i64, ptr %38, align 8, !tbaa !9
  %136 = load i64, ptr %32, align 8, !tbaa !9
  %137 = icmp sle i64 %135, %136
  br i1 %137, label %138, label %300

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

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

144:                                              ; preds = %141
  %145 = load i64, ptr %38, align 8, !tbaa !9
  %146 = load i64, ptr %39, 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 %48, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %296

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

155:                                              ; preds = %151, %144, %138
  %156 = load i64, ptr %38, align 8, !tbaa !9
  %157 = load i64, ptr %39, align 8, !tbaa !9
  %158 = load i64, ptr %29, align 8, !tbaa !9
  %159 = mul nsw i64 %157, %158
  %160 = add nsw i64 %156, %159
  store i64 %160, ptr %33, align 8, !tbaa !9
  %161 = load ptr, ptr %24, align 8, !tbaa !5
  call void @cbeg_(ptr noundef %37, ptr noundef %161)
  %162 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %163 = load float, ptr %162, align 4, !tbaa !12
  %164 = load ptr, ptr %25, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.complex, ptr %164, i32 0, i32 0
  %166 = load float, ptr %165, align 4, !tbaa !12
  %167 = fadd float %163, %166
  %168 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %167, ptr %168, align 4, !tbaa !12
  %169 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %170 = load float, ptr %169, align 4, !tbaa !15
  %171 = load ptr, ptr %25, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.complex, ptr %171, i32 0, i32 1
  %173 = load float, ptr %172, align 4, !tbaa !15
  %174 = fadd float %170, %173
  %175 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %174, ptr %175, align 4, !tbaa !15
  %176 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %177 = load float, ptr %176, align 4, !tbaa !12
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load i64, ptr %33, align 8, !tbaa !9
  %180 = getelementptr inbounds %struct.complex, ptr %178, i64 %179
  %181 = getelementptr inbounds %struct.complex, ptr %180, i32 0, i32 0
  store float %177, ptr %181, align 4, !tbaa !12
  %182 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %183 = load float, ptr %182, align 4, !tbaa !15
  %184 = load ptr, ptr %20, align 8, !tbaa !5
  %185 = load i64, ptr %33, align 8, !tbaa !9
  %186 = getelementptr inbounds %struct.complex, ptr %184, i64 %185
  %187 = getelementptr inbounds %struct.complex, ptr %186, i32 0, i32 1
  store float %183, ptr %187, align 4, !tbaa !15
  %188 = load i64, ptr %38, align 8, !tbaa !9
  %189 = load i64, ptr %39, align 8, !tbaa !9
  %190 = icmp ne i64 %188, %189
  br i1 %190, label %191, label %295

191:                                              ; preds = %155
  %192 = load ptr, ptr %19, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sgt i64 %193, 3
  br i1 %194, label %195, label %215

195:                                              ; preds = %191
  %196 = load i64, ptr %39, align 8, !tbaa !9
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = sdiv i64 %198, 2
  %200 = icmp eq i64 %196, %199
  br i1 %200, label %201, label %215

201:                                              ; preds = %195
  %202 = load i64, ptr %38, align 8, !tbaa !9
  %203 = load i64, ptr %39, align 8, !tbaa !9
  %204 = load i64, ptr %29, align 8, !tbaa !9
  %205 = mul nsw i64 %203, %204
  %206 = add nsw i64 %202, %205
  store i64 %206, ptr %33, align 8, !tbaa !9
  %207 = load ptr, ptr %20, align 8, !tbaa !5
  %208 = load i64, ptr %33, align 8, !tbaa !9
  %209 = getelementptr inbounds %struct.complex, ptr %207, i64 %208
  %210 = getelementptr inbounds %struct.complex, ptr %209, i32 0, i32 0
  store float 0.000000e+00, ptr %210, align 4, !tbaa !12
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load i64, ptr %33, align 8, !tbaa !9
  %213 = getelementptr inbounds %struct.complex, ptr %211, i64 %212
  %214 = getelementptr inbounds %struct.complex, ptr %213, i32 0, i32 1
  store float 0.000000e+00, ptr %214, align 4, !tbaa !15
  br label %215

215:                                              ; preds = %201, %195, %191
  %216 = load i64, ptr %42, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %243

218:                                              ; preds = %215
  %219 = load i64, ptr %39, align 8, !tbaa !9
  %220 = load i64, ptr %38, align 8, !tbaa !9
  %221 = load i64, ptr %29, align 8, !tbaa !9
  %222 = mul nsw i64 %220, %221
  %223 = add nsw i64 %219, %222
  store i64 %223, ptr %33, align 8, !tbaa !9
  %224 = load ptr, ptr %20, align 8, !tbaa !5
  %225 = load i64, ptr %38, align 8, !tbaa !9
  %226 = load i64, ptr %39, align 8, !tbaa !9
  %227 = load i64, ptr %29, align 8, !tbaa !9
  %228 = mul nsw i64 %226, %227
  %229 = add nsw i64 %225, %228
  %230 = getelementptr inbounds %struct.complex, ptr %224, i64 %229
  call void @r_cnjg(ptr noundef %36, ptr noundef %230)
  %231 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %232 = load float, ptr %231, align 4, !tbaa !12
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = load i64, ptr %33, align 8, !tbaa !9
  %235 = getelementptr inbounds %struct.complex, ptr %233, i64 %234
  %236 = getelementptr inbounds %struct.complex, ptr %235, i32 0, i32 0
  store float %232, ptr %236, align 4, !tbaa !12
  %237 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %238 = load float, ptr %237, align 4, !tbaa !15
  %239 = load ptr, ptr %20, align 8, !tbaa !5
  %240 = load i64, ptr %33, align 8, !tbaa !9
  %241 = getelementptr inbounds %struct.complex, ptr %239, i64 %240
  %242 = getelementptr inbounds %struct.complex, ptr %241, i32 0, i32 1
  store float %238, ptr %242, align 4, !tbaa !15
  br label %294

243:                                              ; preds = %215
  %244 = load i64, ptr %44, align 8, !tbaa !9
  %245 = icmp ne i64 %244, 0
  br i1 %245, label %246, label %275

246:                                              ; preds = %243
  %247 = load i64, ptr %39, align 8, !tbaa !9
  %248 = load i64, ptr %38, align 8, !tbaa !9
  %249 = load i64, ptr %29, align 8, !tbaa !9
  %250 = mul nsw i64 %248, %249
  %251 = add nsw i64 %247, %250
  store i64 %251, ptr %33, align 8, !tbaa !9
  %252 = load i64, ptr %38, align 8, !tbaa !9
  %253 = load i64, ptr %39, align 8, !tbaa !9
  %254 = load i64, ptr %29, align 8, !tbaa !9
  %255 = mul nsw i64 %253, %254
  %256 = add nsw i64 %252, %255
  store i64 %256, ptr %34, align 8, !tbaa !9
  %257 = load ptr, ptr %20, align 8, !tbaa !5
  %258 = load i64, ptr %34, align 8, !tbaa !9
  %259 = getelementptr inbounds %struct.complex, ptr %257, i64 %258
  %260 = getelementptr inbounds %struct.complex, ptr %259, i32 0, i32 0
  %261 = load float, ptr %260, align 4, !tbaa !12
  %262 = load ptr, ptr %20, align 8, !tbaa !5
  %263 = load i64, ptr %33, align 8, !tbaa !9
  %264 = getelementptr inbounds %struct.complex, ptr %262, i64 %263
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 0
  store float %261, ptr %265, align 4, !tbaa !12
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  %267 = load i64, ptr %34, align 8, !tbaa !9
  %268 = getelementptr inbounds %struct.complex, ptr %266, i64 %267
  %269 = getelementptr inbounds %struct.complex, ptr %268, i32 0, i32 1
  %270 = load float, ptr %269, align 4, !tbaa !15
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = load i64, ptr %33, align 8, !tbaa !9
  %273 = getelementptr inbounds %struct.complex, ptr %271, i64 %272
  %274 = getelementptr inbounds %struct.complex, ptr %273, i32 0, i32 1
  store float %270, ptr %274, align 4, !tbaa !15
  br label %293

275:                                              ; preds = %243
  %276 = load i64, ptr %43, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %292

278:                                              ; preds = %275
  %279 = load i64, ptr %39, align 8, !tbaa !9
  %280 = load i64, ptr %38, align 8, !tbaa !9
  %281 = load i64, ptr %29, align 8, !tbaa !9
  %282 = mul nsw i64 %280, %281
  %283 = add nsw i64 %279, %282
  store i64 %283, ptr %33, align 8, !tbaa !9
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = load i64, ptr %33, align 8, !tbaa !9
  %286 = getelementptr inbounds %struct.complex, ptr %284, i64 %285
  %287 = getelementptr inbounds %struct.complex, ptr %286, i32 0, i32 0
  store float 0.000000e+00, ptr %287, align 4, !tbaa !12
  %288 = load ptr, ptr %20, align 8, !tbaa !5
  %289 = load i64, ptr %33, align 8, !tbaa !9
  %290 = getelementptr inbounds %struct.complex, ptr %288, i64 %289
  %291 = getelementptr inbounds %struct.complex, ptr %290, i32 0, i32 1
  store float 0.000000e+00, ptr %291, align 4, !tbaa !15
  br label %292

292:                                              ; preds = %278, %275
  br label %293

293:                                              ; preds = %292, %246
  br label %294

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

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

296:                                              ; preds = %295, %151, %148
  br label %297

297:                                              ; preds = %296
  %298 = load i64, ptr %38, align 8, !tbaa !9
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %38, align 8, !tbaa !9
  br label %134, !llvm.loop !16

300:                                              ; preds = %134
  %301 = load i64, ptr %42, align 8, !tbaa !9
  %302 = icmp ne i64 %301, 0
  br i1 %302, label %303, label %334

303:                                              ; preds = %300
  %304 = load i64, ptr %39, align 8, !tbaa !9
  %305 = load i64, ptr %39, align 8, !tbaa !9
  %306 = load i64, ptr %29, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %304, %307
  store i64 %308, ptr %32, align 8, !tbaa !9
  %309 = load i64, ptr %39, align 8, !tbaa !9
  %310 = load i64, ptr %39, align 8, !tbaa !9
  %311 = load i64, ptr %29, align 8, !tbaa !9
  %312 = mul nsw i64 %310, %311
  %313 = add nsw i64 %309, %312
  store i64 %313, ptr %33, align 8, !tbaa !9
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load i64, ptr %33, align 8, !tbaa !9
  %316 = getelementptr inbounds %struct.complex, ptr %314, i64 %315
  %317 = getelementptr inbounds %struct.complex, ptr %316, i32 0, i32 0
  %318 = load float, ptr %317, align 4, !tbaa !12
  store float %318, ptr %35, align 4, !tbaa !18
  %319 = load float, ptr %35, align 4, !tbaa !18
  %320 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %319, ptr %320, align 4, !tbaa !12
  %321 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float 0.000000e+00, ptr %321, align 4, !tbaa !15
  %322 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %323 = load float, ptr %322, align 4, !tbaa !12
  %324 = load ptr, ptr %20, align 8, !tbaa !5
  %325 = load i64, ptr %32, align 8, !tbaa !9
  %326 = getelementptr inbounds %struct.complex, ptr %324, i64 %325
  %327 = getelementptr inbounds %struct.complex, ptr %326, i32 0, i32 0
  store float %323, ptr %327, align 4, !tbaa !12
  %328 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %329 = load float, ptr %328, align 4, !tbaa !15
  %330 = load ptr, ptr %20, align 8, !tbaa !5
  %331 = load i64, ptr %32, align 8, !tbaa !9
  %332 = getelementptr inbounds %struct.complex, ptr %330, i64 %331
  %333 = getelementptr inbounds %struct.complex, ptr %332, i32 0, i32 1
  store float %329, ptr %333, align 4, !tbaa !15
  br label %334

334:                                              ; preds = %303, %300
  %335 = load i64, ptr %43, align 8, !tbaa !9
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %337, label %374

337:                                              ; preds = %334
  %338 = load i64, ptr %39, align 8, !tbaa !9
  %339 = load i64, ptr %39, align 8, !tbaa !9
  %340 = load i64, ptr %29, align 8, !tbaa !9
  %341 = mul nsw i64 %339, %340
  %342 = add nsw i64 %338, %341
  store i64 %342, ptr %32, align 8, !tbaa !9
  %343 = load i64, ptr %39, align 8, !tbaa !9
  %344 = load i64, ptr %39, align 8, !tbaa !9
  %345 = load i64, ptr %29, align 8, !tbaa !9
  %346 = mul nsw i64 %344, %345
  %347 = add nsw i64 %343, %346
  store i64 %347, ptr %33, align 8, !tbaa !9
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load i64, ptr %33, align 8, !tbaa !9
  %350 = getelementptr inbounds %struct.complex, ptr %348, i64 %349
  %351 = getelementptr inbounds %struct.complex, ptr %350, i32 0, i32 0
  %352 = load float, ptr %351, align 4, !tbaa !12
  %353 = fadd float %352, 1.000000e+00
  %354 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %353, ptr %354, align 4, !tbaa !12
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = load i64, ptr %33, align 8, !tbaa !9
  %357 = getelementptr inbounds %struct.complex, ptr %355, i64 %356
  %358 = getelementptr inbounds %struct.complex, ptr %357, i32 0, i32 1
  %359 = load float, ptr %358, align 4, !tbaa !15
  %360 = fadd float %359, 0.000000e+00
  %361 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %360, ptr %361, align 4, !tbaa !15
  %362 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %363 = load float, ptr %362, align 4, !tbaa !12
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = load i64, ptr %32, align 8, !tbaa !9
  %366 = getelementptr inbounds %struct.complex, ptr %364, i64 %365
  %367 = getelementptr inbounds %struct.complex, ptr %366, i32 0, i32 0
  store float %363, ptr %367, align 4, !tbaa !12
  %368 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %369 = load float, ptr %368, align 4, !tbaa !15
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = load i64, ptr %32, align 8, !tbaa !9
  %372 = getelementptr inbounds %struct.complex, ptr %370, i64 %371
  %373 = getelementptr inbounds %struct.complex, ptr %372, i32 0, i32 1
  store float %369, ptr %373, align 4, !tbaa !15
  br label %374

374:                                              ; preds = %337, %334
  %375 = load i64, ptr %47, align 8, !tbaa !9
  %376 = icmp ne i64 %375, 0
  br i1 %376, label %377, label %391

377:                                              ; preds = %374
  %378 = load i64, ptr %39, align 8, !tbaa !9
  %379 = load i64, ptr %39, align 8, !tbaa !9
  %380 = load i64, ptr %29, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = add nsw i64 %378, %381
  store i64 %382, ptr %32, align 8, !tbaa !9
  %383 = load ptr, ptr %20, align 8, !tbaa !5
  %384 = load i64, ptr %32, align 8, !tbaa !9
  %385 = getelementptr inbounds %struct.complex, ptr %383, i64 %384
  %386 = getelementptr inbounds %struct.complex, ptr %385, i32 0, i32 0
  store float 1.000000e+00, ptr %386, align 4, !tbaa !12
  %387 = load ptr, ptr %20, align 8, !tbaa !5
  %388 = load i64, ptr %32, align 8, !tbaa !9
  %389 = getelementptr inbounds %struct.complex, ptr %387, i64 %388
  %390 = getelementptr inbounds %struct.complex, ptr %389, i32 0, i32 1
  store float 0.000000e+00, ptr %390, align 4, !tbaa !15
  br label %391

391:                                              ; preds = %377, %374
  br label %392

392:                                              ; preds = %391
  %393 = load i64, ptr %39, align 8, !tbaa !9
  %394 = add nsw i64 %393, 1
  store i64 %394, ptr %39, align 8, !tbaa !9
  br label %127, !llvm.loop !19

395:                                              ; preds = %127
  %396 = load ptr, ptr %15, align 8, !tbaa !5
  %397 = call i64 @s_cmp(ptr noundef %396, ptr noundef @.str.4, i64 noundef 2, i64 noundef 2)
  %398 = icmp eq i64 %397, 0
  br i1 %398, label %399, label %481

399:                                              ; preds = %395
  %400 = load ptr, ptr %19, align 8, !tbaa !5
  %401 = load i64, ptr %400, align 8, !tbaa !9
  store i64 %401, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %402

402:                                              ; preds = %477, %399
  %403 = load i64, ptr %39, align 8, !tbaa !9
  %404 = load i64, ptr %31, align 8, !tbaa !9
  %405 = icmp sle i64 %403, %404
  br i1 %405, label %406, label %480

406:                                              ; preds = %402
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  store i64 %408, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %444, %406
  %410 = load i64, ptr %38, align 8, !tbaa !9
  %411 = load i64, ptr %32, align 8, !tbaa !9
  %412 = icmp sle i64 %410, %411
  br i1 %412, label %413, label %447

413:                                              ; preds = %409
  %414 = load i64, ptr %38, align 8, !tbaa !9
  %415 = load i64, ptr %39, align 8, !tbaa !9
  %416 = sub nsw i64 %415, 1
  %417 = load ptr, ptr %23, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = mul nsw i64 %416, %418
  %420 = add nsw i64 %414, %419
  store i64 %420, ptr %33, align 8, !tbaa !9
  %421 = load i64, ptr %38, align 8, !tbaa !9
  %422 = load i64, ptr %39, align 8, !tbaa !9
  %423 = load i64, ptr %29, align 8, !tbaa !9
  %424 = mul nsw i64 %422, %423
  %425 = add nsw i64 %421, %424
  store i64 %425, ptr %34, align 8, !tbaa !9
  %426 = load ptr, ptr %20, align 8, !tbaa !5
  %427 = load i64, ptr %34, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.complex, ptr %426, i64 %427
  %429 = getelementptr inbounds %struct.complex, ptr %428, i32 0, i32 0
  %430 = load float, ptr %429, align 4, !tbaa !12
  %431 = load ptr, ptr %22, align 8, !tbaa !5
  %432 = load i64, ptr %33, align 8, !tbaa !9
  %433 = getelementptr inbounds %struct.complex, ptr %431, i64 %432
  %434 = getelementptr inbounds %struct.complex, ptr %433, i32 0, i32 0
  store float %430, ptr %434, align 4, !tbaa !12
  %435 = load ptr, ptr %20, align 8, !tbaa !5
  %436 = load i64, ptr %34, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.complex, ptr %435, i64 %436
  %438 = getelementptr inbounds %struct.complex, ptr %437, i32 0, i32 1
  %439 = load float, ptr %438, align 4, !tbaa !15
  %440 = load ptr, ptr %22, align 8, !tbaa !5
  %441 = load i64, ptr %33, align 8, !tbaa !9
  %442 = getelementptr inbounds %struct.complex, ptr %440, i64 %441
  %443 = getelementptr inbounds %struct.complex, ptr %442, i32 0, i32 1
  store float %439, ptr %443, align 4, !tbaa !15
  br label %444

444:                                              ; preds = %413
  %445 = load i64, ptr %38, align 8, !tbaa !9
  %446 = add nsw i64 %445, 1
  store i64 %446, ptr %38, align 8, !tbaa !9
  br label %409, !llvm.loop !20

447:                                              ; preds = %409
  %448 = load ptr, ptr %23, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  store i64 %449, ptr %32, align 8, !tbaa !9
  %450 = load ptr, ptr %18, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %38, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %473, %447
  %454 = load i64, ptr %38, align 8, !tbaa !9
  %455 = load i64, ptr %32, align 8, !tbaa !9
  %456 = icmp sle i64 %454, %455
  br i1 %456, label %457, label %476

457:                                              ; preds = %453
  %458 = load i64, ptr %38, align 8, !tbaa !9
  %459 = load i64, ptr %39, align 8, !tbaa !9
  %460 = sub nsw i64 %459, 1
  %461 = load ptr, ptr %23, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = mul nsw i64 %460, %462
  %464 = add nsw i64 %458, %463
  store i64 %464, ptr %33, align 8, !tbaa !9
  %465 = load ptr, ptr %22, align 8, !tbaa !5
  %466 = load i64, ptr %33, align 8, !tbaa !9
  %467 = getelementptr inbounds %struct.complex, ptr %465, i64 %466
  %468 = getelementptr inbounds %struct.complex, ptr %467, i32 0, i32 0
  store float -1.000000e+10, ptr %468, align 4, !tbaa !12
  %469 = load ptr, ptr %22, align 8, !tbaa !5
  %470 = load i64, ptr %33, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.complex, ptr %469, i64 %470
  %472 = getelementptr inbounds %struct.complex, ptr %471, i32 0, i32 1
  store float 1.000000e+10, ptr %472, align 4, !tbaa !15
  br label %473

473:                                              ; preds = %457
  %474 = load i64, ptr %38, align 8, !tbaa !9
  %475 = add nsw i64 %474, 1
  store i64 %475, ptr %38, align 8, !tbaa !9
  br label %453, !llvm.loop !21

476:                                              ; preds = %453
  br label %477

477:                                              ; preds = %476
  %478 = load i64, ptr %39, align 8, !tbaa !9
  %479 = add nsw i64 %478, 1
  store i64 %479, ptr %39, align 8, !tbaa !9
  br label %402, !llvm.loop !22

480:                                              ; preds = %402
  br label %657

481:                                              ; preds = %395
  %482 = load ptr, ptr %15, align 8, !tbaa !5
  %483 = call i64 @s_cmp(ptr noundef %482, ptr noundef @.str.6, i64 noundef 2, i64 noundef 2)
  %484 = icmp eq i64 %483, 0
  br i1 %484, label %493, label %485

485:                                              ; preds = %481
  %486 = load ptr, ptr %15, align 8, !tbaa !5
  %487 = call i64 @s_cmp(ptr noundef %486, ptr noundef @.str.16, i64 noundef 2, i64 noundef 2)
  %488 = icmp eq i64 %487, 0
  br i1 %488, label %493, label %489

489:                                              ; preds = %485
  %490 = load ptr, ptr %15, align 8, !tbaa !5
  %491 = call i64 @s_cmp(ptr noundef %490, ptr noundef @.str.7, i64 noundef 2, i64 noundef 2)
  %492 = icmp eq i64 %491, 0
  br i1 %492, label %493, label %656

493:                                              ; preds = %489, %485, %481
  %494 = load ptr, ptr %19, align 8, !tbaa !5
  %495 = load i64, ptr %494, align 8, !tbaa !9
  store i64 %495, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %496

496:                                              ; preds = %652, %493
  %497 = load i64, ptr %39, align 8, !tbaa !9
  %498 = load i64, ptr %31, align 8, !tbaa !9
  %499 = icmp sle i64 %497, %498
  br i1 %499, label %500, label %655

500:                                              ; preds = %496
  %501 = load i64, ptr %49, align 8, !tbaa !9
  %502 = icmp ne i64 %501, 0
  br i1 %502, label %503, label %512

503:                                              ; preds = %500
  store i64 1, ptr %45, align 8, !tbaa !9
  %504 = load i64, ptr %47, align 8, !tbaa !9
  %505 = icmp ne i64 %504, 0
  br i1 %505, label %506, label %509

506:                                              ; preds = %503
  %507 = load i64, ptr %39, align 8, !tbaa !9
  %508 = sub nsw i64 %507, 1
  store i64 %508, ptr %46, align 8, !tbaa !9
  br label %511

509:                                              ; preds = %503
  %510 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %510, ptr %46, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %509, %506
  br label %523

512:                                              ; preds = %500
  %513 = load i64, ptr %47, align 8, !tbaa !9
  %514 = icmp ne i64 %513, 0
  br i1 %514, label %515, label %518

515:                                              ; preds = %512
  %516 = load i64, ptr %39, align 8, !tbaa !9
  %517 = add nsw i64 %516, 1
  store i64 %517, ptr %45, align 8, !tbaa !9
  br label %520

518:                                              ; preds = %512
  %519 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %519, ptr %45, align 8, !tbaa !9
  br label %520

520:                                              ; preds = %518, %515
  %521 = load ptr, ptr %19, align 8, !tbaa !5
  %522 = load i64, ptr %521, align 8, !tbaa !9
  store i64 %522, ptr %46, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %520, %511
  %524 = load i64, ptr %45, align 8, !tbaa !9
  %525 = sub nsw i64 %524, 1
  store i64 %525, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %526

526:                                              ; preds = %546, %523
  %527 = load i64, ptr %38, align 8, !tbaa !9
  %528 = load i64, ptr %32, align 8, !tbaa !9
  %529 = icmp sle i64 %527, %528
  br i1 %529, label %530, label %549

530:                                              ; preds = %526
  %531 = load i64, ptr %38, align 8, !tbaa !9
  %532 = load i64, ptr %39, align 8, !tbaa !9
  %533 = sub nsw i64 %532, 1
  %534 = load ptr, ptr %23, 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 %33, align 8, !tbaa !9
  %538 = load ptr, ptr %22, align 8, !tbaa !5
  %539 = load i64, ptr %33, align 8, !tbaa !9
  %540 = getelementptr inbounds %struct.complex, ptr %538, i64 %539
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 0
  store float -1.000000e+10, ptr %541, align 4, !tbaa !12
  %542 = load ptr, ptr %22, align 8, !tbaa !5
  %543 = load i64, ptr %33, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.complex, ptr %542, i64 %543
  %545 = getelementptr inbounds %struct.complex, ptr %544, i32 0, i32 1
  store float 1.000000e+10, ptr %545, align 4, !tbaa !15
  br label %546

546:                                              ; preds = %530
  %547 = load i64, ptr %38, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  store i64 %548, ptr %38, align 8, !tbaa !9
  br label %526, !llvm.loop !23

549:                                              ; preds = %526
  %550 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %550, ptr %32, align 8, !tbaa !9
  %551 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %551, ptr %38, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %587, %549
  %553 = load i64, ptr %38, align 8, !tbaa !9
  %554 = load i64, ptr %32, align 8, !tbaa !9
  %555 = icmp sle i64 %553, %554
  br i1 %555, label %556, label %590

556:                                              ; preds = %552
  %557 = load i64, ptr %38, align 8, !tbaa !9
  %558 = load i64, ptr %39, align 8, !tbaa !9
  %559 = sub nsw i64 %558, 1
  %560 = load ptr, ptr %23, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = mul nsw i64 %559, %561
  %563 = add nsw i64 %557, %562
  store i64 %563, ptr %33, align 8, !tbaa !9
  %564 = load i64, ptr %38, align 8, !tbaa !9
  %565 = load i64, ptr %39, align 8, !tbaa !9
  %566 = load i64, ptr %29, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %564, %567
  store i64 %568, ptr %34, align 8, !tbaa !9
  %569 = load ptr, ptr %20, align 8, !tbaa !5
  %570 = load i64, ptr %34, align 8, !tbaa !9
  %571 = getelementptr inbounds %struct.complex, ptr %569, i64 %570
  %572 = getelementptr inbounds %struct.complex, ptr %571, i32 0, i32 0
  %573 = load float, ptr %572, align 4, !tbaa !12
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load i64, ptr %33, align 8, !tbaa !9
  %576 = getelementptr inbounds %struct.complex, ptr %574, i64 %575
  %577 = getelementptr inbounds %struct.complex, ptr %576, i32 0, i32 0
  store float %573, ptr %577, align 4, !tbaa !12
  %578 = load ptr, ptr %20, align 8, !tbaa !5
  %579 = load i64, ptr %34, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.complex, ptr %578, i64 %579
  %581 = getelementptr inbounds %struct.complex, ptr %580, i32 0, i32 1
  %582 = load float, ptr %581, align 4, !tbaa !15
  %583 = load ptr, ptr %22, align 8, !tbaa !5
  %584 = load i64, ptr %33, align 8, !tbaa !9
  %585 = getelementptr inbounds %struct.complex, ptr %583, i64 %584
  %586 = getelementptr inbounds %struct.complex, ptr %585, i32 0, i32 1
  store float %582, ptr %586, align 4, !tbaa !15
  br label %587

587:                                              ; preds = %556
  %588 = load i64, ptr %38, align 8, !tbaa !9
  %589 = add nsw i64 %588, 1
  store i64 %589, ptr %38, align 8, !tbaa !9
  br label %552, !llvm.loop !24

590:                                              ; preds = %552
  %591 = load ptr, ptr %23, align 8, !tbaa !5
  %592 = load i64, ptr %591, align 8, !tbaa !9
  store i64 %592, ptr %32, align 8, !tbaa !9
  %593 = load i64, ptr %46, align 8, !tbaa !9
  %594 = add nsw i64 %593, 1
  store i64 %594, ptr %38, align 8, !tbaa !9
  br label %595

595:                                              ; preds = %615, %590
  %596 = load i64, ptr %38, align 8, !tbaa !9
  %597 = load i64, ptr %32, align 8, !tbaa !9
  %598 = icmp sle i64 %596, %597
  br i1 %598, label %599, label %618

599:                                              ; preds = %595
  %600 = load i64, ptr %38, align 8, !tbaa !9
  %601 = load i64, ptr %39, align 8, !tbaa !9
  %602 = sub nsw i64 %601, 1
  %603 = load ptr, ptr %23, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = mul nsw i64 %602, %604
  %606 = add nsw i64 %600, %605
  store i64 %606, ptr %33, align 8, !tbaa !9
  %607 = load ptr, ptr %22, align 8, !tbaa !5
  %608 = load i64, ptr %33, align 8, !tbaa !9
  %609 = getelementptr inbounds %struct.complex, ptr %607, i64 %608
  %610 = getelementptr inbounds %struct.complex, ptr %609, i32 0, i32 0
  store float -1.000000e+10, ptr %610, align 4, !tbaa !12
  %611 = load ptr, ptr %22, align 8, !tbaa !5
  %612 = load i64, ptr %33, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.complex, ptr %611, i64 %612
  %614 = getelementptr inbounds %struct.complex, ptr %613, i32 0, i32 1
  store float 1.000000e+10, ptr %614, align 4, !tbaa !15
  br label %615

615:                                              ; preds = %599
  %616 = load i64, ptr %38, align 8, !tbaa !9
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %38, align 8, !tbaa !9
  br label %595, !llvm.loop !25

618:                                              ; preds = %595
  %619 = load i64, ptr %42, align 8, !tbaa !9
  %620 = icmp ne i64 %619, 0
  br i1 %620, label %621, label %651

621:                                              ; preds = %618
  %622 = load i64, ptr %39, align 8, !tbaa !9
  %623 = load i64, ptr %39, align 8, !tbaa !9
  %624 = sub nsw i64 %623, 1
  %625 = load ptr, ptr %23, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = mul nsw i64 %624, %626
  %628 = add nsw i64 %622, %627
  store i64 %628, ptr %40, align 8, !tbaa !9
  %629 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %629, ptr %32, align 8, !tbaa !9
  %630 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %630, ptr %33, align 8, !tbaa !9
  %631 = load ptr, ptr %22, align 8, !tbaa !5
  %632 = load i64, ptr %33, align 8, !tbaa !9
  %633 = getelementptr inbounds %struct.complex, ptr %631, i64 %632
  %634 = getelementptr inbounds %struct.complex, ptr %633, i32 0, i32 0
  %635 = load float, ptr %634, align 4, !tbaa !12
  store float %635, ptr %35, align 4, !tbaa !18
  %636 = load float, ptr %35, align 4, !tbaa !18
  %637 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %636, ptr %637, align 4, !tbaa !12
  %638 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float -1.000000e+10, ptr %638, align 4, !tbaa !15
  %639 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %640 = load float, ptr %639, align 4, !tbaa !12
  %641 = load ptr, ptr %22, align 8, !tbaa !5
  %642 = load i64, ptr %32, align 8, !tbaa !9
  %643 = getelementptr inbounds %struct.complex, ptr %641, i64 %642
  %644 = getelementptr inbounds %struct.complex, ptr %643, i32 0, i32 0
  store float %640, ptr %644, align 4, !tbaa !12
  %645 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %646 = load float, ptr %645, align 4, !tbaa !15
  %647 = load ptr, ptr %22, align 8, !tbaa !5
  %648 = load i64, ptr %32, align 8, !tbaa !9
  %649 = getelementptr inbounds %struct.complex, ptr %647, i64 %648
  %650 = getelementptr inbounds %struct.complex, ptr %649, i32 0, i32 1
  store float %646, ptr %650, align 4, !tbaa !15
  br label %651

651:                                              ; preds = %621, %618
  br label %652

652:                                              ; preds = %651
  %653 = load i64, ptr %39, align 8, !tbaa !9
  %654 = add nsw i64 %653, 1
  store i64 %654, ptr %39, align 8, !tbaa !9
  br label %496, !llvm.loop !26

655:                                              ; preds = %496
  br label %656

656:                                              ; preds = %655, %489
  br label %657

657:                                              ; preds = %656, %480
  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 8, 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 4, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #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}


; 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.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = 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 noundef %9, ptr nocapture noundef readonly %10, i64 noundef %11, i64 noundef %12, i64 noundef %13) local_unnamed_addr #2 {
  %15 = alloca %struct.complex, align 8
  %16 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #3
  %17 = load i64, ptr %6, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds %struct.complex, ptr %5, i64 %18
  %20 = getelementptr inbounds i8, ptr %7, i64 -8
  %21 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.4, i64 noundef 2, i64 noundef 2) #3
  %22 = icmp eq i64 %21, 0
  %23 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.6, i64 noundef 2, i64 noundef 2) #3
  %.fr327 = freeze i64 %23
  %24 = icmp eq i64 %.fr327, 0
  %25 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.16, i64 noundef 2, i64 noundef 2) #3
  %26 = icmp eq i64 %25, 0
  %27 = tail call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.7, i64 noundef 2, i64 noundef 2) #3
  %28 = icmp eq i64 %27, 0
  %or.cond = select i1 %24, i1 true, i1 %26
  %or.cond3 = select i1 %or.cond, i1 true, i1 %28
  br i1 %or.cond3, label %29, label %.thread263

29:                                               ; preds = %14
  %30 = load i8, ptr %1, align 1, !tbaa !9
  %31 = icmp eq i8 %30, 85
  %32 = icmp eq i8 %30, 76
  br i1 %28, label %33, label %.thread263

33:                                               ; preds = %29
  %34 = load i8, ptr %2, align 1, !tbaa !9
  %35 = icmp eq i8 %34, 85
  br label %.thread263

.thread263:                                       ; preds = %14, %33, %29
  %36 = phi i1 [ %32, %29 ], [ %32, %33 ], [ false, %14 ]
  %37 = phi i1 [ %31, %29 ], [ %31, %33 ], [ false, %14 ]
  %38 = phi i1 [ false, %29 ], [ %35, %33 ], [ false, %14 ]
  %39 = load i64, ptr %4, align 8, !tbaa !5
  %.not269 = icmp slt i64 %39, 1
  br i1 %.not269, label %._crit_edge273, label %.lr.ph272

.lr.ph272:                                        ; preds = %.thread263
  %40 = getelementptr inbounds i8, ptr %15, i64 4
  %41 = add i64 %17, 1
  %42 = load i64, ptr %3, align 8, !tbaa !5
  %43 = icmp slt i64 %42, 1
  br i1 %43, label %.lr.ph272.split.us, label %.lr.ph272.split.preheader

.lr.ph272.split.preheader:                        ; preds = %.lr.ph272
  %brmerge = select i1 %26, i1 true, i1 %28
  %44 = insertelement <2 x i1> poison, i1 %26, i64 0
  %45 = shufflevector <2 x i1> %44, <2 x i1> poison, <2 x i32> zeroinitializer
  br label %.lr.ph272.split

.lr.ph272.split.us:                               ; preds = %.lr.ph272
  br i1 %28, label %.lr.ph272.split.us.split.us, label %.lr.ph272.split.us.split

.lr.ph272.split.us.split.us:                      ; preds = %.lr.ph272.split.us
  %invariant.gep280 = getelementptr i8, ptr %19, i64 4
  %xtraiter488 = and i64 %39, 1
  %46 = icmp eq i64 %39, 1
  br i1 %46, label %._crit_edge273.sink.split.loopexit.unr-lcssa, label %.lr.ph272.split.us.split.us.new

.lr.ph272.split.us.split.us.new:                  ; preds = %.lr.ph272.split.us.split.us
  %unroll_iter492 = and i64 %39, 9223372036854775806
  br label %47

47:                                               ; preds = %._crit_edge349.1, %.lr.ph272.split.us.split.us.new
  %.0242270.us.us = phi i64 [ 1, %.lr.ph272.split.us.split.us.new ], [ %59, %._crit_edge349.1 ]
  %niter493 = phi i64 [ 0, %.lr.ph272.split.us.split.us.new ], [ %niter493.next.1, %._crit_edge349.1 ]
  %48 = mul i64 %.0242270.us.us, %41
  br i1 %24, label %49, label %._crit_edge349

49:                                               ; preds = %47
  %gep281 = getelementptr %struct.complex, ptr %invariant.gep280, i64 %48
  store float 0.000000e+00, ptr %gep281, align 4, !tbaa !10
  br label %._crit_edge349

._crit_edge349:                                   ; preds = %47, %49
  %50 = getelementptr inbounds %struct.complex, ptr %19, i64 %48
  %51 = load <2 x float>, ptr %50, align 4, !tbaa !13
  %52 = fadd <2 x float> %51, <float 1.000000e+00, float 0.000000e+00>
  %storemerge = select i1 %38, <2 x float> <float 1.000000e+00, float 0.000000e+00>, <2 x float> %52
  store <2 x float> %storemerge, ptr %50, align 4, !tbaa !13
  %53 = add nuw i64 %.0242270.us.us, 1
  %54 = mul i64 %53, %41
  br i1 %24, label %55, label %._crit_edge349.1

55:                                               ; preds = %._crit_edge349
  %gep281.1 = getelementptr %struct.complex, ptr %invariant.gep280, i64 %54
  store float 0.000000e+00, ptr %gep281.1, align 4, !tbaa !10
  br label %._crit_edge349.1

._crit_edge349.1:                                 ; preds = %55, %._crit_edge349
  %56 = getelementptr inbounds %struct.complex, ptr %19, i64 %54
  %57 = load <2 x float>, ptr %56, align 4, !tbaa !13
  %58 = fadd <2 x float> %57, <float 1.000000e+00, float 0.000000e+00>
  %storemerge.1 = select i1 %38, <2 x float> <float 1.000000e+00, float 0.000000e+00>, <2 x float> %58
  store <2 x float> %storemerge.1, ptr %56, align 4, !tbaa !13
  %59 = add nuw i64 %.0242270.us.us, 2
  %niter493.next.1 = add i64 %niter493, 2
  %niter493.ncmp.1 = icmp eq i64 %niter493.next.1, %unroll_iter492
  br i1 %niter493.ncmp.1, label %._crit_edge273.sink.split.loopexit.unr-lcssa, label %47, !llvm.loop !14

.lr.ph272.split.us.split:                         ; preds = %.lr.ph272.split.us
  br i1 %24, label %.lr.ph272.split.us.split.split.us, label %.lr.ph272.split.us.split.split

.lr.ph272.split.us.split.split.us:                ; preds = %.lr.ph272.split.us.split
  br i1 %38, label %.lr.ph272.split.us.split.split.us.split.us.preheader, label %.lr.ph272.split.us.split.split.us.split.preheader

.lr.ph272.split.us.split.split.us.split.preheader: ; preds = %.lr.ph272.split.us.split.split.us
  %xtraiter476 = and i64 %39, 3
  %60 = icmp ult i64 %39, 4
  br i1 %60, label %._crit_edge273.sink.split.loopexit472.unr-lcssa, label %.lr.ph272.split.us.split.split.us.split.preheader.new

.lr.ph272.split.us.split.split.us.split.preheader.new: ; preds = %.lr.ph272.split.us.split.split.us.split.preheader
  %unroll_iter480 = and i64 %39, 9223372036854775804
  br label %.lr.ph272.split.us.split.split.us.split

.lr.ph272.split.us.split.split.us.split.us.preheader: ; preds = %.lr.ph272.split.us.split.split.us
  %xtraiter482 = and i64 %39, 1
  %61 = icmp eq i64 %39, 1
  br i1 %61, label %._crit_edge273.sink.split.loopexit470.unr-lcssa, label %.lr.ph272.split.us.split.split.us.split.us.preheader.new

.lr.ph272.split.us.split.split.us.split.us.preheader.new: ; preds = %.lr.ph272.split.us.split.split.us.split.us.preheader
  %unroll_iter486 = and i64 %39, 9223372036854775806
  br label %.lr.ph272.split.us.split.split.us.split.us

.lr.ph272.split.us.split.split.us.split.us:       ; preds = %.lr.ph272.split.us.split.split.us.split.us, %.lr.ph272.split.us.split.split.us.split.us.preheader.new
  %.0242270.us.us274.us = phi i64 [ 1, %.lr.ph272.split.us.split.split.us.split.us.preheader.new ], [ %68, %.lr.ph272.split.us.split.split.us.split.us ]
  %niter487 = phi i64 [ 0, %.lr.ph272.split.us.split.split.us.split.us.preheader.new ], [ %niter487.next.1, %.lr.ph272.split.us.split.split.us.split.us ]
  %62 = mul i64 %.0242270.us.us274.us, %41
  %63 = getelementptr inbounds %struct.complex, ptr %19, i64 %62
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %63, align 4, !tbaa !13
  %64 = add nuw i64 %.0242270.us.us274.us, 1
  %65 = mul i64 %64, %41
  %66 = getelementptr inbounds %struct.complex, ptr %19, i64 %65
  %67 = load float, ptr %66, align 4, !tbaa !16
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %66, align 4, !tbaa !13
  %68 = add nuw i64 %.0242270.us.us274.us, 2
  %niter487.next.1 = add nuw i64 %niter487, 2
  %niter487.ncmp.1 = icmp eq i64 %niter487.next.1, %unroll_iter486
  br i1 %niter487.ncmp.1, label %._crit_edge273.sink.split.loopexit470.unr-lcssa.loopexit, label %.lr.ph272.split.us.split.split.us.split.us, !llvm.loop !14

.lr.ph272.split.us.split.split.us.split:          ; preds = %.lr.ph272.split.us.split.split.us.split, %.lr.ph272.split.us.split.split.us.split.preheader.new
  %.0242270.us.us274 = phi i64 [ 1, %.lr.ph272.split.us.split.split.us.split.preheader.new ], [ %82, %.lr.ph272.split.us.split.split.us.split ]
  %niter481 = phi i64 [ 0, %.lr.ph272.split.us.split.split.us.split.preheader.new ], [ %niter481.next.3, %.lr.ph272.split.us.split.split.us.split ]
  %69 = mul i64 %.0242270.us.us274, %41
  %70 = getelementptr inbounds %struct.complex, ptr %19, i64 %69, i32 1
  store float 0.000000e+00, ptr %70, align 4, !tbaa !10
  %71 = add nuw nsw i64 %.0242270.us.us274, 1
  %72 = mul i64 %71, %41
  %73 = getelementptr inbounds %struct.complex, ptr %19, i64 %72, i32 1
  store float 0.000000e+00, ptr %73, align 4, !tbaa !10
  %74 = add nuw nsw i64 %.0242270.us.us274, 2
  %75 = mul i64 %74, %41
  %76 = getelementptr inbounds %struct.complex, ptr %19, i64 %75, i32 1
  store float 0.000000e+00, ptr %76, align 4, !tbaa !10
  %77 = add nuw i64 %.0242270.us.us274, 3
  %78 = mul i64 %77, %41
  %79 = getelementptr inbounds %struct.complex, ptr %19, i64 %78
  %80 = load float, ptr %79, align 4, !tbaa !16
  %81 = getelementptr inbounds i8, ptr %79, i64 4
  store float 0.000000e+00, ptr %81, align 4, !tbaa !10
  %82 = add nuw i64 %.0242270.us.us274, 4
  %niter481.next.3 = add nuw i64 %niter481, 4
  %niter481.ncmp.3 = icmp eq i64 %niter481.next.3, %unroll_iter480
  br i1 %niter481.ncmp.3, label %._crit_edge273.sink.split.loopexit472.unr-lcssa.loopexit, label %.lr.ph272.split.us.split.split.us.split, !llvm.loop !14

.lr.ph272.split.us.split.split:                   ; preds = %.lr.ph272.split.us.split
  br i1 %38, label %.lr.ph272.split.us.split.split.split.us.preheader, label %._crit_edge273

.lr.ph272.split.us.split.split.split.us.preheader: ; preds = %.lr.ph272.split.us.split.split
  %xtraiter = and i64 %39, 3
  %83 = icmp ult i64 %39, 4
  br i1 %83, label %._crit_edge273.loopexit.unr-lcssa, label %.lr.ph272.split.us.split.split.split.us.preheader.new

.lr.ph272.split.us.split.split.split.us.preheader.new: ; preds = %.lr.ph272.split.us.split.split.split.us.preheader
  %unroll_iter = and i64 %39, 9223372036854775804
  br label %.lr.ph272.split.us.split.split.split.us

.lr.ph272.split.us.split.split.split.us:          ; preds = %.lr.ph272.split.us.split.split.split.us, %.lr.ph272.split.us.split.split.split.us.preheader.new
  %.0242270.us.us276 = phi i64 [ 1, %.lr.ph272.split.us.split.split.split.us.preheader.new ], [ %95, %.lr.ph272.split.us.split.split.split.us ]
  %niter = phi i64 [ 0, %.lr.ph272.split.us.split.split.split.us.preheader.new ], [ %niter.next.3, %.lr.ph272.split.us.split.split.split.us ]
  %84 = mul i64 %.0242270.us.us276, %41
  %85 = getelementptr inbounds %struct.complex, ptr %19, i64 %84
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %85, align 4, !tbaa !13
  %86 = add nuw nsw i64 %.0242270.us.us276, 1
  %87 = mul i64 %86, %41
  %88 = getelementptr inbounds %struct.complex, ptr %19, i64 %87
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %88, align 4, !tbaa !13
  %89 = add nuw nsw i64 %.0242270.us.us276, 2
  %90 = mul i64 %89, %41
  %91 = getelementptr inbounds %struct.complex, ptr %19, i64 %90
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %91, align 4, !tbaa !13
  %92 = add nuw i64 %.0242270.us.us276, 3
  %93 = mul i64 %92, %41
  %94 = getelementptr inbounds %struct.complex, ptr %19, i64 %93
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %94, align 4, !tbaa !13
  %95 = add nuw i64 %.0242270.us.us276, 4
  %niter.next.3 = add nuw i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge273.loopexit.unr-lcssa, label %.lr.ph272.split.us.split.split.split.us, !llvm.loop !14

.lr.ph272.splitthread-pre-split:                  ; preds = %148
  %96 = add nuw i64 %.0242270, 1
  %.pr = load i64, ptr %3, align 8, !tbaa !5
  br label %.lr.ph272.split

.lr.ph272.split:                                  ; preds = %.lr.ph272.split.preheader, %.lr.ph272.splitthread-pre-split
  %97 = phi i64 [ %.pr, %.lr.ph272.splitthread-pre-split ], [ %42, %.lr.ph272.split.preheader ]
  %.0242270 = phi i64 [ %96, %.lr.ph272.splitthread-pre-split ], [ 1, %.lr.ph272.split.preheader ]
  %.not253267 = icmp slt i64 %97, 1
  br i1 %.not253267, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph272.split
  %98 = mul nsw i64 %.0242270, %17
  %invariant.gep = getelementptr %struct.complex, ptr %19, i64 %98
  %99 = getelementptr %struct.complex, ptr %19, i64 %.0242270
  br i1 %24, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %114
  %.0240268.us = phi i64 [ %115, %114 ], [ 1, %.lr.ph ]
  %.not254.us = icmp ule i64 %.0240268.us, %.0242270
  %or.cond258.not.us = and i1 %37, %.not254.us
  %or.cond264.us = select i1 %22, i1 true, i1 %or.cond258.not.us
  %.not255.us = icmp uge i64 %.0240268.us, %.0242270
  %or.cond260.not.us = and i1 %36, %.not255.us
  %or.cond265.us = select i1 %or.cond264.us, i1 true, i1 %or.cond260.not.us
  br i1 %or.cond265.us, label %100, label %114

100:                                              ; preds = %.lr.ph.split.us
  call void @cbeg_(ptr noundef nonnull %16, ptr noundef %9)
  %101 = load <2 x float>, ptr %16, align 8, !tbaa !13
  %102 = load <2 x float>, ptr %10, align 4, !tbaa !13
  %103 = fadd <2 x float> %101, %102
  store <2 x float> %103, ptr %15, align 8, !tbaa !13
  %gep.us = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0240268.us
  store <2 x float> %103, ptr %gep.us, align 4, !tbaa !13
  %.not256.us = icmp eq i64 %.0240268.us, %.0242270
  br i1 %.not256.us, label %114, label %104

104:                                              ; preds = %100
  %105 = load i64, ptr %4, align 8, !tbaa !5
  %106 = icmp sgt i64 %105, 3
  %107 = lshr i64 %105, 1
  %108 = icmp eq i64 %.0242270, %107
  %or.cond262.us = and i1 %106, %108
  br i1 %or.cond262.us, label %109, label %110

109:                                              ; preds = %104
  store <2 x float> zeroinitializer, ptr %gep.us, align 4, !tbaa !13
  br label %110

110:                                              ; preds = %109, %104
  %111 = mul nsw i64 %.0240268.us, %17
  call void @r_cnjg(ptr noundef nonnull %15, ptr noundef nonnull %gep.us) #3
  %112 = getelementptr %struct.complex, ptr %99, i64 %111
  %113 = load <2 x float>, ptr %15, align 8, !tbaa !13
  store <2 x float> %113, ptr %112, align 4, !tbaa !13
  br label %114

114:                                              ; preds = %110, %100, %.lr.ph.split.us
  %115 = add nuw i64 %.0240268.us, 1
  %exitcond336.not = icmp eq i64 %.0240268.us, %97
  br i1 %exitcond336.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !17

.lr.ph.split:                                     ; preds = %.lr.ph, %131
  %.0240268 = phi i64 [ %132, %131 ], [ 1, %.lr.ph ]
  %.not254 = icmp ule i64 %.0240268, %.0242270
  %or.cond258.not = and i1 %37, %.not254
  %or.cond264 = select i1 %22, i1 true, i1 %or.cond258.not
  %.not255 = icmp uge i64 %.0240268, %.0242270
  %or.cond260.not = and i1 %36, %.not255
  %or.cond265 = select i1 %or.cond264, i1 true, i1 %or.cond260.not
  br i1 %or.cond265, label %116, label %131

116:                                              ; preds = %.lr.ph.split
  call void @cbeg_(ptr noundef nonnull %16, ptr noundef %9)
  %117 = load <2 x float>, ptr %16, align 8, !tbaa !13
  %118 = load <2 x float>, ptr %10, align 4, !tbaa !13
  %119 = fadd <2 x float> %117, %118
  store <2 x float> %119, ptr %15, align 8, !tbaa !13
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0240268
  store <2 x float> %119, ptr %gep, align 4, !tbaa !13
  %.not256 = icmp eq i64 %.0240268, %.0242270
  br i1 %.not256, label %131, label %120

120:                                              ; preds = %116
  %121 = load i64, ptr %4, align 8, !tbaa !5
  %122 = icmp sgt i64 %121, 3
  %123 = lshr i64 %121, 1
  %124 = icmp eq i64 %.0242270, %123
  %or.cond262 = and i1 %122, %124
  br i1 %or.cond262, label %125, label %126

125:                                              ; preds = %120
  store <2 x float> zeroinitializer, ptr %gep, align 4, !tbaa !13
  br label %126

126:                                              ; preds = %125, %120
  %127 = phi <2 x float> [ zeroinitializer, %125 ], [ %119, %120 ]
  br i1 %brmerge, label %.sink.split, label %131

.sink.split:                                      ; preds = %126
  %128 = select <2 x i1> %45, <2 x float> %127, <2 x float> zeroinitializer
  %129 = mul nsw i64 %.0240268, %17
  %130 = getelementptr %struct.complex, ptr %99, i64 %129
  store <2 x float> %128, ptr %130, align 4, !tbaa !13
  br label %131

131:                                              ; preds = %126, %.sink.split, %.lr.ph.split, %116
  %132 = add nuw i64 %.0240268, 1
  %exitcond.not = icmp eq i64 %.0240268, %97
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !17

._crit_edge:                                      ; preds = %131, %114, %.lr.ph272.split
  br i1 %24, label %133, label %138

133:                                              ; preds = %._crit_edge
  %134 = mul i64 %.0242270, %41
  %135 = getelementptr inbounds %struct.complex, ptr %19, i64 %134
  %136 = load float, ptr %135, align 4, !tbaa !16
  store float %136, ptr %15, align 8, !tbaa !16
  store float 0.000000e+00, ptr %40, align 4, !tbaa !10
  %137 = getelementptr inbounds i8, ptr %135, i64 4
  store float 0.000000e+00, ptr %137, align 4, !tbaa !10
  br label %138

138:                                              ; preds = %133, %._crit_edge
  br i1 %28, label %139, label %144

139:                                              ; preds = %138
  %140 = mul i64 %.0242270, %41
  %141 = getelementptr inbounds %struct.complex, ptr %19, i64 %140
  %142 = load <2 x float>, ptr %141, align 4, !tbaa !13
  %143 = fadd <2 x float> %142, <float 1.000000e+00, float 0.000000e+00>
  store <2 x float> %143, ptr %15, align 8, !tbaa !13
  store <2 x float> %143, ptr %141, align 4, !tbaa !13
  br label %144

144:                                              ; preds = %139, %138
  br i1 %38, label %145, label %148

145:                                              ; preds = %144
  %146 = mul i64 %.0242270, %41
  %147 = getelementptr inbounds %struct.complex, ptr %19, i64 %146
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %147, align 4, !tbaa !13
  br label %148

148:                                              ; preds = %144, %145
  %exitcond337.not = icmp eq i64 %.0242270, %39
  br i1 %exitcond337.not, label %._crit_edge273, label %.lr.ph272.splitthread-pre-split, !llvm.loop !18

._crit_edge273.sink.split.loopexit.unr-lcssa:     ; preds = %._crit_edge349.1, %.lr.ph272.split.us.split.us
  %.lcssa.ph = phi <2 x float> [ poison, %.lr.ph272.split.us.split.us ], [ %58, %._crit_edge349.1 ]
  %.0242270.us.us.unr = phi i64 [ 1, %.lr.ph272.split.us.split.us ], [ %59, %._crit_edge349.1 ]
  %lcmp.mod490.not = icmp eq i64 %xtraiter488, 0
  br i1 %lcmp.mod490.not, label %._crit_edge273.sink.split, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge273.sink.split.loopexit.unr-lcssa
  %149 = mul i64 %.0242270.us.us.unr, %41
  br i1 %24, label %150, label %._crit_edge349.epil

150:                                              ; preds = %.epil.preheader
  %gep281.epil = getelementptr %struct.complex, ptr %invariant.gep280, i64 %149
  store float 0.000000e+00, ptr %gep281.epil, align 4, !tbaa !10
  br label %._crit_edge349.epil

._crit_edge349.epil:                              ; preds = %150, %.epil.preheader
  %151 = getelementptr inbounds %struct.complex, ptr %19, i64 %149
  %152 = load <2 x float>, ptr %151, align 4, !tbaa !13
  %153 = fadd <2 x float> %152, <float 1.000000e+00, float 0.000000e+00>
  %storemerge.epil = select i1 %38, <2 x float> <float 1.000000e+00, float 0.000000e+00>, <2 x float> %153
  store <2 x float> %storemerge.epil, ptr %151, align 4, !tbaa !13
  br label %._crit_edge273.sink.split

._crit_edge273.sink.split.loopexit470.unr-lcssa.loopexit: ; preds = %.lr.ph272.split.us.split.split.us.split.us
  %154 = insertelement <2 x float> <float poison, float 0.000000e+00>, float %67, i64 0
  br label %._crit_edge273.sink.split.loopexit470.unr-lcssa

._crit_edge273.sink.split.loopexit470.unr-lcssa:  ; preds = %._crit_edge273.sink.split.loopexit470.unr-lcssa.loopexit, %.lr.ph272.split.us.split.split.us.split.us.preheader
  %.lcssa471.ph = phi <2 x float> [ poison, %.lr.ph272.split.us.split.split.us.split.us.preheader ], [ %154, %._crit_edge273.sink.split.loopexit470.unr-lcssa.loopexit ]
  %.0242270.us.us274.us.unr = phi i64 [ 1, %.lr.ph272.split.us.split.split.us.split.us.preheader ], [ %68, %._crit_edge273.sink.split.loopexit470.unr-lcssa.loopexit ]
  %lcmp.mod484.not = icmp eq i64 %xtraiter482, 0
  br i1 %lcmp.mod484.not, label %._crit_edge273.sink.split, label %.lr.ph272.split.us.split.split.us.split.us.epil

.lr.ph272.split.us.split.split.us.split.us.epil:  ; preds = %._crit_edge273.sink.split.loopexit470.unr-lcssa
  %155 = mul i64 %.0242270.us.us274.us.unr, %41
  %156 = getelementptr inbounds %struct.complex, ptr %19, i64 %155
  %157 = load float, ptr %156, align 4, !tbaa !16
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %156, align 4, !tbaa !13
  %158 = insertelement <2 x float> <float poison, float 0.000000e+00>, float %157, i64 0
  br label %._crit_edge273.sink.split

._crit_edge273.sink.split.loopexit472.unr-lcssa.loopexit: ; preds = %.lr.ph272.split.us.split.split.us.split
  %159 = insertelement <2 x float> <float poison, float 0.000000e+00>, float %80, i64 0
  br label %._crit_edge273.sink.split.loopexit472.unr-lcssa

._crit_edge273.sink.split.loopexit472.unr-lcssa:  ; preds = %._crit_edge273.sink.split.loopexit472.unr-lcssa.loopexit, %.lr.ph272.split.us.split.split.us.split.preheader
  %.lcssa473.ph = phi <2 x float> [ poison, %.lr.ph272.split.us.split.split.us.split.preheader ], [ %159, %._crit_edge273.sink.split.loopexit472.unr-lcssa.loopexit ]
  %.0242270.us.us274.unr = phi i64 [ 1, %.lr.ph272.split.us.split.split.us.split.preheader ], [ %82, %._crit_edge273.sink.split.loopexit472.unr-lcssa.loopexit ]
  %lcmp.mod478.not = icmp eq i64 %xtraiter476, 0
  br i1 %lcmp.mod478.not, label %._crit_edge273.sink.split, label %.lr.ph272.split.us.split.split.us.split.epil

.lr.ph272.split.us.split.split.us.split.epil:     ; preds = %._crit_edge273.sink.split.loopexit472.unr-lcssa, %.lr.ph272.split.us.split.split.us.split.epil
  %.0242270.us.us274.epil = phi i64 [ %164, %.lr.ph272.split.us.split.split.us.split.epil ], [ %.0242270.us.us274.unr, %._crit_edge273.sink.split.loopexit472.unr-lcssa ]
  %epil.iter477 = phi i64 [ %epil.iter477.next, %.lr.ph272.split.us.split.split.us.split.epil ], [ 0, %._crit_edge273.sink.split.loopexit472.unr-lcssa ]
  %160 = mul i64 %.0242270.us.us274.epil, %41
  %161 = getelementptr inbounds %struct.complex, ptr %19, i64 %160
  %162 = load float, ptr %161, align 4, !tbaa !16
  %163 = getelementptr inbounds i8, ptr %161, i64 4
  store float 0.000000e+00, ptr %163, align 4, !tbaa !10
  %164 = add nuw i64 %.0242270.us.us274.epil, 1
  %epil.iter477.next = add i64 %epil.iter477, 1
  %epil.iter477.cmp.not = icmp eq i64 %epil.iter477.next, %xtraiter476
  br i1 %epil.iter477.cmp.not, label %._crit_edge273.sink.split.loopexit472.epilog-lcssa, label %.lr.ph272.split.us.split.split.us.split.epil, !llvm.loop !20

._crit_edge273.sink.split.loopexit472.epilog-lcssa: ; preds = %.lr.ph272.split.us.split.split.us.split.epil
  %165 = insertelement <2 x float> <float poison, float 0.000000e+00>, float %162, i64 0
  br label %._crit_edge273.sink.split

._crit_edge273.sink.split:                        ; preds = %._crit_edge273.sink.split.loopexit472.epilog-lcssa, %._crit_edge273.sink.split.loopexit472.unr-lcssa, %.lr.ph272.split.us.split.split.us.split.us.epil, %._crit_edge273.sink.split.loopexit470.unr-lcssa, %._crit_edge349.epil, %._crit_edge273.sink.split.loopexit.unr-lcssa
  %166 = phi <2 x float> [ %.lcssa.ph, %._crit_edge273.sink.split.loopexit.unr-lcssa ], [ %153, %._crit_edge349.epil ], [ %.lcssa471.ph, %._crit_edge273.sink.split.loopexit470.unr-lcssa ], [ %158, %.lr.ph272.split.us.split.split.us.split.us.epil ], [ %.lcssa473.ph, %._crit_edge273.sink.split.loopexit472.unr-lcssa ], [ %165, %._crit_edge273.sink.split.loopexit472.epilog-lcssa ]
  store <2 x float> %166, ptr %15, align 8, !tbaa !13
  br label %._crit_edge273

._crit_edge273.loopexit.unr-lcssa:                ; preds = %.lr.ph272.split.us.split.split.split.us, %.lr.ph272.split.us.split.split.split.us.preheader
  %.0242270.us.us276.unr = phi i64 [ 1, %.lr.ph272.split.us.split.split.split.us.preheader ], [ %95, %.lr.ph272.split.us.split.split.split.us ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge273, label %.lr.ph272.split.us.split.split.split.us.epil

.lr.ph272.split.us.split.split.split.us.epil:     ; preds = %._crit_edge273.loopexit.unr-lcssa, %.lr.ph272.split.us.split.split.split.us.epil
  %.0242270.us.us276.epil = phi i64 [ %169, %.lr.ph272.split.us.split.split.split.us.epil ], [ %.0242270.us.us276.unr, %._crit_edge273.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph272.split.us.split.split.split.us.epil ], [ 0, %._crit_edge273.loopexit.unr-lcssa ]
  %167 = mul i64 %.0242270.us.us276.epil, %41
  %168 = getelementptr inbounds %struct.complex, ptr %19, i64 %167
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %168, align 4, !tbaa !13
  %169 = add nuw i64 %.0242270.us.us276.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge273, label %.lr.ph272.split.us.split.split.split.us.epil, !llvm.loop !22

._crit_edge273:                                   ; preds = %148, %._crit_edge273.loopexit.unr-lcssa, %.lr.ph272.split.us.split.split.split.us.epil, %._crit_edge273.sink.split, %.lr.ph272.split.us.split.split, %.thread263
  %170 = call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.4, i64 noundef 2, i64 noundef 2) #3
  %171 = icmp eq i64 %170, 0
  br i1 %171, label %172, label %226

172:                                              ; preds = %._crit_edge273
  %173 = load i64, ptr %4, align 8, !tbaa !5
  %.not250323 = icmp slt i64 %173, 1
  br i1 %.not250323, label %.loopexit, label %.lr.ph326

.lr.ph326:                                        ; preds = %172
  %174 = load i64, ptr %3, align 8, !tbaa !5
  %.not251307 = icmp slt i64 %174, 1
  %175 = load i64, ptr %8, align 8, !tbaa !5
  %.not252.not316 = icmp slt i64 %174, %175
  %176 = sub i64 %175, %174
  %177 = add nsw i64 %173, -1
  %178 = mul i64 %175, %177
  %179 = shl i64 %178, 3
  %180 = shl i64 %174, 3
  %181 = getelementptr i8, ptr %7, i64 %179
  %182 = getelementptr i8, ptr %181, i64 %180
  %scevgep432 = getelementptr i8, ptr %182, i64 -4
  %183 = shl i64 %175, 3
  %184 = mul i64 %17, %177
  %185 = shl i64 %184, 3
  %186 = getelementptr i8, ptr %5, i64 %185
  %187 = getelementptr i8, ptr %186, i64 %180
  %scevgep433 = getelementptr i8, ptr %187, i64 -4
  %188 = shl i64 %17, 3
  %scevgep434 = getelementptr i8, ptr %7, i64 4
  %189 = getelementptr i8, ptr %7, i64 %179
  %scevgep435 = getelementptr i8, ptr %189, i64 %180
  %scevgep436 = getelementptr i8, ptr %5, i64 4
  %190 = getelementptr i8, ptr %5, i64 %185
  %scevgep437 = getelementptr i8, ptr %190, i64 %180
  %191 = add i64 %174, 1
  %min.iters.check450 = icmp ult i64 %174, 12
  %bound0438 = icmp ugt ptr %scevgep433, %7
  %bound1439 = icmp ugt ptr %scevgep432, %5
  %found.conflict440 = and i1 %bound0438, %bound1439
  %192 = or i64 %183, %188
  %193 = icmp slt i64 %192, 0
  %194 = or i1 %found.conflict440, %193
  %bound0442 = icmp ult ptr %scevgep434, %scevgep437
  %bound1443 = icmp ult ptr %scevgep436, %scevgep435
  %found.conflict444 = and i1 %bound0442, %bound1443
  %195 = or i64 %183, %188
  %196 = icmp slt i64 %195, 0
  %197 = or i1 %found.conflict444, %196
  %conflict.rdx447 = or i1 %194, %197
  %n.vec453 = and i64 %174, 9223372036854775804
  %ind.end454 = or disjoint i64 %n.vec453, 1
  %cmp.n468 = icmp eq i64 %174, %n.vec453
  %min.iters.check420 = icmp ult i64 %176, 4
  %n.vec423 = and i64 %176, -4
  %ind.end424 = add i64 %174, %n.vec423
  %cmp.n430 = icmp eq i64 %176, %n.vec423
  br label %198

198:                                              ; preds = %.lr.ph326, %._crit_edge320
  %.1243324 = phi i64 [ 1, %.lr.ph326 ], [ %225, %._crit_edge320 ]
  br i1 %.not251307, label %._crit_edge311, label %.lr.ph310

.lr.ph310:                                        ; preds = %198
  %199 = add nsw i64 %.1243324, -1
  %200 = mul nsw i64 %175, %199
  %201 = mul nsw i64 %.1243324, %17
  %invariant.gep312 = getelementptr %struct.complex, ptr %19, i64 %201
  %invariant.gep314 = getelementptr %struct.complex, ptr %20, i64 %200
  %brmerge521 = select i1 %min.iters.check450, i1 true, i1 %conflict.rdx447
  br i1 %brmerge521, label %scalar.ph449.preheader, label %vector.body456

vector.body456:                                   ; preds = %.lr.ph310, %vector.body456
  %index457 = phi i64 [ %index.next467, %vector.body456 ], [ 0, %.lr.ph310 ]
  %offset.idx458 = or disjoint i64 %index457, 1
  %202 = or disjoint i64 %index457, 3
  %203 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %offset.idx458
  %204 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %202
  %wide.vec459 = load <4 x float>, ptr %203, align 4, !tbaa !13
  %wide.vec460 = load <4 x float>, ptr %204, align 4, !tbaa !13
  %205 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %offset.idx458
  %206 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %202
  store <4 x float> %wide.vec459, ptr %205, align 4, !tbaa !13
  store <4 x float> %wide.vec460, ptr %206, align 4, !tbaa !13
  %index.next467 = add nuw i64 %index457, 4
  %207 = icmp eq i64 %index.next467, %n.vec453
  br i1 %207, label %middle.block448, label %vector.body456, !llvm.loop !23

middle.block448:                                  ; preds = %vector.body456
  br i1 %cmp.n468, label %._crit_edge311, label %scalar.ph449.preheader

scalar.ph449.preheader:                           ; preds = %.lr.ph310, %middle.block448
  %.1241308.ph = phi i64 [ 1, %.lr.ph310 ], [ %ind.end454, %middle.block448 ]
  %208 = sub i64 %191, %.1241308.ph
  %209 = sub i64 %174, %.1241308.ph
  %xtraiter496 = and i64 %208, 3
  %lcmp.mod497.not = icmp eq i64 %xtraiter496, 0
  br i1 %lcmp.mod497.not, label %scalar.ph449.prol.loopexit, label %scalar.ph449.prol

scalar.ph449.prol:                                ; preds = %scalar.ph449.preheader, %scalar.ph449.prol
  %.1241308.prol = phi i64 [ %211, %scalar.ph449.prol ], [ %.1241308.ph, %scalar.ph449.preheader ]
  %prol.iter498 = phi i64 [ %prol.iter498.next, %scalar.ph449.prol ], [ 0, %scalar.ph449.preheader ]
  %gep313.prol = getelementptr %struct.complex, ptr %invariant.gep312, i64 %.1241308.prol
  %gep315.prol = getelementptr %struct.complex, ptr %invariant.gep314, i64 %.1241308.prol
  %210 = load <2 x float>, ptr %gep313.prol, align 4, !tbaa !13
  store <2 x float> %210, ptr %gep315.prol, align 4, !tbaa !13
  %211 = add nuw i64 %.1241308.prol, 1
  %prol.iter498.next = add i64 %prol.iter498, 1
  %prol.iter498.cmp.not = icmp eq i64 %prol.iter498.next, %xtraiter496
  br i1 %prol.iter498.cmp.not, label %scalar.ph449.prol.loopexit, label %scalar.ph449.prol, !llvm.loop !26

scalar.ph449.prol.loopexit:                       ; preds = %scalar.ph449.prol, %scalar.ph449.preheader
  %.1241308.unr = phi i64 [ %.1241308.ph, %scalar.ph449.preheader ], [ %211, %scalar.ph449.prol ]
  %212 = icmp ult i64 %209, 3
  br i1 %212, label %._crit_edge311, label %scalar.ph449

scalar.ph449:                                     ; preds = %scalar.ph449.prol.loopexit, %scalar.ph449
  %.1241308 = phi i64 [ %220, %scalar.ph449 ], [ %.1241308.unr, %scalar.ph449.prol.loopexit ]
  %gep313 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %.1241308
  %gep315 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %.1241308
  %213 = load <2 x float>, ptr %gep313, align 4, !tbaa !13
  store <2 x float> %213, ptr %gep315, align 4, !tbaa !13
  %214 = add nuw i64 %.1241308, 1
  %gep313.1 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %214
  %gep315.1 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %214
  %215 = load <2 x float>, ptr %gep313.1, align 4, !tbaa !13
  store <2 x float> %215, ptr %gep315.1, align 4, !tbaa !13
  %216 = add nuw i64 %.1241308, 2
  %gep313.2 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %216
  %gep315.2 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %216
  %217 = load <2 x float>, ptr %gep313.2, align 4, !tbaa !13
  store <2 x float> %217, ptr %gep315.2, align 4, !tbaa !13
  %218 = add nuw i64 %.1241308, 3
  %gep313.3 = getelementptr %struct.complex, ptr %invariant.gep312, i64 %218
  %gep315.3 = getelementptr %struct.complex, ptr %invariant.gep314, i64 %218
  %219 = load <2 x float>, ptr %gep313.3, align 4, !tbaa !13
  store <2 x float> %219, ptr %gep315.3, align 4, !tbaa !13
  %220 = add nuw i64 %.1241308, 4
  %exitcond346.not.3 = icmp eq i64 %218, %174
  br i1 %exitcond346.not.3, label %._crit_edge311, label %scalar.ph449, !llvm.loop !27

._crit_edge311:                                   ; preds = %scalar.ph449.prol.loopexit, %scalar.ph449, %middle.block448, %198
  br i1 %.not252.not316, label %.lr.ph319, label %._crit_edge320

.lr.ph319:                                        ; preds = %._crit_edge311
  %221 = add nsw i64 %.1243324, -1
  %222 = mul nsw i64 %175, %221
  %invariant.gep321 = getelementptr %struct.complex, ptr %7, i64 %222
  br i1 %min.iters.check420, label %scalar.ph419.preheader, label %vector.ph421

vector.ph421:                                     ; preds = %.lr.ph319
  %invariant.gep519 = getelementptr i8, ptr %invariant.gep321, i64 16
  br label %vector.body426

vector.body426:                                   ; preds = %vector.body426, %vector.ph421
  %index427 = phi i64 [ 0, %vector.ph421 ], [ %index.next429, %vector.body426 ]
  %offset.idx428 = add i64 %174, %index427
  %223 = getelementptr %struct.complex, ptr %invariant.gep321, i64 %offset.idx428
  %gep520 = getelementptr %struct.complex, ptr %invariant.gep519, i64 %offset.idx428
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %223, align 4, !tbaa !13
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep520, align 4, !tbaa !13
  %index.next429 = add nuw i64 %index427, 4
  %224 = icmp eq i64 %index.next429, %n.vec423
  br i1 %224, label %middle.block418, label %vector.body426, !llvm.loop !28

middle.block418:                                  ; preds = %vector.body426
  br i1 %cmp.n430, label %._crit_edge320, label %scalar.ph419.preheader

scalar.ph419.preheader:                           ; preds = %middle.block418, %.lr.ph319
  %.2.in317.ph = phi i64 [ %174, %.lr.ph319 ], [ %ind.end424, %middle.block418 ]
  br label %scalar.ph419

scalar.ph419:                                     ; preds = %scalar.ph419.preheader, %scalar.ph419
  %.2.in317 = phi i64 [ %.2, %scalar.ph419 ], [ %.2.in317.ph, %scalar.ph419.preheader ]
  %.2 = add nsw i64 %.2.in317, 1
  %gep322 = getelementptr %struct.complex, ptr %invariant.gep321, i64 %.2.in317
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep322, align 4, !tbaa !13
  %exitcond347.not = icmp eq i64 %.2, %175
  br i1 %exitcond347.not, label %._crit_edge320, label %scalar.ph419, !llvm.loop !29

._crit_edge320:                                   ; preds = %scalar.ph419, %middle.block418, %._crit_edge311
  %225 = add nuw i64 %.1243324, 1
  %exitcond348.not = icmp eq i64 %.1243324, %173
  br i1 %exitcond348.not, label %.loopexit, label %198, !llvm.loop !30

226:                                              ; preds = %._crit_edge273
  %227 = call i64 @s_cmp(ptr noundef %0, ptr noundef nonnull @.str.6, i64 noundef 2, i64 noundef 2) #3
  %228 = icmp eq i64 %227, 0
  br i1 %228, label %235, label %229

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

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

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

.lr.ph306:                                        ; preds = %235
  %237 = zext i1 %38 to i64
  %238 = sext i1 %38 to i64
  %239 = load i64, ptr %8, align 8, !tbaa !5
  %240 = shl i64 %239, 3
  %241 = shl i64 %17, 3
  %invariant.gep511 = getelementptr i8, ptr %7, i64 -8
  %invariant.gep513 = getelementptr i8, ptr %7, i64 -4
  %invariant.gep515 = getelementptr i8, ptr %5, i64 -8
  %invariant.gep517 = getelementptr i8, ptr %5, i64 -4
  br label %242

242:                                              ; preds = %.lr.ph306, %290
  %indvar = phi i64 [ 0, %.lr.ph306 ], [ %indvar.next, %290 ]
  %.2244304 = phi i64 [ 1, %.lr.ph306 ], [ %291, %290 ]
  %243 = mul i64 %240, %indvar
  %gep512 = getelementptr i8, ptr %invariant.gep511, i64 %243
  %gep514 = getelementptr i8, ptr %invariant.gep513, i64 %243
  %244 = mul i64 %241, %indvar
  %gep516 = getelementptr i8, ptr %invariant.gep515, i64 %244
  %gep518 = getelementptr i8, ptr %invariant.gep517, i64 %244
  %scevgep379 = getelementptr i8, ptr %7, i64 %243
  %scevgep382 = getelementptr i8, ptr %5, i64 %244
  %.0239 = add nuw nsw i64 %.2244304, %237
  %spec.select = add nsw i64 %.2244304, %238
  %.1 = select i1 %37, i64 1, i64 %.0239
  %.0 = select i1 %37, i64 %spec.select, i64 %236
  %.not247.not282 = icmp ugt i64 %.1, 1
  br i1 %.not247.not282, label %.lr.ph285, label %.preheader

.lr.ph285:                                        ; preds = %242
  %245 = add nsw i64 %.2244304, -1
  %246 = mul nsw i64 %239, %245
  %invariant.gep286 = getelementptr %struct.complex, ptr %20, i64 %246
  %247 = add i64 %.1, -1
  %min.iters.check407 = icmp ult i64 %.1, 5
  br i1 %min.iters.check407, label %scalar.ph406.preheader, label %vector.ph408

scalar.ph406.preheader:                           ; preds = %middle.block405, %.lr.ph285
  %.3283.ph = phi i64 [ 1, %.lr.ph285 ], [ %ind.end411, %middle.block405 ]
  br label %scalar.ph406

vector.ph408:                                     ; preds = %.lr.ph285
  %n.vec410 = and i64 %247, -4
  %ind.end411 = or disjoint i64 %n.vec410, 1
  br label %vector.body413

vector.body413:                                   ; preds = %vector.body413, %vector.ph408
  %index414 = phi i64 [ 0, %vector.ph408 ], [ %index.next416, %vector.body413 ]
  %offset.idx415 = or disjoint i64 %index414, 1
  %248 = or disjoint i64 %index414, 3
  %249 = getelementptr %struct.complex, ptr %invariant.gep286, i64 %offset.idx415
  %250 = getelementptr %struct.complex, ptr %invariant.gep286, 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 !13
  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 !13
  %index.next416 = add nuw i64 %index414, 4
  %251 = icmp eq i64 %index.next416, %n.vec410
  br i1 %251, label %middle.block405, label %vector.body413, !llvm.loop !31

middle.block405:                                  ; preds = %vector.body413
  %cmp.n417 = icmp eq i64 %247, %n.vec410
  br i1 %cmp.n417, label %.preheader, label %scalar.ph406.preheader

.preheader:                                       ; preds = %scalar.ph406, %middle.block405, %242
  %.not248288 = icmp sgt i64 %.1, %.0
  br i1 %.not248288, label %._crit_edge291, label %.lr.ph290

.lr.ph290:                                        ; preds = %.preheader
  %252 = add nsw i64 %.2244304, -1
  %253 = mul nsw i64 %239, %252
  %254 = mul nsw i64 %.2244304, %17
  %invariant.gep292 = getelementptr %struct.complex, ptr %19, i64 %254
  %invariant.gep294 = getelementptr %struct.complex, ptr %20, i64 %253
  %255 = add i64 %.0, 1
  %256 = sub i64 %255, %.1
  %min.iters.check389 = icmp ult i64 %256, 8
  br i1 %min.iters.check389, label %scalar.ph388.preheader, label %vector.memcheck

scalar.ph388.preheader:                           ; preds = %middle.block387, %vector.memcheck, %.lr.ph290
  %.4289.ph = phi i64 [ %.1, %vector.memcheck ], [ %.1, %.lr.ph290 ], [ %ind.end393, %middle.block387 ]
  %257 = add i64 %.0, 1
  %258 = sub i64 %257, %.4289.ph
  %259 = sub i64 %.0, %.4289.ph
  %xtraiter494 = and i64 %258, 3
  %lcmp.mod495.not = icmp eq i64 %xtraiter494, 0
  br i1 %lcmp.mod495.not, label %scalar.ph388.prol.loopexit, label %scalar.ph388.prol

scalar.ph388.prol:                                ; preds = %scalar.ph388.preheader, %scalar.ph388.prol
  %.4289.prol = phi i64 [ %261, %scalar.ph388.prol ], [ %.4289.ph, %scalar.ph388.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph388.prol ], [ 0, %scalar.ph388.preheader ]
  %gep293.prol = getelementptr %struct.complex, ptr %invariant.gep292, i64 %.4289.prol
  %gep295.prol = getelementptr %struct.complex, ptr %invariant.gep294, i64 %.4289.prol
  %260 = load <2 x float>, ptr %gep293.prol, align 4, !tbaa !13
  store <2 x float> %260, ptr %gep295.prol, align 4, !tbaa !13
  %261 = add nuw i64 %.4289.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter494
  br i1 %prol.iter.cmp.not, label %scalar.ph388.prol.loopexit, label %scalar.ph388.prol, !llvm.loop !32

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

vector.memcheck:                                  ; preds = %.lr.ph290
  %263 = shl i64 %.1, 3
  %scevgep371 = getelementptr i8, ptr %gep512, i64 %263
  %264 = shl i64 %.0, 3
  %scevgep373 = getelementptr i8, ptr %gep514, i64 %264
  %scevgep375 = getelementptr i8, ptr %gep516, i64 %263
  %scevgep377 = getelementptr i8, ptr %gep518, i64 %264
  %scevgep378 = getelementptr i8, ptr %gep514, i64 %263
  %scevgep380 = getelementptr i8, ptr %scevgep379, i64 %264
  %scevgep381 = getelementptr i8, ptr %gep518, i64 %263
  %scevgep383 = getelementptr i8, ptr %scevgep382, i64 %264
  %bound0 = icmp ult ptr %scevgep371, %scevgep377
  %bound1 = icmp ult ptr %scevgep375, %scevgep373
  %found.conflict = and i1 %bound0, %bound1
  %bound0384 = icmp ult ptr %scevgep378, %scevgep383
  %bound1385 = icmp ult ptr %scevgep381, %scevgep380
  %found.conflict386 = and i1 %bound0384, %bound1385
  %conflict.rdx = or i1 %found.conflict, %found.conflict386
  br i1 %conflict.rdx, label %scalar.ph388.preheader, label %vector.ph390

vector.ph390:                                     ; preds = %vector.memcheck
  %n.vec392 = and i64 %256, -4
  %ind.end393 = add i64 %.1, %n.vec392
  br label %vector.body395

vector.body395:                                   ; preds = %vector.body395, %vector.ph390
  %index396 = phi i64 [ 0, %vector.ph390 ], [ %index.next403, %vector.body395 ]
  %offset.idx397 = add i64 %.1, %index396
  %265 = add i64 %offset.idx397, 2
  %266 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %offset.idx397
  %267 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %265
  %wide.vec = load <4 x float>, ptr %266, align 4, !tbaa !13
  %wide.vec398 = load <4 x float>, ptr %267, align 4, !tbaa !13
  %268 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %offset.idx397
  %269 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %265
  store <4 x float> %wide.vec, ptr %268, align 4, !tbaa !13
  store <4 x float> %wide.vec398, ptr %269, align 4, !tbaa !13
  %index.next403 = add nuw i64 %index396, 4
  %270 = icmp eq i64 %index.next403, %n.vec392
  br i1 %270, label %middle.block387, label %vector.body395, !llvm.loop !33

middle.block387:                                  ; preds = %vector.body395
  %cmp.n404 = icmp eq i64 %256, %n.vec392
  br i1 %cmp.n404, label %._crit_edge291, label %scalar.ph388.preheader

scalar.ph406:                                     ; preds = %scalar.ph406.preheader, %scalar.ph406
  %.3283 = phi i64 [ %271, %scalar.ph406 ], [ %.3283.ph, %scalar.ph406.preheader ]
  %gep287 = getelementptr %struct.complex, ptr %invariant.gep286, i64 %.3283
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep287, align 4, !tbaa !13
  %271 = add nuw nsw i64 %.3283, 1
  %exitcond342.not = icmp eq i64 %271, %.1
  br i1 %exitcond342.not, label %.preheader, label %scalar.ph406, !llvm.loop !34

scalar.ph388:                                     ; preds = %scalar.ph388.prol.loopexit, %scalar.ph388
  %.4289 = phi i64 [ %279, %scalar.ph388 ], [ %.4289.unr, %scalar.ph388.prol.loopexit ]
  %gep293 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %.4289
  %gep295 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %.4289
  %272 = load <2 x float>, ptr %gep293, align 4, !tbaa !13
  store <2 x float> %272, ptr %gep295, align 4, !tbaa !13
  %273 = add nuw i64 %.4289, 1
  %gep293.1 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %273
  %gep295.1 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %273
  %274 = load <2 x float>, ptr %gep293.1, align 4, !tbaa !13
  store <2 x float> %274, ptr %gep295.1, align 4, !tbaa !13
  %275 = add nuw i64 %.4289, 2
  %gep293.2 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %275
  %gep295.2 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %275
  %276 = load <2 x float>, ptr %gep293.2, align 4, !tbaa !13
  store <2 x float> %276, ptr %gep295.2, align 4, !tbaa !13
  %277 = add nuw i64 %.4289, 3
  %gep293.3 = getelementptr %struct.complex, ptr %invariant.gep292, i64 %277
  %gep295.3 = getelementptr %struct.complex, ptr %invariant.gep294, i64 %277
  %278 = load <2 x float>, ptr %gep293.3, align 4, !tbaa !13
  store <2 x float> %278, ptr %gep295.3, align 4, !tbaa !13
  %279 = add nuw i64 %.4289, 4
  %exitcond343.not.3 = icmp eq i64 %277, %.0
  br i1 %exitcond343.not.3, label %._crit_edge291, label %scalar.ph388, !llvm.loop !35

._crit_edge291:                                   ; preds = %scalar.ph388.prol.loopexit, %scalar.ph388, %middle.block387, %.preheader
  %.not249.not296 = icmp slt i64 %.0, %239
  br i1 %.not249.not296, label %.lr.ph299, label %._crit_edge300

.lr.ph299:                                        ; preds = %._crit_edge291
  %280 = add nsw i64 %.2244304, -1
  %281 = mul nsw i64 %239, %280
  %invariant.gep301 = getelementptr %struct.complex, ptr %7, i64 %281
  %282 = sub i64 %239, %.0
  %min.iters.check = icmp ult i64 %282, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph299
  %n.vec = and i64 %282, -4
  %ind.end = add i64 %.0, %n.vec
  %invariant.gep509 = getelementptr i8, ptr %invariant.gep301, 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 %.0, %index
  %283 = getelementptr %struct.complex, ptr %invariant.gep301, i64 %offset.idx
  %gep510 = getelementptr %struct.complex, ptr %invariant.gep509, i64 %offset.idx
  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 !13
  store <4 x float> <float -1.000000e+10, float 1.000000e+10, float -1.000000e+10, float 1.000000e+10>, ptr %gep510, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %284 = icmp eq i64 %index.next, %n.vec
  br i1 %284, label %middle.block, label %vector.body, !llvm.loop !36

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

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph299
  %.5.in297.ph = phi i64 [ %.0, %.lr.ph299 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5.in297 = phi i64 [ %.5, %scalar.ph ], [ %.5.in297.ph, %scalar.ph.preheader ]
  %.5 = add nsw i64 %.5.in297, 1
  %gep302 = getelementptr %struct.complex, ptr %invariant.gep301, i64 %.5.in297
  store <2 x float> <float -1.000000e+10, float 1.000000e+10>, ptr %gep302, align 4, !tbaa !13
  %exitcond344.not = icmp eq i64 %.5, %239
  br i1 %exitcond344.not, label %._crit_edge300, label %scalar.ph, !llvm.loop !37

._crit_edge300:                                   ; preds = %scalar.ph, %middle.block, %._crit_edge291
  br i1 %24, label %285, label %290

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

290:                                              ; preds = %._crit_edge300, %285
  %291 = add nuw i64 %.2244304, 1
  %exitcond345.not = icmp eq i64 %.2244304, %236
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond345.not, label %.loopexit, label %242, !llvm.loop !38

.loopexit:                                        ; preds = %290, %._crit_edge320, %235, %172, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  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

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 = { 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, !12, i64 4}
!11 = !{!"", !12, i64 0, !12, i64 4}
!12 = !{!"float", !7, i64 0}
!13 = !{!12, !12, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!11, !12, i64 0}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15, !19}
!19 = !{!"llvm.loop.unswitch.partial.disable"}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.unroll.disable"}
!22 = distinct !{!22, !21}
!23 = distinct !{!23, !15, !24, !25}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !21}
!27 = distinct !{!27, !15, !24}
!28 = distinct !{!28, !15, !24, !25}
!29 = distinct !{!29, !15, !25, !24}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15, !24, !25}
!32 = distinct !{!32, !21}
!33 = distinct !{!33, !15, !24, !25}
!34 = distinct !{!34, !15, !25, !24}
!35 = distinct !{!35, !15, !24}
!36 = distinct !{!36, !15, !24, !25}
!37 = distinct !{!37, !15, !25, !24}
!38 = distinct !{!38, !15}


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