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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@c__1 = external hidden global i32, align 4

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

89:                                               ; preds = %12
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = call i32 @lsame_(ptr noundef %90, ptr noundef @.str.1)
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %95, label %93

93:                                               ; preds = %89
  %94 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -1, ptr %94, align 4, !tbaa !9
  br label %134

95:                                               ; preds = %89, %12
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %99, label %101

99:                                               ; preds = %95
  %100 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -2, ptr %100, align 4, !tbaa !9
  br label %133

101:                                              ; preds = %95
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = load ptr, ptr %15, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp sge i32 1, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %101
  br label %111

108:                                              ; preds = %101
  %109 = load ptr, ptr %15, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %108, %107
  %112 = phi i32 [ 1, %107 ], [ %110, %108 ]
  %113 = icmp slt i32 %103, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -4, ptr %115, align 4, !tbaa !9
  br label %132

116:                                              ; preds = %111
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp sge i32 1, %120
  br i1 %121, label %122, label %123

122:                                              ; preds = %116
  br label %126

123:                                              ; preds = %116
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  br label %126

126:                                              ; preds = %123, %122
  %127 = phi i32 [ 1, %122 ], [ %125, %123 ]
  %128 = icmp slt i32 %118, %127
  br i1 %128, label %129, label %131

129:                                              ; preds = %126
  %130 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -6, ptr %130, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %129, %126
  br label %132

132:                                              ; preds = %131, %114
  br label %133

133:                                              ; preds = %132, %99
  br label %134

134:                                              ; preds = %133, %93
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %144

138:                                              ; preds = %134
  %139 = load ptr, ptr %23, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = sub nsw i32 0, %140
  store i32 %141, ptr %30, align 4, !tbaa !9
  %142 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %30, i32 noundef 13)
  %143 = load float, ptr %34, align 4, !tbaa !11
  store float %143, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %1016

144:                                              ; preds = %134
  store i32 0, ptr %44, align 4, !tbaa !9
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = call i32 @lsame_(ptr noundef %145, ptr noundef @.str)
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %148, %144
  store float 0.000000e+00, ptr %42, align 4, !tbaa !11
  %150 = load i32, ptr %44, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %422

152:                                              ; preds = %149
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  store i32 %154, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %155

155:                                              ; preds = %418, %152
  %156 = load i32, ptr %39, align 4, !tbaa !9
  %157 = load i32, ptr %30, align 4, !tbaa !9
  %158 = icmp sle i32 %156, %157
  br i1 %158, label %159, label %421

159:                                              ; preds = %155
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %160 = load ptr, ptr %22, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %289

163:                                              ; preds = %159
  %164 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %164, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %165

165:                                              ; preds = %221, %163
  %166 = load i32, ptr %40, align 4, !tbaa !9
  %167 = load i32, ptr %31, align 4, !tbaa !9
  %168 = icmp sle i32 %166, %167
  br i1 %168, label %169, label %224

169:                                              ; preds = %165
  %170 = load i32, ptr %40, align 4, !tbaa !9
  %171 = load i32, ptr %39, align 4, !tbaa !9
  %172 = load i32, ptr %26, align 4, !tbaa !9
  %173 = mul nsw i32 %171, %172
  %174 = add nsw i32 %170, %173
  store i32 %174, ptr %32, align 4, !tbaa !9
  %175 = load ptr, ptr %16, align 8, !tbaa !5
  %176 = load i32, ptr %32, align 4, !tbaa !9
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds %struct.complex, ptr %175, i64 %177
  %179 = getelementptr inbounds %struct.complex, ptr %178, i32 0, i32 0
  %180 = load float, ptr %179, align 4, !tbaa !13
  store float %180, ptr %35, align 4, !tbaa !11
  %181 = load float, ptr %35, align 4, !tbaa !11
  %182 = fcmp oge float %181, 0.000000e+00
  br i1 %182, label %183, label %185

183:                                              ; preds = %169
  %184 = load float, ptr %35, align 4, !tbaa !11
  br label %188

185:                                              ; preds = %169
  %186 = load float, ptr %35, align 4, !tbaa !11
  %187 = fneg float %186
  br label %188

188:                                              ; preds = %185, %183
  %189 = phi float [ %184, %183 ], [ %187, %185 ]
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = load i32, ptr %40, align 4, !tbaa !9
  %192 = load i32, ptr %39, align 4, !tbaa !9
  %193 = load i32, ptr %26, align 4, !tbaa !9
  %194 = mul nsw i32 %192, %193
  %195 = add nsw i32 %191, %194
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.complex, ptr %190, i64 %196
  %198 = call <2 x float> @Cf(ptr noundef %197)
  store <2 x float> %198, ptr %48, align 4
  %199 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 0
  %200 = load float, ptr %199, align 4
  %201 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 1
  %202 = load float, ptr %201, align 4
  store float %202, ptr %36, align 4, !tbaa !11
  %203 = load float, ptr %36, align 4, !tbaa !11
  %204 = fcmp oge float %203, 0.000000e+00
  br i1 %204, label %205, label %207

205:                                              ; preds = %188
  %206 = load float, ptr %36, align 4, !tbaa !11
  br label %210

207:                                              ; preds = %188
  %208 = load float, ptr %36, align 4, !tbaa !11
  %209 = fneg float %208
  br label %210

210:                                              ; preds = %207, %205
  %211 = phi float [ %206, %205 ], [ %209, %207 ]
  %212 = fadd float %189, %211
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i32, ptr %40, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds float, ptr %213, i64 %215
  %217 = load float, ptr %216, align 4, !tbaa !11
  %218 = fdiv float %212, %217
  %219 = load float, ptr %46, align 4, !tbaa !11
  %220 = fadd float %219, %218
  store float %220, ptr %46, align 4, !tbaa !11
  br label %221

221:                                              ; preds = %210
  %222 = load i32, ptr %40, align 4, !tbaa !9
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %40, align 4, !tbaa !9
  br label %165, !llvm.loop !15

224:                                              ; preds = %165
  %225 = load ptr, ptr %15, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  store i32 %226, ptr %31, align 4, !tbaa !9
  %227 = load i32, ptr %39, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %40, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %285, %224
  %230 = load i32, ptr %40, align 4, !tbaa !9
  %231 = load i32, ptr %31, align 4, !tbaa !9
  %232 = icmp sle i32 %230, %231
  br i1 %232, label %233, label %288

233:                                              ; preds = %229
  %234 = load i32, ptr %39, align 4, !tbaa !9
  %235 = load i32, ptr %40, align 4, !tbaa !9
  %236 = load i32, ptr %26, align 4, !tbaa !9
  %237 = mul nsw i32 %235, %236
  %238 = add nsw i32 %234, %237
  store i32 %238, ptr %32, align 4, !tbaa !9
  %239 = load ptr, ptr %16, align 8, !tbaa !5
  %240 = load i32, ptr %32, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds %struct.complex, ptr %239, i64 %241
  %243 = getelementptr inbounds %struct.complex, ptr %242, i32 0, i32 0
  %244 = load float, ptr %243, align 4, !tbaa !13
  store float %244, ptr %35, align 4, !tbaa !11
  %245 = load float, ptr %35, align 4, !tbaa !11
  %246 = fcmp oge float %245, 0.000000e+00
  br i1 %246, label %247, label %249

247:                                              ; preds = %233
  %248 = load float, ptr %35, align 4, !tbaa !11
  br label %252

249:                                              ; preds = %233
  %250 = load float, ptr %35, align 4, !tbaa !11
  %251 = fneg float %250
  br label %252

252:                                              ; preds = %249, %247
  %253 = phi float [ %248, %247 ], [ %251, %249 ]
  %254 = load ptr, ptr %16, align 8, !tbaa !5
  %255 = load i32, ptr %39, align 4, !tbaa !9
  %256 = load i32, ptr %40, align 4, !tbaa !9
  %257 = load i32, ptr %26, align 4, !tbaa !9
  %258 = mul nsw i32 %256, %257
  %259 = add nsw i32 %255, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds %struct.complex, ptr %254, i64 %260
  %262 = call <2 x float> @Cf(ptr noundef %261)
  store <2 x float> %262, ptr %49, align 4
  %263 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 0
  %264 = load float, ptr %263, align 4
  %265 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 1
  %266 = load float, ptr %265, align 4
  store float %266, ptr %36, align 4, !tbaa !11
  %267 = load float, ptr %36, align 4, !tbaa !11
  %268 = fcmp oge float %267, 0.000000e+00
  br i1 %268, label %269, label %271

269:                                              ; preds = %252
  %270 = load float, ptr %36, align 4, !tbaa !11
  br label %274

271:                                              ; preds = %252
  %272 = load float, ptr %36, align 4, !tbaa !11
  %273 = fneg float %272
  br label %274

274:                                              ; preds = %271, %269
  %275 = phi float [ %270, %269 ], [ %273, %271 ]
  %276 = fadd float %253, %275
  %277 = load ptr, ptr %21, align 8, !tbaa !5
  %278 = load i32, ptr %40, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds float, ptr %277, i64 %279
  %281 = load float, ptr %280, align 4, !tbaa !11
  %282 = fdiv float %276, %281
  %283 = load float, ptr %46, align 4, !tbaa !11
  %284 = fadd float %283, %282
  store float %284, ptr %46, align 4, !tbaa !11
  br label %285

285:                                              ; preds = %274
  %286 = load i32, ptr %40, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %40, align 4, !tbaa !9
  br label %229, !llvm.loop !17

288:                                              ; preds = %229
  br label %403

289:                                              ; preds = %159
  %290 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %290, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %341, %289
  %292 = load i32, ptr %40, align 4, !tbaa !9
  %293 = load i32, ptr %31, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %344

295:                                              ; preds = %291
  %296 = load i32, ptr %40, align 4, !tbaa !9
  %297 = load i32, ptr %39, align 4, !tbaa !9
  %298 = load i32, ptr %26, align 4, !tbaa !9
  %299 = mul nsw i32 %297, %298
  %300 = add nsw i32 %296, %299
  store i32 %300, ptr %32, align 4, !tbaa !9
  %301 = load ptr, ptr %16, align 8, !tbaa !5
  %302 = load i32, ptr %32, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.complex, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.complex, ptr %304, i32 0, i32 0
  %306 = load float, ptr %305, align 4, !tbaa !13
  store float %306, ptr %35, align 4, !tbaa !11
  %307 = load float, ptr %35, align 4, !tbaa !11
  %308 = fcmp oge float %307, 0.000000e+00
  br i1 %308, label %309, label %311

309:                                              ; preds = %295
  %310 = load float, ptr %35, align 4, !tbaa !11
  br label %314

311:                                              ; preds = %295
  %312 = load float, ptr %35, align 4, !tbaa !11
  %313 = fneg float %312
  br label %314

314:                                              ; preds = %311, %309
  %315 = phi float [ %310, %309 ], [ %313, %311 ]
  %316 = load ptr, ptr %16, align 8, !tbaa !5
  %317 = load i32, ptr %40, align 4, !tbaa !9
  %318 = load i32, ptr %39, align 4, !tbaa !9
  %319 = load i32, ptr %26, align 4, !tbaa !9
  %320 = mul nsw i32 %318, %319
  %321 = add nsw i32 %317, %320
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %316, i64 %322
  %324 = call <2 x float> @Cf(ptr noundef %323)
  store <2 x float> %324, ptr %50, align 4
  %325 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 0
  %326 = load float, ptr %325, align 4
  %327 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 1
  %328 = load float, ptr %327, align 4
  store float %328, ptr %36, align 4, !tbaa !11
  %329 = load float, ptr %36, align 4, !tbaa !11
  %330 = fcmp oge float %329, 0.000000e+00
  br i1 %330, label %331, label %333

331:                                              ; preds = %314
  %332 = load float, ptr %36, align 4, !tbaa !11
  br label %336

333:                                              ; preds = %314
  %334 = load float, ptr %36, align 4, !tbaa !11
  %335 = fneg float %334
  br label %336

336:                                              ; preds = %333, %331
  %337 = phi float [ %332, %331 ], [ %335, %333 ]
  %338 = fadd float %315, %337
  %339 = load float, ptr %46, align 4, !tbaa !11
  %340 = fadd float %339, %338
  store float %340, ptr %46, align 4, !tbaa !11
  br label %341

341:                                              ; preds = %336
  %342 = load i32, ptr %40, align 4, !tbaa !9
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %40, align 4, !tbaa !9
  br label %291, !llvm.loop !18

344:                                              ; preds = %291
  %345 = load ptr, ptr %15, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  store i32 %346, ptr %31, align 4, !tbaa !9
  %347 = load i32, ptr %39, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %40, align 4, !tbaa !9
  br label %349

349:                                              ; preds = %399, %344
  %350 = load i32, ptr %40, align 4, !tbaa !9
  %351 = load i32, ptr %31, align 4, !tbaa !9
  %352 = icmp sle i32 %350, %351
  br i1 %352, label %353, label %402

353:                                              ; preds = %349
  %354 = load i32, ptr %39, align 4, !tbaa !9
  %355 = load i32, ptr %40, align 4, !tbaa !9
  %356 = load i32, ptr %26, align 4, !tbaa !9
  %357 = mul nsw i32 %355, %356
  %358 = add nsw i32 %354, %357
  store i32 %358, ptr %32, align 4, !tbaa !9
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  %360 = load i32, ptr %32, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds %struct.complex, ptr %359, i64 %361
  %363 = getelementptr inbounds %struct.complex, ptr %362, i32 0, i32 0
  %364 = load float, ptr %363, align 4, !tbaa !13
  store float %364, ptr %35, align 4, !tbaa !11
  %365 = load float, ptr %35, align 4, !tbaa !11
  %366 = fcmp oge float %365, 0.000000e+00
  br i1 %366, label %367, label %369

367:                                              ; preds = %353
  %368 = load float, ptr %35, align 4, !tbaa !11
  br label %372

369:                                              ; preds = %353
  %370 = load float, ptr %35, align 4, !tbaa !11
  %371 = fneg float %370
  br label %372

372:                                              ; preds = %369, %367
  %373 = phi float [ %368, %367 ], [ %371, %369 ]
  %374 = load ptr, ptr %16, align 8, !tbaa !5
  %375 = load i32, ptr %39, align 4, !tbaa !9
  %376 = load i32, ptr %40, align 4, !tbaa !9
  %377 = load i32, ptr %26, align 4, !tbaa !9
  %378 = mul nsw i32 %376, %377
  %379 = add nsw i32 %375, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.complex, ptr %374, i64 %380
  %382 = call <2 x float> @Cf(ptr noundef %381)
  store <2 x float> %382, ptr %51, align 4
  %383 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 0
  %384 = load float, ptr %383, align 4
  %385 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 1
  %386 = load float, ptr %385, align 4
  store float %386, ptr %36, align 4, !tbaa !11
  %387 = load float, ptr %36, align 4, !tbaa !11
  %388 = fcmp oge float %387, 0.000000e+00
  br i1 %388, label %389, label %391

389:                                              ; preds = %372
  %390 = load float, ptr %36, align 4, !tbaa !11
  br label %394

391:                                              ; preds = %372
  %392 = load float, ptr %36, align 4, !tbaa !11
  %393 = fneg float %392
  br label %394

394:                                              ; preds = %391, %389
  %395 = phi float [ %390, %389 ], [ %393, %391 ]
  %396 = fadd float %373, %395
  %397 = load float, ptr %46, align 4, !tbaa !11
  %398 = fadd float %397, %396
  store float %398, ptr %46, align 4, !tbaa !11
  br label %399

399:                                              ; preds = %394
  %400 = load i32, ptr %40, align 4, !tbaa !9
  %401 = add nsw i32 %400, 1
  store i32 %401, ptr %40, align 4, !tbaa !9
  br label %349, !llvm.loop !19

402:                                              ; preds = %349
  br label %403

403:                                              ; preds = %402, %288
  %404 = load float, ptr %46, align 4, !tbaa !11
  %405 = load ptr, ptr %25, align 8, !tbaa !5
  %406 = load i32, ptr %39, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds float, ptr %405, i64 %407
  store float %404, ptr %408, align 4, !tbaa !11
  %409 = load float, ptr %42, align 4, !tbaa !11
  %410 = load float, ptr %46, align 4, !tbaa !11
  %411 = fcmp oge float %409, %410
  br i1 %411, label %412, label %414

412:                                              ; preds = %403
  %413 = load float, ptr %42, align 4, !tbaa !11
  br label %416

414:                                              ; preds = %403
  %415 = load float, ptr %46, align 4, !tbaa !11
  br label %416

416:                                              ; preds = %414, %412
  %417 = phi float [ %413, %412 ], [ %415, %414 ]
  store float %417, ptr %42, align 4, !tbaa !11
  br label %418

418:                                              ; preds = %416
  %419 = load i32, ptr %39, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %39, align 4, !tbaa !9
  br label %155, !llvm.loop !20

421:                                              ; preds = %155
  br label %692

422:                                              ; preds = %149
  %423 = load ptr, ptr %15, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  store i32 %424, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %688, %422
  %426 = load i32, ptr %39, align 4, !tbaa !9
  %427 = load i32, ptr %30, align 4, !tbaa !9
  %428 = icmp sle i32 %426, %427
  br i1 %428, label %429, label %691

429:                                              ; preds = %425
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %430 = load ptr, ptr %22, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %559

433:                                              ; preds = %429
  %434 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %434, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %491, %433
  %436 = load i32, ptr %40, align 4, !tbaa !9
  %437 = load i32, ptr %31, align 4, !tbaa !9
  %438 = icmp sle i32 %436, %437
  br i1 %438, label %439, label %494

439:                                              ; preds = %435
  %440 = load i32, ptr %39, align 4, !tbaa !9
  %441 = load i32, ptr %40, align 4, !tbaa !9
  %442 = load i32, ptr %26, align 4, !tbaa !9
  %443 = mul nsw i32 %441, %442
  %444 = add nsw i32 %440, %443
  store i32 %444, ptr %32, align 4, !tbaa !9
  %445 = load ptr, ptr %16, align 8, !tbaa !5
  %446 = load i32, ptr %32, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds %struct.complex, ptr %445, i64 %447
  %449 = getelementptr inbounds %struct.complex, ptr %448, i32 0, i32 0
  %450 = load float, ptr %449, align 4, !tbaa !13
  store float %450, ptr %35, align 4, !tbaa !11
  %451 = load float, ptr %35, align 4, !tbaa !11
  %452 = fcmp oge float %451, 0.000000e+00
  br i1 %452, label %453, label %455

453:                                              ; preds = %439
  %454 = load float, ptr %35, align 4, !tbaa !11
  br label %458

455:                                              ; preds = %439
  %456 = load float, ptr %35, align 4, !tbaa !11
  %457 = fneg float %456
  br label %458

458:                                              ; preds = %455, %453
  %459 = phi float [ %454, %453 ], [ %457, %455 ]
  %460 = load ptr, ptr %16, align 8, !tbaa !5
  %461 = load i32, ptr %39, align 4, !tbaa !9
  %462 = load i32, ptr %40, align 4, !tbaa !9
  %463 = load i32, ptr %26, align 4, !tbaa !9
  %464 = mul nsw i32 %462, %463
  %465 = add nsw i32 %461, %464
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds %struct.complex, ptr %460, i64 %466
  %468 = call <2 x float> @Cf(ptr noundef %467)
  store <2 x float> %468, ptr %52, align 4
  %469 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 0
  %470 = load float, ptr %469, align 4
  %471 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 1
  %472 = load float, ptr %471, align 4
  store float %472, ptr %36, align 4, !tbaa !11
  %473 = load float, ptr %36, align 4, !tbaa !11
  %474 = fcmp oge float %473, 0.000000e+00
  br i1 %474, label %475, label %477

475:                                              ; preds = %458
  %476 = load float, ptr %36, align 4, !tbaa !11
  br label %480

477:                                              ; preds = %458
  %478 = load float, ptr %36, align 4, !tbaa !11
  %479 = fneg float %478
  br label %480

480:                                              ; preds = %477, %475
  %481 = phi float [ %476, %475 ], [ %479, %477 ]
  %482 = fadd float %459, %481
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  %484 = load i32, ptr %40, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %483, i64 %485
  %487 = load float, ptr %486, align 4, !tbaa !11
  %488 = fdiv float %482, %487
  %489 = load float, ptr %46, align 4, !tbaa !11
  %490 = fadd float %489, %488
  store float %490, ptr %46, align 4, !tbaa !11
  br label %491

491:                                              ; preds = %480
  %492 = load i32, ptr %40, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %40, align 4, !tbaa !9
  br label %435, !llvm.loop !21

494:                                              ; preds = %435
  %495 = load ptr, ptr %15, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  store i32 %496, ptr %31, align 4, !tbaa !9
  %497 = load i32, ptr %39, align 4, !tbaa !9
  %498 = add nsw i32 %497, 1
  store i32 %498, ptr %40, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %555, %494
  %500 = load i32, ptr %40, align 4, !tbaa !9
  %501 = load i32, ptr %31, align 4, !tbaa !9
  %502 = icmp sle i32 %500, %501
  br i1 %502, label %503, label %558

503:                                              ; preds = %499
  %504 = load i32, ptr %40, align 4, !tbaa !9
  %505 = load i32, ptr %39, align 4, !tbaa !9
  %506 = load i32, ptr %26, align 4, !tbaa !9
  %507 = mul nsw i32 %505, %506
  %508 = add nsw i32 %504, %507
  store i32 %508, ptr %32, align 4, !tbaa !9
  %509 = load ptr, ptr %16, align 8, !tbaa !5
  %510 = load i32, ptr %32, align 4, !tbaa !9
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds %struct.complex, ptr %509, i64 %511
  %513 = getelementptr inbounds %struct.complex, ptr %512, i32 0, i32 0
  %514 = load float, ptr %513, align 4, !tbaa !13
  store float %514, ptr %35, align 4, !tbaa !11
  %515 = load float, ptr %35, align 4, !tbaa !11
  %516 = fcmp oge float %515, 0.000000e+00
  br i1 %516, label %517, label %519

517:                                              ; preds = %503
  %518 = load float, ptr %35, align 4, !tbaa !11
  br label %522

519:                                              ; preds = %503
  %520 = load float, ptr %35, align 4, !tbaa !11
  %521 = fneg float %520
  br label %522

522:                                              ; preds = %519, %517
  %523 = phi float [ %518, %517 ], [ %521, %519 ]
  %524 = load ptr, ptr %16, align 8, !tbaa !5
  %525 = load i32, ptr %40, align 4, !tbaa !9
  %526 = load i32, ptr %39, align 4, !tbaa !9
  %527 = load i32, ptr %26, align 4, !tbaa !9
  %528 = mul nsw i32 %526, %527
  %529 = add nsw i32 %525, %528
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.complex, ptr %524, i64 %530
  %532 = call <2 x float> @Cf(ptr noundef %531)
  store <2 x float> %532, ptr %53, align 4
  %533 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 0
  %534 = load float, ptr %533, align 4
  %535 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 1
  %536 = load float, ptr %535, align 4
  store float %536, ptr %36, align 4, !tbaa !11
  %537 = load float, ptr %36, align 4, !tbaa !11
  %538 = fcmp oge float %537, 0.000000e+00
  br i1 %538, label %539, label %541

539:                                              ; preds = %522
  %540 = load float, ptr %36, align 4, !tbaa !11
  br label %544

541:                                              ; preds = %522
  %542 = load float, ptr %36, align 4, !tbaa !11
  %543 = fneg float %542
  br label %544

544:                                              ; preds = %541, %539
  %545 = phi float [ %540, %539 ], [ %543, %541 ]
  %546 = fadd float %523, %545
  %547 = load ptr, ptr %21, align 8, !tbaa !5
  %548 = load i32, ptr %40, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds float, ptr %547, i64 %549
  %551 = load float, ptr %550, align 4, !tbaa !11
  %552 = fdiv float %546, %551
  %553 = load float, ptr %46, align 4, !tbaa !11
  %554 = fadd float %553, %552
  store float %554, ptr %46, align 4, !tbaa !11
  br label %555

555:                                              ; preds = %544
  %556 = load i32, ptr %40, align 4, !tbaa !9
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %40, align 4, !tbaa !9
  br label %499, !llvm.loop !22

558:                                              ; preds = %499
  br label %673

559:                                              ; preds = %429
  %560 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %560, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %561

561:                                              ; preds = %611, %559
  %562 = load i32, ptr %40, align 4, !tbaa !9
  %563 = load i32, ptr %31, align 4, !tbaa !9
  %564 = icmp sle i32 %562, %563
  br i1 %564, label %565, label %614

565:                                              ; preds = %561
  %566 = load i32, ptr %39, align 4, !tbaa !9
  %567 = load i32, ptr %40, align 4, !tbaa !9
  %568 = load i32, ptr %26, align 4, !tbaa !9
  %569 = mul nsw i32 %567, %568
  %570 = add nsw i32 %566, %569
  store i32 %570, ptr %32, align 4, !tbaa !9
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = load i32, ptr %32, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds %struct.complex, ptr %571, i64 %573
  %575 = getelementptr inbounds %struct.complex, ptr %574, i32 0, i32 0
  %576 = load float, ptr %575, align 4, !tbaa !13
  store float %576, ptr %35, align 4, !tbaa !11
  %577 = load float, ptr %35, align 4, !tbaa !11
  %578 = fcmp oge float %577, 0.000000e+00
  br i1 %578, label %579, label %581

579:                                              ; preds = %565
  %580 = load float, ptr %35, align 4, !tbaa !11
  br label %584

581:                                              ; preds = %565
  %582 = load float, ptr %35, align 4, !tbaa !11
  %583 = fneg float %582
  br label %584

584:                                              ; preds = %581, %579
  %585 = phi float [ %580, %579 ], [ %583, %581 ]
  %586 = load ptr, ptr %16, align 8, !tbaa !5
  %587 = load i32, ptr %39, align 4, !tbaa !9
  %588 = load i32, ptr %40, align 4, !tbaa !9
  %589 = load i32, ptr %26, align 4, !tbaa !9
  %590 = mul nsw i32 %588, %589
  %591 = add nsw i32 %587, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.complex, ptr %586, i64 %592
  %594 = call <2 x float> @Cf(ptr noundef %593)
  store <2 x float> %594, ptr %54, align 4
  %595 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 0
  %596 = load float, ptr %595, align 4
  %597 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 1
  %598 = load float, ptr %597, align 4
  store float %598, ptr %36, align 4, !tbaa !11
  %599 = load float, ptr %36, align 4, !tbaa !11
  %600 = fcmp oge float %599, 0.000000e+00
  br i1 %600, label %601, label %603

601:                                              ; preds = %584
  %602 = load float, ptr %36, align 4, !tbaa !11
  br label %606

603:                                              ; preds = %584
  %604 = load float, ptr %36, align 4, !tbaa !11
  %605 = fneg float %604
  br label %606

606:                                              ; preds = %603, %601
  %607 = phi float [ %602, %601 ], [ %605, %603 ]
  %608 = fadd float %585, %607
  %609 = load float, ptr %46, align 4, !tbaa !11
  %610 = fadd float %609, %608
  store float %610, ptr %46, align 4, !tbaa !11
  br label %611

611:                                              ; preds = %606
  %612 = load i32, ptr %40, align 4, !tbaa !9
  %613 = add nsw i32 %612, 1
  store i32 %613, ptr %40, align 4, !tbaa !9
  br label %561, !llvm.loop !23

614:                                              ; preds = %561
  %615 = load ptr, ptr %15, align 8, !tbaa !5
  %616 = load i32, ptr %615, align 4, !tbaa !9
  store i32 %616, ptr %31, align 4, !tbaa !9
  %617 = load i32, ptr %39, align 4, !tbaa !9
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %40, align 4, !tbaa !9
  br label %619

619:                                              ; preds = %669, %614
  %620 = load i32, ptr %40, align 4, !tbaa !9
  %621 = load i32, ptr %31, align 4, !tbaa !9
  %622 = icmp sle i32 %620, %621
  br i1 %622, label %623, label %672

623:                                              ; preds = %619
  %624 = load i32, ptr %40, align 4, !tbaa !9
  %625 = load i32, ptr %39, align 4, !tbaa !9
  %626 = load i32, ptr %26, align 4, !tbaa !9
  %627 = mul nsw i32 %625, %626
  %628 = add nsw i32 %624, %627
  store i32 %628, ptr %32, align 4, !tbaa !9
  %629 = load ptr, ptr %16, align 8, !tbaa !5
  %630 = load i32, ptr %32, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.complex, ptr %629, i64 %631
  %633 = getelementptr inbounds %struct.complex, ptr %632, i32 0, i32 0
  %634 = load float, ptr %633, align 4, !tbaa !13
  store float %634, ptr %35, align 4, !tbaa !11
  %635 = load float, ptr %35, align 4, !tbaa !11
  %636 = fcmp oge float %635, 0.000000e+00
  br i1 %636, label %637, label %639

637:                                              ; preds = %623
  %638 = load float, ptr %35, align 4, !tbaa !11
  br label %642

639:                                              ; preds = %623
  %640 = load float, ptr %35, align 4, !tbaa !11
  %641 = fneg float %640
  br label %642

642:                                              ; preds = %639, %637
  %643 = phi float [ %638, %637 ], [ %641, %639 ]
  %644 = load ptr, ptr %16, align 8, !tbaa !5
  %645 = load i32, ptr %40, align 4, !tbaa !9
  %646 = load i32, ptr %39, align 4, !tbaa !9
  %647 = load i32, ptr %26, align 4, !tbaa !9
  %648 = mul nsw i32 %646, %647
  %649 = add nsw i32 %645, %648
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds %struct.complex, ptr %644, i64 %650
  %652 = call <2 x float> @Cf(ptr noundef %651)
  store <2 x float> %652, ptr %55, align 4
  %653 = getelementptr inbounds { float, float }, ptr %55, i32 0, i32 0
  %654 = load float, ptr %653, align 4
  %655 = getelementptr inbounds { float, float }, ptr %55, i32 0, i32 1
  %656 = load float, ptr %655, align 4
  store float %656, ptr %36, align 4, !tbaa !11
  %657 = load float, ptr %36, align 4, !tbaa !11
  %658 = fcmp oge float %657, 0.000000e+00
  br i1 %658, label %659, label %661

659:                                              ; preds = %642
  %660 = load float, ptr %36, align 4, !tbaa !11
  br label %664

661:                                              ; preds = %642
  %662 = load float, ptr %36, align 4, !tbaa !11
  %663 = fneg float %662
  br label %664

664:                                              ; preds = %661, %659
  %665 = phi float [ %660, %659 ], [ %663, %661 ]
  %666 = fadd float %643, %665
  %667 = load float, ptr %46, align 4, !tbaa !11
  %668 = fadd float %667, %666
  store float %668, ptr %46, align 4, !tbaa !11
  br label %669

669:                                              ; preds = %664
  %670 = load i32, ptr %40, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %40, align 4, !tbaa !9
  br label %619, !llvm.loop !24

672:                                              ; preds = %619
  br label %673

673:                                              ; preds = %672, %558
  %674 = load float, ptr %46, align 4, !tbaa !11
  %675 = load ptr, ptr %25, align 8, !tbaa !5
  %676 = load i32, ptr %39, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds float, ptr %675, i64 %677
  store float %674, ptr %678, align 4, !tbaa !11
  %679 = load float, ptr %42, align 4, !tbaa !11
  %680 = load float, ptr %46, align 4, !tbaa !11
  %681 = fcmp oge float %679, %680
  br i1 %681, label %682, label %684

682:                                              ; preds = %673
  %683 = load float, ptr %42, align 4, !tbaa !11
  br label %686

684:                                              ; preds = %673
  %685 = load float, ptr %46, align 4, !tbaa !11
  br label %686

686:                                              ; preds = %684, %682
  %687 = phi float [ %683, %682 ], [ %685, %684 ]
  store float %687, ptr %42, align 4, !tbaa !11
  br label %688

688:                                              ; preds = %686
  %689 = load i32, ptr %39, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr %39, align 4, !tbaa !9
  br label %425, !llvm.loop !25

691:                                              ; preds = %425
  br label %692

692:                                              ; preds = %691, %421
  %693 = load ptr, ptr %15, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = icmp eq i32 %694, 0
  br i1 %695, label %696, label %698

696:                                              ; preds = %692
  store float 1.000000e+00, ptr %34, align 4, !tbaa !11
  %697 = load float, ptr %34, align 4, !tbaa !11
  store float %697, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %1016

698:                                              ; preds = %692
  %699 = load float, ptr %42, align 4, !tbaa !11
  %700 = fcmp oeq float %699, 0.000000e+00
  br i1 %700, label %701, label %703

701:                                              ; preds = %698
  %702 = load float, ptr %34, align 4, !tbaa !11
  store float %702, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %1016

703:                                              ; preds = %698
  br label %704

704:                                              ; preds = %703
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %1007, %704
  %706 = load ptr, ptr %15, align 8, !tbaa !5
  %707 = load ptr, ptr %24, align 8, !tbaa !5
  %708 = load ptr, ptr %15, align 8, !tbaa !5
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = add nsw i32 %709, 1
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds %struct.complex, ptr %707, i64 %711
  %713 = load ptr, ptr %24, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.complex, ptr %713, i64 1
  %715 = getelementptr inbounds [3 x i32], ptr %41, i64 0, i64 0
  call void @clacn2_(ptr noundef %706, ptr noundef %712, ptr noundef %714, ptr noundef %45, ptr noundef %38, ptr noundef %715)
  %716 = load i32, ptr %38, align 4, !tbaa !9
  %717 = icmp ne i32 %716, 0
  br i1 %717, label %718, label %1008

718:                                              ; preds = %705
  %719 = load i32, ptr %38, align 4, !tbaa !9
  %720 = icmp eq i32 %719, 2
  br i1 %720, label %721, label %864

721:                                              ; preds = %718
  %722 = load ptr, ptr %15, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  store i32 %723, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %724

724:                                              ; preds = %772, %721
  %725 = load i32, ptr %39, align 4, !tbaa !9
  %726 = load i32, ptr %30, align 4, !tbaa !9
  %727 = icmp sle i32 %725, %726
  br i1 %727, label %728, label %775

728:                                              ; preds = %724
  %729 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %729, ptr %31, align 4, !tbaa !9
  %730 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %730, ptr %32, align 4, !tbaa !9
  %731 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %731, ptr %33, align 4, !tbaa !9
  %732 = load ptr, ptr %25, align 8, !tbaa !5
  %733 = load i32, ptr %33, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds float, ptr %732, i64 %734
  %736 = load float, ptr %735, align 4, !tbaa !11
  %737 = load ptr, ptr %24, align 8, !tbaa !5
  %738 = load i32, ptr %32, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds %struct.complex, ptr %737, i64 %739
  %741 = getelementptr inbounds %struct.complex, ptr %740, i32 0, i32 0
  %742 = load float, ptr %741, align 4, !tbaa !13
  %743 = fmul float %736, %742
  %744 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %743, ptr %744, align 4, !tbaa !13
  %745 = load ptr, ptr %25, align 8, !tbaa !5
  %746 = load i32, ptr %33, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds float, ptr %745, i64 %747
  %749 = load float, ptr %748, align 4, !tbaa !11
  %750 = load ptr, ptr %24, align 8, !tbaa !5
  %751 = load i32, ptr %32, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.complex, ptr %750, i64 %752
  %754 = getelementptr inbounds %struct.complex, ptr %753, i32 0, i32 1
  %755 = load float, ptr %754, align 4, !tbaa !26
  %756 = fmul float %749, %755
  %757 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %756, ptr %757, align 4, !tbaa !26
  %758 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %759 = load float, ptr %758, align 4, !tbaa !13
  %760 = load ptr, ptr %24, align 8, !tbaa !5
  %761 = load i32, ptr %31, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.complex, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.complex, ptr %763, i32 0, i32 0
  store float %759, ptr %764, align 4, !tbaa !13
  %765 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %766 = load float, ptr %765, align 4, !tbaa !26
  %767 = load ptr, ptr %24, align 8, !tbaa !5
  %768 = load i32, ptr %31, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.complex, ptr %767, i64 %769
  %771 = getelementptr inbounds %struct.complex, ptr %770, i32 0, i32 1
  store float %766, ptr %771, align 4, !tbaa !26
  br label %772

772:                                              ; preds = %728
  %773 = load i32, ptr %39, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  store i32 %774, ptr %39, align 4, !tbaa !9
  br label %724, !llvm.loop !27

775:                                              ; preds = %724
  %776 = load i32, ptr %44, align 4, !tbaa !9
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %791

778:                                              ; preds = %775
  %779 = load ptr, ptr %15, align 8, !tbaa !5
  %780 = load ptr, ptr %18, align 8, !tbaa !5
  %781 = load i32, ptr %29, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds %struct.complex, ptr %780, i64 %782
  %784 = load ptr, ptr %19, align 8, !tbaa !5
  %785 = load ptr, ptr %20, align 8, !tbaa !5
  %786 = getelementptr inbounds i32, ptr %785, i64 1
  %787 = load ptr, ptr %24, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.complex, ptr %787, i64 1
  %789 = load ptr, ptr %15, align 8, !tbaa !5
  %790 = load ptr, ptr %23, align 8, !tbaa !5
  call void @chetrs_(ptr noundef @.str, ptr noundef %779, ptr noundef @c__1, ptr noundef %783, ptr noundef %784, ptr noundef %786, ptr noundef %788, ptr noundef %789, ptr noundef %790)
  br label %804

791:                                              ; preds = %775
  %792 = load ptr, ptr %15, align 8, !tbaa !5
  %793 = load ptr, ptr %18, align 8, !tbaa !5
  %794 = load i32, ptr %29, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds %struct.complex, ptr %793, i64 %795
  %797 = load ptr, ptr %19, align 8, !tbaa !5
  %798 = load ptr, ptr %20, align 8, !tbaa !5
  %799 = getelementptr inbounds i32, ptr %798, i64 1
  %800 = load ptr, ptr %24, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.complex, ptr %800, i64 1
  %802 = load ptr, ptr %15, align 8, !tbaa !5
  %803 = load ptr, ptr %23, align 8, !tbaa !5
  call void @chetrs_(ptr noundef @.str.1, ptr noundef %792, ptr noundef @c__1, ptr noundef %796, ptr noundef %797, ptr noundef %799, ptr noundef %801, ptr noundef %802, ptr noundef %803)
  br label %804

804:                                              ; preds = %791, %778
  %805 = load ptr, ptr %22, align 8, !tbaa !5
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %808, label %863

808:                                              ; preds = %804
  %809 = load ptr, ptr %15, align 8, !tbaa !5
  %810 = load i32, ptr %809, align 4, !tbaa !9
  store i32 %810, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %811

811:                                              ; preds = %859, %808
  %812 = load i32, ptr %39, align 4, !tbaa !9
  %813 = load i32, ptr %30, align 4, !tbaa !9
  %814 = icmp sle i32 %812, %813
  br i1 %814, label %815, label %862

815:                                              ; preds = %811
  %816 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %816, ptr %31, align 4, !tbaa !9
  %817 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %817, ptr %32, align 4, !tbaa !9
  %818 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %818, ptr %33, align 4, !tbaa !9
  %819 = load ptr, ptr %21, align 8, !tbaa !5
  %820 = load i32, ptr %33, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds float, ptr %819, i64 %821
  %823 = load float, ptr %822, align 4, !tbaa !11
  %824 = load ptr, ptr %24, align 8, !tbaa !5
  %825 = load i32, ptr %32, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds %struct.complex, ptr %824, i64 %826
  %828 = getelementptr inbounds %struct.complex, ptr %827, i32 0, i32 0
  %829 = load float, ptr %828, align 4, !tbaa !13
  %830 = fmul float %823, %829
  %831 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %830, ptr %831, align 4, !tbaa !13
  %832 = load ptr, ptr %21, align 8, !tbaa !5
  %833 = load i32, ptr %33, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds float, ptr %832, i64 %834
  %836 = load float, ptr %835, align 4, !tbaa !11
  %837 = load ptr, ptr %24, align 8, !tbaa !5
  %838 = load i32, ptr %32, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.complex, ptr %837, i64 %839
  %841 = getelementptr inbounds %struct.complex, ptr %840, i32 0, i32 1
  %842 = load float, ptr %841, align 4, !tbaa !26
  %843 = fmul float %836, %842
  %844 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %843, ptr %844, align 4, !tbaa !26
  %845 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %846 = load float, ptr %845, align 4, !tbaa !13
  %847 = load ptr, ptr %24, align 8, !tbaa !5
  %848 = load i32, ptr %31, align 4, !tbaa !9
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds %struct.complex, ptr %847, i64 %849
  %851 = getelementptr inbounds %struct.complex, ptr %850, i32 0, i32 0
  store float %846, ptr %851, align 4, !tbaa !13
  %852 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %853 = load float, ptr %852, align 4, !tbaa !26
  %854 = load ptr, ptr %24, align 8, !tbaa !5
  %855 = load i32, ptr %31, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds %struct.complex, ptr %854, i64 %856
  %858 = getelementptr inbounds %struct.complex, ptr %857, i32 0, i32 1
  store float %853, ptr %858, align 4, !tbaa !26
  br label %859

859:                                              ; preds = %815
  %860 = load i32, ptr %39, align 4, !tbaa !9
  %861 = add nsw i32 %860, 1
  store i32 %861, ptr %39, align 4, !tbaa !9
  br label %811, !llvm.loop !28

862:                                              ; preds = %811
  br label %863

863:                                              ; preds = %862, %804
  br label %1007

864:                                              ; preds = %718
  %865 = load ptr, ptr %22, align 8, !tbaa !5
  %866 = load i32, ptr %865, align 4, !tbaa !9
  %867 = icmp ne i32 %866, 0
  br i1 %867, label %868, label %923

868:                                              ; preds = %864
  %869 = load ptr, ptr %15, align 8, !tbaa !5
  %870 = load i32, ptr %869, align 4, !tbaa !9
  store i32 %870, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %919, %868
  %872 = load i32, ptr %39, align 4, !tbaa !9
  %873 = load i32, ptr %30, align 4, !tbaa !9
  %874 = icmp sle i32 %872, %873
  br i1 %874, label %875, label %922

875:                                              ; preds = %871
  %876 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %876, ptr %31, align 4, !tbaa !9
  %877 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %877, ptr %32, align 4, !tbaa !9
  %878 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %878, ptr %33, align 4, !tbaa !9
  %879 = load ptr, ptr %21, align 8, !tbaa !5
  %880 = load i32, ptr %33, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds float, ptr %879, i64 %881
  %883 = load float, ptr %882, align 4, !tbaa !11
  %884 = load ptr, ptr %24, align 8, !tbaa !5
  %885 = load i32, ptr %32, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds %struct.complex, ptr %884, i64 %886
  %888 = getelementptr inbounds %struct.complex, ptr %887, i32 0, i32 0
  %889 = load float, ptr %888, align 4, !tbaa !13
  %890 = fmul float %883, %889
  %891 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %890, ptr %891, align 4, !tbaa !13
  %892 = load ptr, ptr %21, align 8, !tbaa !5
  %893 = load i32, ptr %33, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds float, ptr %892, i64 %894
  %896 = load float, ptr %895, align 4, !tbaa !11
  %897 = load ptr, ptr %24, align 8, !tbaa !5
  %898 = load i32, ptr %32, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds %struct.complex, ptr %897, i64 %899
  %901 = getelementptr inbounds %struct.complex, ptr %900, i32 0, i32 1
  %902 = load float, ptr %901, align 4, !tbaa !26
  %903 = fmul float %896, %902
  %904 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %903, ptr %904, align 4, !tbaa !26
  %905 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %906 = load float, ptr %905, align 4, !tbaa !13
  %907 = load ptr, ptr %24, align 8, !tbaa !5
  %908 = load i32, ptr %31, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds %struct.complex, ptr %907, i64 %909
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  store float %906, ptr %911, align 4, !tbaa !13
  %912 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %913 = load float, ptr %912, align 4, !tbaa !26
  %914 = load ptr, ptr %24, align 8, !tbaa !5
  %915 = load i32, ptr %31, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.complex, ptr %914, i64 %916
  %918 = getelementptr inbounds %struct.complex, ptr %917, i32 0, i32 1
  store float %913, ptr %918, align 4, !tbaa !26
  br label %919

919:                                              ; preds = %875
  %920 = load i32, ptr %39, align 4, !tbaa !9
  %921 = add nsw i32 %920, 1
  store i32 %921, ptr %39, align 4, !tbaa !9
  br label %871, !llvm.loop !29

922:                                              ; preds = %871
  br label %923

923:                                              ; preds = %922, %864
  %924 = load i32, ptr %44, align 4, !tbaa !9
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %939

926:                                              ; preds = %923
  %927 = load ptr, ptr %15, align 8, !tbaa !5
  %928 = load ptr, ptr %18, align 8, !tbaa !5
  %929 = load i32, ptr %29, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds %struct.complex, ptr %928, i64 %930
  %932 = load ptr, ptr %19, align 8, !tbaa !5
  %933 = load ptr, ptr %20, align 8, !tbaa !5
  %934 = getelementptr inbounds i32, ptr %933, i64 1
  %935 = load ptr, ptr %24, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.complex, ptr %935, i64 1
  %937 = load ptr, ptr %15, align 8, !tbaa !5
  %938 = load ptr, ptr %23, align 8, !tbaa !5
  call void @chetrs_(ptr noundef @.str, ptr noundef %927, ptr noundef @c__1, ptr noundef %931, ptr noundef %932, ptr noundef %934, ptr noundef %936, ptr noundef %937, ptr noundef %938)
  br label %952

939:                                              ; preds = %923
  %940 = load ptr, ptr %15, align 8, !tbaa !5
  %941 = load ptr, ptr %18, align 8, !tbaa !5
  %942 = load i32, ptr %29, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds %struct.complex, ptr %941, i64 %943
  %945 = load ptr, ptr %19, align 8, !tbaa !5
  %946 = load ptr, ptr %20, align 8, !tbaa !5
  %947 = getelementptr inbounds i32, ptr %946, i64 1
  %948 = load ptr, ptr %24, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.complex, ptr %948, i64 1
  %950 = load ptr, ptr %15, align 8, !tbaa !5
  %951 = load ptr, ptr %23, align 8, !tbaa !5
  call void @chetrs_(ptr noundef @.str.1, ptr noundef %940, ptr noundef @c__1, ptr noundef %944, ptr noundef %945, ptr noundef %947, ptr noundef %949, ptr noundef %950, ptr noundef %951)
  br label %952

952:                                              ; preds = %939, %926
  %953 = load ptr, ptr %15, align 8, !tbaa !5
  %954 = load i32, ptr %953, align 4, !tbaa !9
  store i32 %954, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %955

955:                                              ; preds = %1003, %952
  %956 = load i32, ptr %39, align 4, !tbaa !9
  %957 = load i32, ptr %30, align 4, !tbaa !9
  %958 = icmp sle i32 %956, %957
  br i1 %958, label %959, label %1006

959:                                              ; preds = %955
  %960 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %960, ptr %31, align 4, !tbaa !9
  %961 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %961, ptr %32, align 4, !tbaa !9
  %962 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %962, ptr %33, align 4, !tbaa !9
  %963 = load ptr, ptr %25, align 8, !tbaa !5
  %964 = load i32, ptr %33, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds float, ptr %963, i64 %965
  %967 = load float, ptr %966, align 4, !tbaa !11
  %968 = load ptr, ptr %24, align 8, !tbaa !5
  %969 = load i32, ptr %32, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds %struct.complex, ptr %968, i64 %970
  %972 = getelementptr inbounds %struct.complex, ptr %971, i32 0, i32 0
  %973 = load float, ptr %972, align 4, !tbaa !13
  %974 = fmul float %967, %973
  %975 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %974, ptr %975, align 4, !tbaa !13
  %976 = load ptr, ptr %25, align 8, !tbaa !5
  %977 = load i32, ptr %33, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds float, ptr %976, i64 %978
  %980 = load float, ptr %979, align 4, !tbaa !11
  %981 = load ptr, ptr %24, align 8, !tbaa !5
  %982 = load i32, ptr %32, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds %struct.complex, ptr %981, i64 %983
  %985 = getelementptr inbounds %struct.complex, ptr %984, i32 0, i32 1
  %986 = load float, ptr %985, align 4, !tbaa !26
  %987 = fmul float %980, %986
  %988 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %987, ptr %988, align 4, !tbaa !26
  %989 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %990 = load float, ptr %989, align 4, !tbaa !13
  %991 = load ptr, ptr %24, align 8, !tbaa !5
  %992 = load i32, ptr %31, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.complex, ptr %991, i64 %993
  %995 = getelementptr inbounds %struct.complex, ptr %994, i32 0, i32 0
  store float %990, ptr %995, align 4, !tbaa !13
  %996 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %997 = load float, ptr %996, align 4, !tbaa !26
  %998 = load ptr, ptr %24, align 8, !tbaa !5
  %999 = load i32, ptr %31, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.complex, ptr %998, i64 %1000
  %1002 = getelementptr inbounds %struct.complex, ptr %1001, i32 0, i32 1
  store float %997, ptr %1002, align 4, !tbaa !26
  br label %1003

1003:                                             ; preds = %959
  %1004 = load i32, ptr %39, align 4, !tbaa !9
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr %39, align 4, !tbaa !9
  br label %955, !llvm.loop !30

1006:                                             ; preds = %955
  br label %1007

1007:                                             ; preds = %1006, %863
  br label %705

1008:                                             ; preds = %705
  %1009 = load float, ptr %45, align 4, !tbaa !11
  %1010 = fcmp une float %1009, 0.000000e+00
  br i1 %1010, label %1011, label %1014

1011:                                             ; preds = %1008
  %1012 = load float, ptr %45, align 4, !tbaa !11
  %1013 = fdiv float 1.000000e+00, %1012
  store float %1013, ptr %34, align 4, !tbaa !11
  br label %1014

1014:                                             ; preds = %1011, %1008
  %1015 = load float, ptr %34, align 4, !tbaa !11
  store float %1015, ptr %13, align 4
  store i32 1, ptr %47, align 4
  br label %1016

1016:                                             ; preds = %1014, %701, %696, %138
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  %1017 = load float, ptr %13, align 4
  ret float %1017
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #3

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local float @cla_hercond_c_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef %11) local_unnamed_addr #0 {
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca [3 x i32], align 4
  %16 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  %17 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds %struct.complex, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %7, i64 -4
  %21 = getelementptr inbounds i8, ptr %10, i64 -8
  %22 = getelementptr inbounds i8, ptr %11, i64 -4
  store i32 0, ptr %9, align 4, !tbaa !5
  %23 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %23, 0
  br i1 %.not, label %24, label %26

24:                                               ; preds = %12
  %25 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not382 = icmp eq i32 %25, 0
  br i1 %.not382, label %.thread.sink.split, label %26

26:                                               ; preds = %24, %12
  %27 = load i32, ptr %1, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %.thread.sink.split, label %29

29:                                               ; preds = %26
  %30 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %27, i32 1)
  %31 = icmp slt i32 %30, %spec.select
  br i1 %31, label %.thread.sink.split, label %32

32:                                               ; preds = %29
  %33 = load i32, ptr %5, align 4, !tbaa !5
  %34 = icmp slt i32 %33, %spec.select
  br i1 %34, label %.thread.sink.split, label %35

35:                                               ; preds = %32
  %.pr = load i32, ptr %9, align 4, !tbaa !5
  %.not383 = icmp eq i32 %.pr, 0
  br i1 %.not383, label %39, label %.thread

.thread.sink.split:                               ; preds = %32, %29, %26, %24
  %.sink = phi i32 [ -1, %24 ], [ -2, %26 ], [ -4, %29 ], [ -6, %32 ]
  store i32 %.sink, ptr %9, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %35
  %36 = phi i32 [ %.pr, %35 ], [ %.sink, %.thread.sink.split ]
  %37 = sub nsw i32 0, %36
  store i32 %37, ptr %13, align 4, !tbaa !5
  %38 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %13, i32 noundef 13) #5
  br label %320

39:                                               ; preds = %35
  %40 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not384 = icmp eq i32 %40, 0
  %41 = load i32, ptr %1, align 4, !tbaa !5
  %.not386450 = icmp slt i32 %41, 1
  br i1 %.not384, label %104, label %42

42:                                               ; preds = %39
  br i1 %.not386450, label %.loopexit412, label %.lr.ph434.preheader

.lr.ph434.preheader:                              ; preds = %42
  %43 = sext i32 %17 to i64
  %44 = add nuw i32 %41, 2
  %wide.trip.count509 = zext i32 %44 to i64
  br label %.lr.ph434

.lr.ph434:                                        ; preds = %.lr.ph434.preheader, %.loopexit413
  %indvars.iv504 = phi i64 [ 2, %.lr.ph434.preheader ], [ %indvars.iv.next505, %.loopexit413 ]
  %indvars.iv487 = phi i64 [ 1, %.lr.ph434.preheader ], [ %indvars.iv.next488, %.loopexit413 ]
  %.0359433 = phi float [ 0.000000e+00, %.lr.ph434.preheader ], [ %103, %.loopexit413 ]
  %45 = load i32, ptr %8, align 4, !tbaa !5
  %.not400 = icmp eq i32 %45, 0
  %46 = mul nsw i64 %indvars.iv487, %43
  %invariant.gep578 = getelementptr %struct.complex, ptr %19, i64 %46
  br i1 %.not400, label %.preheader414, label %.preheader416

.preheader416:                                    ; preds = %.lr.ph434, %.preheader416
  %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader416 ], [ 1, %.lr.ph434 ]
  %.0357419 = phi float [ %59, %.preheader416 ], [ 0.000000e+00, %.lr.ph434 ]
  %gep575 = getelementptr %struct.complex, ptr %invariant.gep578, i64 %indvars.iv
  %47 = load float, ptr %gep575, align 4, !tbaa !9
  %48 = fcmp oge float %47, 0.000000e+00
  %49 = fneg float %47
  %50 = select i1 %48, float %47, float %49
  %51 = tail call <2 x float> @Cf(ptr noundef nonnull %gep575)
  %.sroa.07.4.vec.extract = extractelement <2 x float> %51, i64 1
  %52 = fcmp oge float %.sroa.07.4.vec.extract, 0.000000e+00
  %53 = fneg float %.sroa.07.4.vec.extract
  %54 = select i1 %52, float %.sroa.07.4.vec.extract, float %53
  %55 = fadd float %50, %54
  %56 = getelementptr inbounds float, ptr %20, i64 %indvars.iv
  %57 = load float, ptr %56, align 4, !tbaa !12
  %58 = fdiv float %55, %57
  %59 = fadd float %.0357419, %58
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv504
  br i1 %exitcond.not, label %60, label %.preheader416, !llvm.loop !13

60:                                               ; preds = %.preheader416
  %61 = load i32, ptr %1, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %.not404.not420 = icmp slt i64 %indvars.iv487, %62
  br i1 %.not404.not420, label %.lr.ph.preheader, label %.loopexit413

.lr.ph.preheader:                                 ; preds = %60
  %wide.trip.count492 = zext i32 %61 to i64
  %invariant.gep576 = getelementptr %struct.complex, ptr %19, i64 %indvars.iv487
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv489 = phi i64 [ %indvars.iv487, %.lr.ph.preheader ], [ %indvars.iv.next490, %.lr.ph ]
  %.1422 = phi float [ %59, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %indvars.iv.next490 = add nuw nsw i64 %indvars.iv489, 1
  %63 = mul nsw i64 %indvars.iv.next490, %43
  %gep577 = getelementptr %struct.complex, ptr %invariant.gep576, i64 %63
  %64 = load float, ptr %gep577, align 4, !tbaa !9
  %65 = fcmp oge float %64, 0.000000e+00
  %66 = fneg float %64
  %67 = select i1 %65, float %64, float %66
  %68 = tail call <2 x float> @Cf(ptr noundef nonnull %gep577)
  %.sroa.06.4.vec.extract = extractelement <2 x float> %68, i64 1
  %69 = fcmp oge float %.sroa.06.4.vec.extract, 0.000000e+00
  %70 = fneg float %.sroa.06.4.vec.extract
  %71 = select i1 %69, float %.sroa.06.4.vec.extract, float %70
  %72 = fadd float %67, %71
  %73 = getelementptr float, ptr %7, i64 %indvars.iv489
  %74 = load float, ptr %73, align 4, !tbaa !12
  %75 = fdiv float %72, %74
  %76 = fadd float %.1422, %75
  %exitcond493.not = icmp eq i64 %indvars.iv.next490, %wide.trip.count492
  br i1 %exitcond493.not, label %.loopexit413, label %.lr.ph, !llvm.loop !15

.preheader414:                                    ; preds = %.lr.ph434, %.preheader414
  %indvars.iv494 = phi i64 [ %indvars.iv.next495, %.preheader414 ], [ 1, %.lr.ph434 ]
  %.2424 = phi float [ %86, %.preheader414 ], [ 0.000000e+00, %.lr.ph434 ]
  %gep579 = getelementptr %struct.complex, ptr %invariant.gep578, i64 %indvars.iv494
  %77 = load float, ptr %gep579, align 4, !tbaa !9
  %78 = fcmp oge float %77, 0.000000e+00
  %79 = fneg float %77
  %80 = select i1 %78, float %77, float %79
  %81 = tail call <2 x float> @Cf(ptr noundef nonnull %gep579)
  %.sroa.05.4.vec.extract = extractelement <2 x float> %81, i64 1
  %82 = fcmp oge float %.sroa.05.4.vec.extract, 0.000000e+00
  %83 = fneg float %.sroa.05.4.vec.extract
  %84 = select i1 %82, float %.sroa.05.4.vec.extract, float %83
  %85 = fadd float %80, %84
  %86 = fadd float %.2424, %85
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %exitcond498.not = icmp eq i64 %indvars.iv.next495, %indvars.iv504
  br i1 %exitcond498.not, label %87, label %.preheader414, !llvm.loop !16

87:                                               ; preds = %.preheader414
  %88 = load i32, ptr %1, align 4, !tbaa !5
  %89 = sext i32 %88 to i64
  %.not402.not425 = icmp slt i64 %indvars.iv487, %89
  br i1 %.not402.not425, label %.lr.ph428.preheader, label %.loopexit413

.lr.ph428.preheader:                              ; preds = %87
  %wide.trip.count502 = zext i32 %88 to i64
  %invariant.gep580 = getelementptr %struct.complex, ptr %19, i64 %indvars.iv487
  br label %.lr.ph428

.lr.ph428:                                        ; preds = %.lr.ph428.preheader, %.lr.ph428
  %indvars.iv499 = phi i64 [ %indvars.iv487, %.lr.ph428.preheader ], [ %indvars.iv.next500, %.lr.ph428 ]
  %.3427 = phi float [ %86, %.lr.ph428.preheader ], [ %100, %.lr.ph428 ]
  %indvars.iv.next500 = add nuw nsw i64 %indvars.iv499, 1
  %90 = mul nsw i64 %indvars.iv.next500, %43
  %gep581 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %90
  %91 = load float, ptr %gep581, align 4, !tbaa !9
  %92 = fcmp oge float %91, 0.000000e+00
  %93 = fneg float %91
  %94 = select i1 %92, float %91, float %93
  %95 = tail call <2 x float> @Cf(ptr noundef nonnull %gep581)
  %.sroa.04.4.vec.extract = extractelement <2 x float> %95, i64 1
  %96 = fcmp oge float %.sroa.04.4.vec.extract, 0.000000e+00
  %97 = fneg float %.sroa.04.4.vec.extract
  %98 = select i1 %96, float %.sroa.04.4.vec.extract, float %97
  %99 = fadd float %94, %98
  %100 = fadd float %.3427, %99
  %exitcond503.not = icmp eq i64 %indvars.iv.next500, %wide.trip.count502
  br i1 %exitcond503.not, label %.loopexit413, label %.lr.ph428, !llvm.loop !17

.loopexit413:                                     ; preds = %.lr.ph, %.lr.ph428, %60, %87
  %.4 = phi float [ %86, %87 ], [ %59, %60 ], [ %100, %.lr.ph428 ], [ %76, %.lr.ph ]
  %101 = getelementptr inbounds float, ptr %22, i64 %indvars.iv487
  store float %.4, ptr %101, align 4, !tbaa !12
  %102 = fcmp oge float %.0359433, %.4
  %103 = select i1 %102, float %.0359433, float %.4
  %indvars.iv.next488 = add nuw nsw i64 %indvars.iv487, 1
  %indvars.iv.next505 = add nuw nsw i64 %indvars.iv504, 1
  %exitcond510.not = icmp eq i64 %indvars.iv.next505, %wide.trip.count509
  br i1 %exitcond510.not, label %.loopexit412thread-pre-split, label %.lr.ph434, !llvm.loop !18

104:                                              ; preds = %39
  br i1 %.not386450, label %.loopexit412, label %.lr.ph454.preheader

.lr.ph454.preheader:                              ; preds = %104
  %105 = sext i32 %17 to i64
  %106 = add nuw i32 %41, 2
  %wide.trip.count539 = zext i32 %106 to i64
  br label %.lr.ph454

.lr.ph454:                                        ; preds = %.lr.ph454.preheader, %.loopexit409
  %indvars.iv534 = phi i64 [ 2, %.lr.ph454.preheader ], [ %indvars.iv.next535, %.loopexit409 ]
  %indvars.iv517 = phi i64 [ 1, %.lr.ph454.preheader ], [ %indvars.iv.next518, %.loopexit409 ]
  %.1360453 = phi float [ 0.000000e+00, %.lr.ph454.preheader ], [ %168, %.loopexit409 ]
  %107 = load i32, ptr %8, align 4, !tbaa !5
  %.not387 = icmp eq i32 %107, 0
  %invariant.gep586 = getelementptr %struct.complex, ptr %19, i64 %indvars.iv517
  br i1 %.not387, label %.preheader, label %.preheader411

.preheader411:                                    ; preds = %.lr.ph454, %.preheader411
  %indvars.iv511 = phi i64 [ %indvars.iv.next512, %.preheader411 ], [ 1, %.lr.ph454 ]
  %.5437 = phi float [ %121, %.preheader411 ], [ 0.000000e+00, %.lr.ph454 ]
  %108 = mul nsw i64 %indvars.iv511, %105
  %gep583 = getelementptr %struct.complex, ptr %invariant.gep586, i64 %108
  %109 = load float, ptr %gep583, align 4, !tbaa !9
  %110 = fcmp oge float %109, 0.000000e+00
  %111 = fneg float %109
  %112 = select i1 %110, float %109, float %111
  %113 = tail call <2 x float> @Cf(ptr noundef nonnull %gep583)
  %.sroa.03.4.vec.extract = extractelement <2 x float> %113, i64 1
  %114 = fcmp oge float %.sroa.03.4.vec.extract, 0.000000e+00
  %115 = fneg float %.sroa.03.4.vec.extract
  %116 = select i1 %114, float %.sroa.03.4.vec.extract, float %115
  %117 = fadd float %112, %116
  %118 = getelementptr inbounds float, ptr %20, i64 %indvars.iv511
  %119 = load float, ptr %118, align 4, !tbaa !12
  %120 = fdiv float %117, %119
  %121 = fadd float %.5437, %120
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %exitcond516.not = icmp eq i64 %indvars.iv.next512, %indvars.iv534
  br i1 %exitcond516.not, label %122, label %.preheader411, !llvm.loop !19

122:                                              ; preds = %.preheader411
  %123 = load i32, ptr %1, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %.not391.not438 = icmp slt i64 %indvars.iv517, %124
  br i1 %.not391.not438, label %.lr.ph441, label %.loopexit409

.lr.ph441:                                        ; preds = %122
  %125 = mul nsw i64 %indvars.iv517, %105
  %wide.trip.count522 = zext i32 %123 to i64
  %invariant.gep584 = getelementptr %struct.complex, ptr %19, i64 %125
  br label %126

126:                                              ; preds = %.lr.ph441, %126
  %indvars.iv519 = phi i64 [ %indvars.iv517, %.lr.ph441 ], [ %indvars.iv.next520, %126 ]
  %.6440 = phi float [ %121, %.lr.ph441 ], [ %139, %126 ]
  %indvars.iv.next520 = add nuw nsw i64 %indvars.iv519, 1
  %gep585 = getelementptr %struct.complex, ptr %invariant.gep584, i64 %indvars.iv.next520
  %127 = load float, ptr %gep585, align 4, !tbaa !9
  %128 = fcmp oge float %127, 0.000000e+00
  %129 = fneg float %127
  %130 = select i1 %128, float %127, float %129
  %131 = tail call <2 x float> @Cf(ptr noundef nonnull %gep585)
  %.sroa.02.4.vec.extract = extractelement <2 x float> %131, i64 1
  %132 = fcmp oge float %.sroa.02.4.vec.extract, 0.000000e+00
  %133 = fneg float %.sroa.02.4.vec.extract
  %134 = select i1 %132, float %.sroa.02.4.vec.extract, float %133
  %135 = fadd float %130, %134
  %136 = getelementptr float, ptr %7, i64 %indvars.iv519
  %137 = load float, ptr %136, align 4, !tbaa !12
  %138 = fdiv float %135, %137
  %139 = fadd float %.6440, %138
  %exitcond523.not = icmp eq i64 %indvars.iv.next520, %wide.trip.count522
  br i1 %exitcond523.not, label %.loopexit409, label %126, !llvm.loop !20

.preheader:                                       ; preds = %.lr.ph454, %.preheader
  %indvars.iv524 = phi i64 [ %indvars.iv.next525, %.preheader ], [ 1, %.lr.ph454 ]
  %.7444 = phi float [ %150, %.preheader ], [ 0.000000e+00, %.lr.ph454 ]
  %140 = mul nsw i64 %indvars.iv524, %105
  %gep587 = getelementptr %struct.complex, ptr %invariant.gep586, i64 %140
  %141 = load float, ptr %gep587, align 4, !tbaa !9
  %142 = fcmp oge float %141, 0.000000e+00
  %143 = fneg float %141
  %144 = select i1 %142, float %141, float %143
  %145 = tail call <2 x float> @Cf(ptr noundef nonnull %gep587)
  %.sroa.01.4.vec.extract = extractelement <2 x float> %145, i64 1
  %146 = fcmp oge float %.sroa.01.4.vec.extract, 0.000000e+00
  %147 = fneg float %.sroa.01.4.vec.extract
  %148 = select i1 %146, float %.sroa.01.4.vec.extract, float %147
  %149 = fadd float %144, %148
  %150 = fadd float %.7444, %149
  %indvars.iv.next525 = add nuw nsw i64 %indvars.iv524, 1
  %exitcond528.not = icmp eq i64 %indvars.iv.next525, %indvars.iv534
  br i1 %exitcond528.not, label %151, label %.preheader, !llvm.loop !21

151:                                              ; preds = %.preheader
  %152 = load i32, ptr %1, align 4, !tbaa !5
  %153 = sext i32 %152 to i64
  %.not389.not445 = icmp slt i64 %indvars.iv517, %153
  br i1 %.not389.not445, label %.lr.ph448, label %.loopexit409

.lr.ph448:                                        ; preds = %151
  %154 = mul nsw i64 %indvars.iv517, %105
  %wide.trip.count532 = zext i32 %152 to i64
  %invariant.gep588 = getelementptr %struct.complex, ptr %19, i64 %154
  br label %155

155:                                              ; preds = %.lr.ph448, %155
  %indvars.iv529 = phi i64 [ %indvars.iv517, %.lr.ph448 ], [ %indvars.iv.next530, %155 ]
  %.8447 = phi float [ %150, %.lr.ph448 ], [ %165, %155 ]
  %indvars.iv.next530 = add nuw nsw i64 %indvars.iv529, 1
  %gep589 = getelementptr %struct.complex, ptr %invariant.gep588, i64 %indvars.iv.next530
  %156 = load float, ptr %gep589, align 4, !tbaa !9
  %157 = fcmp oge float %156, 0.000000e+00
  %158 = fneg float %156
  %159 = select i1 %157, float %156, float %158
  %160 = tail call <2 x float> @Cf(ptr noundef nonnull %gep589)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %160, i64 1
  %161 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %162 = fneg float %.sroa.0.4.vec.extract
  %163 = select i1 %161, float %.sroa.0.4.vec.extract, float %162
  %164 = fadd float %159, %163
  %165 = fadd float %.8447, %164
  %exitcond533.not = icmp eq i64 %indvars.iv.next530, %wide.trip.count532
  br i1 %exitcond533.not, label %.loopexit409, label %155, !llvm.loop !22

.loopexit409:                                     ; preds = %126, %155, %122, %151
  %.9 = phi float [ %150, %151 ], [ %121, %122 ], [ %165, %155 ], [ %139, %126 ]
  %166 = getelementptr inbounds float, ptr %22, i64 %indvars.iv517
  store float %.9, ptr %166, align 4, !tbaa !12
  %167 = fcmp oge float %.1360453, %.9
  %168 = select i1 %167, float %.1360453, float %.9
  %indvars.iv.next518 = add nuw nsw i64 %indvars.iv517, 1
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond540.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count539
  br i1 %exitcond540.not, label %.loopexit412thread-pre-split, label %.lr.ph454, !llvm.loop !23

.loopexit412thread-pre-split:                     ; preds = %.loopexit413, %.loopexit409
  %.2361.ph = phi float [ %168, %.loopexit409 ], [ %103, %.loopexit413 ]
  %.pr561 = load i32, ptr %1, align 4, !tbaa !5
  %169 = fcmp oeq float %.2361.ph, 0.000000e+00
  br label %.loopexit412

.loopexit412:                                     ; preds = %.loopexit412thread-pre-split, %42, %104
  %170 = phi i32 [ %.pr561, %.loopexit412thread-pre-split ], [ %41, %42 ], [ %41, %104 ]
  %.2361 = phi i1 [ %169, %.loopexit412thread-pre-split ], [ true, %42 ], [ true, %104 ]
  %171 = icmp eq i32 %170, 0
  %brmerge = select i1 %171, i1 true, i1 %.2361
  %.mux = select i1 %171, float 1.000000e+00, float 0.000000e+00
  br i1 %brmerge, label %320, label %172

172:                                              ; preds = %.loopexit412
  store float 0.000000e+00, ptr %16, align 4, !tbaa !12
  store i32 0, ptr %14, align 4, !tbaa !5
  %scevgep = getelementptr i8, ptr %10, i64 -8
  %scevgep606 = getelementptr i8, ptr %11, i64 -4
  %scevgep610 = getelementptr i8, ptr %10, i64 -8
  %scevgep612 = getelementptr i8, ptr %7, i64 -4
  %scevgep636 = getelementptr i8, ptr %10, i64 -8
  %scevgep638 = getelementptr i8, ptr %7, i64 -4
  %scevgep662 = getelementptr i8, ptr %10, i64 -8
  %scevgep664 = getelementptr i8, ptr %11, i64 -4
  %.str.1..str = select i1 %.not384, ptr @.str.1, ptr @.str
  %.str.1..str591 = select i1 %.not384, ptr @.str.1, ptr @.str
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %172
  %173 = phi i32 [ %170, %172 ], [ %.be, %.loopexit.backedge ]
  %174 = sext i32 %173 to i64
  %gep = getelementptr %struct.complex, ptr %10, i64 %174
  call void @clacn2_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef %10, ptr noundef nonnull %16, ptr noundef nonnull %14, ptr noundef nonnull %15) #5
  %175 = load i32, ptr %14, align 4, !tbaa !5
  switch i32 %175, label %245 [
    i32 0, label %316
    i32 2, label %176
  ]

176:                                              ; preds = %.loopexit
  %177 = load i32, ptr %1, align 4, !tbaa !5
  %.not397456 = icmp slt i32 %177, 1
  br i1 %.not397456, label %._crit_edge, label %.lr.ph458.preheader

.lr.ph458.preheader:                              ; preds = %176
  %178 = add nuw i32 %177, 1
  %wide.trip.count = zext i32 %178 to i64
  %179 = zext nneg i32 %177 to i64
  %min.iters.check671 = icmp eq i32 %177, 1
  br i1 %min.iters.check671, label %.lr.ph458.preheader691, label %vector.memcheck661

vector.memcheck661:                               ; preds = %.lr.ph458.preheader
  %180 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep663 = getelementptr i8, ptr %scevgep662, i64 %180
  %181 = shl nuw nsw i64 %wide.trip.count, 2
  %scevgep665 = getelementptr i8, ptr %scevgep664, i64 %181
  %bound0666 = icmp ugt ptr %scevgep665, %10
  %bound1667 = icmp ugt ptr %scevgep663, %11
  %found.conflict668 = and i1 %bound0666, %bound1667
  br i1 %found.conflict668, label %.lr.ph458.preheader691, label %vector.ph672

vector.ph672:                                     ; preds = %vector.memcheck661
  %n.vec674 = and i64 %179, 2147483646
  %ind.end675 = or i64 %179, 1
  br label %vector.body677

vector.body677:                                   ; preds = %vector.body677, %vector.ph672
  %index678 = phi i64 [ 0, %vector.ph672 ], [ %index.next685, %vector.body677 ]
  %182 = getelementptr float, ptr %11, i64 %index678
  %wide.load680 = load <2 x float>, ptr %182, align 4, !tbaa !12, !alias.scope !24
  %183 = getelementptr %struct.complex, ptr %10, i64 %index678
  %184 = load <4 x float>, ptr %183, align 4, !tbaa !12
  %185 = shufflevector <2 x float> %wide.load680, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec684 = fmul <4 x float> %185, %184
  store <4 x float> %interleaved.vec684, ptr %183, align 4, !tbaa !12
  %index.next685 = add nuw i64 %index678, 2
  %186 = icmp eq i64 %index.next685, %n.vec674
  br i1 %186, label %middle.block669, label %vector.body677, !llvm.loop !27

middle.block669:                                  ; preds = %vector.body677
  %cmp.n686 = icmp eq i64 %n.vec674, %179
  br i1 %cmp.n686, label %._crit_edge, label %.lr.ph458.preheader691

.lr.ph458.preheader691:                           ; preds = %middle.block669, %vector.memcheck661, %.lr.ph458.preheader
  %indvars.iv541.ph = phi i64 [ 1, %vector.memcheck661 ], [ 1, %.lr.ph458.preheader ], [ %ind.end675, %middle.block669 ]
  %187 = zext nneg i32 %177 to i64
  %188 = and i32 %177, 1
  %lcmp.mod.not = icmp eq i32 %188, 0
  br i1 %lcmp.mod.not, label %.lr.ph458.prol.loopexit, label %.lr.ph458.prol

.lr.ph458.prol:                                   ; preds = %.lr.ph458.preheader691
  %189 = getelementptr inbounds float, ptr %22, i64 %indvars.iv541.ph
  %190 = load float, ptr %189, align 4, !tbaa !12
  %191 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv541.ph
  %192 = load <2 x float>, ptr %191, align 4, !tbaa !12
  %193 = insertelement <2 x float> poison, float %190, i64 0
  %194 = shufflevector <2 x float> %193, <2 x float> poison, <2 x i32> zeroinitializer
  %195 = fmul <2 x float> %194, %192
  store <2 x float> %195, ptr %191, align 4, !tbaa !12
  %indvars.iv.next542.prol = add nuw nsw i64 %indvars.iv541.ph, 1
  br label %.lr.ph458.prol.loopexit

.lr.ph458.prol.loopexit:                          ; preds = %.lr.ph458.prol, %.lr.ph458.preheader691
  %indvars.iv541.unr = phi i64 [ %indvars.iv541.ph, %.lr.ph458.preheader691 ], [ %indvars.iv.next542.prol, %.lr.ph458.prol ]
  %196 = icmp eq i64 %indvars.iv541.ph, %187
  br i1 %196, label %._crit_edge, label %.lr.ph458

.lr.ph458:                                        ; preds = %.lr.ph458.prol.loopexit, %.lr.ph458
  %indvars.iv541 = phi i64 [ %indvars.iv.next542.1, %.lr.ph458 ], [ %indvars.iv541.unr, %.lr.ph458.prol.loopexit ]
  %197 = getelementptr inbounds float, ptr %22, i64 %indvars.iv541
  %198 = load float, ptr %197, align 4, !tbaa !12
  %199 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv541
  %200 = load <2 x float>, ptr %199, align 4, !tbaa !12
  %201 = insertelement <2 x float> poison, float %198, i64 0
  %202 = shufflevector <2 x float> %201, <2 x float> poison, <2 x i32> zeroinitializer
  %203 = fmul <2 x float> %202, %200
  store <2 x float> %203, ptr %199, align 4, !tbaa !12
  %204 = getelementptr float, ptr %11, i64 %indvars.iv541
  %205 = load float, ptr %204, align 4, !tbaa !12
  %206 = getelementptr %struct.complex, ptr %10, i64 %indvars.iv541
  %207 = load <2 x float>, ptr %206, align 4, !tbaa !12
  %208 = insertelement <2 x float> poison, float %205, i64 0
  %209 = shufflevector <2 x float> %208, <2 x float> poison, <2 x i32> zeroinitializer
  %210 = fmul <2 x float> %209, %207
  store <2 x float> %210, ptr %206, align 4, !tbaa !12
  %indvars.iv.next542.1 = add nuw nsw i64 %indvars.iv541, 2
  %exitcond544.not.1 = icmp eq i64 %indvars.iv.next542.1, %wide.trip.count
  br i1 %exitcond544.not.1, label %._crit_edge, label %.lr.ph458, !llvm.loop !30

._crit_edge:                                      ; preds = %.lr.ph458.prol.loopexit, %.lr.ph458, %middle.block669, %176
  call void @chetrs_(ptr noundef nonnull %.str.1..str, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #5
  %211 = load i32, ptr %8, align 4, !tbaa !5
  %.not398 = icmp eq i32 %211, 0
  %.pre.pre = load i32, ptr %1, align 4, !tbaa !5
  %.not399459 = icmp slt i32 %.pre.pre, 1
  %or.cond = select i1 %.not398, i1 true, i1 %.not399459
  br i1 %or.cond, label %.loopexit.backedge, label %.lr.ph462.preheader

.lr.ph462.preheader:                              ; preds = %._crit_edge
  %212 = add nuw i32 %.pre.pre, 1
  %wide.trip.count548 = zext i32 %212 to i64
  %213 = zext nneg i32 %.pre.pre to i64
  %min.iters.check645 = icmp ult i32 %.pre.pre, 2
  br i1 %min.iters.check645, label %.lr.ph462.preheader689, label %vector.memcheck635

vector.memcheck635:                               ; preds = %.lr.ph462.preheader
  %214 = shl nuw nsw i64 %wide.trip.count548, 3
  %scevgep637 = getelementptr i8, ptr %scevgep636, i64 %214
  %215 = shl nuw nsw i64 %wide.trip.count548, 2
  %scevgep639 = getelementptr i8, ptr %scevgep638, i64 %215
  %bound0640 = icmp ugt ptr %scevgep639, %10
  %bound1641 = icmp ugt ptr %scevgep637, %7
  %found.conflict642 = and i1 %bound0640, %bound1641
  br i1 %found.conflict642, label %.lr.ph462.preheader689, label %vector.ph646

vector.ph646:                                     ; preds = %vector.memcheck635
  %n.vec648 = and i64 %213, 2147483646
  %ind.end649 = or i64 %213, 1
  br label %vector.body651

vector.body651:                                   ; preds = %vector.body651, %vector.ph646
  %index652 = phi i64 [ 0, %vector.ph646 ], [ %index.next659, %vector.body651 ]
  %216 = getelementptr float, ptr %7, i64 %index652
  %wide.load654 = load <2 x float>, ptr %216, align 4, !tbaa !12, !alias.scope !31
  %217 = getelementptr %struct.complex, ptr %10, i64 %index652
  %218 = load <4 x float>, ptr %217, align 4, !tbaa !12
  %219 = shufflevector <2 x float> %wide.load654, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec658 = fmul <4 x float> %219, %218
  store <4 x float> %interleaved.vec658, ptr %217, align 4, !tbaa !12
  %index.next659 = add nuw i64 %index652, 2
  %220 = icmp eq i64 %index.next659, %n.vec648
  br i1 %220, label %middle.block643, label %vector.body651, !llvm.loop !34

middle.block643:                                  ; preds = %vector.body651
  %cmp.n660 = icmp eq i64 %n.vec648, %213
  br i1 %cmp.n660, label %.loopexit.backedge, label %.lr.ph462.preheader689

.loopexit.backedge:                               ; preds = %.lr.ph462.prol.loopexit, %.lr.ph462, %.lr.ph470.prol.loopexit, %.lr.ph470, %middle.block643, %middle.block, %.loopexit407, %._crit_edge
  %.be = phi i32 [ %282, %.loopexit407 ], [ %.pre.pre, %._crit_edge ], [ %282, %middle.block ], [ %.pre.pre, %middle.block643 ], [ %282, %.lr.ph470 ], [ %282, %.lr.ph470.prol.loopexit ], [ %.pre.pre, %.lr.ph462 ], [ %.pre.pre, %.lr.ph462.prol.loopexit ]
  br label %.loopexit

.lr.ph462.preheader689:                           ; preds = %middle.block643, %vector.memcheck635, %.lr.ph462.preheader
  %indvars.iv545.ph = phi i64 [ 1, %vector.memcheck635 ], [ 1, %.lr.ph462.preheader ], [ %ind.end649, %middle.block643 ]
  %221 = zext nneg i32 %.pre.pre to i64
  %222 = and i32 %.pre.pre, 1
  %lcmp.mod705.not = icmp eq i32 %222, 0
  br i1 %lcmp.mod705.not, label %.lr.ph462.prol.loopexit, label %.lr.ph462.prol

.lr.ph462.prol:                                   ; preds = %.lr.ph462.preheader689
  %223 = getelementptr inbounds float, ptr %20, i64 %indvars.iv545.ph
  %224 = load float, ptr %223, align 4, !tbaa !12
  %225 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv545.ph
  %226 = load <2 x float>, ptr %225, align 4, !tbaa !12
  %227 = insertelement <2 x float> poison, float %224, i64 0
  %228 = shufflevector <2 x float> %227, <2 x float> poison, <2 x i32> zeroinitializer
  %229 = fmul <2 x float> %228, %226
  store <2 x float> %229, ptr %225, align 4, !tbaa !12
  %indvars.iv.next546.prol = add nuw nsw i64 %indvars.iv545.ph, 1
  br label %.lr.ph462.prol.loopexit

.lr.ph462.prol.loopexit:                          ; preds = %.lr.ph462.prol, %.lr.ph462.preheader689
  %indvars.iv545.unr = phi i64 [ %indvars.iv545.ph, %.lr.ph462.preheader689 ], [ %indvars.iv.next546.prol, %.lr.ph462.prol ]
  %230 = icmp eq i64 %indvars.iv545.ph, %221
  br i1 %230, label %.loopexit.backedge, label %.lr.ph462

.lr.ph462:                                        ; preds = %.lr.ph462.prol.loopexit, %.lr.ph462
  %indvars.iv545 = phi i64 [ %indvars.iv.next546.1, %.lr.ph462 ], [ %indvars.iv545.unr, %.lr.ph462.prol.loopexit ]
  %231 = getelementptr inbounds float, ptr %20, i64 %indvars.iv545
  %232 = load float, ptr %231, align 4, !tbaa !12
  %233 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv545
  %234 = load <2 x float>, ptr %233, align 4, !tbaa !12
  %235 = insertelement <2 x float> poison, float %232, i64 0
  %236 = shufflevector <2 x float> %235, <2 x float> poison, <2 x i32> zeroinitializer
  %237 = fmul <2 x float> %236, %234
  store <2 x float> %237, ptr %233, align 4, !tbaa !12
  %238 = getelementptr float, ptr %7, i64 %indvars.iv545
  %239 = load float, ptr %238, align 4, !tbaa !12
  %240 = getelementptr %struct.complex, ptr %10, i64 %indvars.iv545
  %241 = load <2 x float>, ptr %240, align 4, !tbaa !12
  %242 = insertelement <2 x float> poison, float %239, i64 0
  %243 = shufflevector <2 x float> %242, <2 x float> poison, <2 x i32> zeroinitializer
  %244 = fmul <2 x float> %243, %241
  store <2 x float> %244, ptr %240, align 4, !tbaa !12
  %indvars.iv.next546.1 = add nuw nsw i64 %indvars.iv545, 2
  %exitcond549.not.1 = icmp eq i64 %indvars.iv.next546.1, %wide.trip.count548
  br i1 %exitcond549.not.1, label %.loopexit.backedge, label %.lr.ph462, !llvm.loop !35

245:                                              ; preds = %.loopexit
  %246 = load i32, ptr %8, align 4, !tbaa !5
  %.not394 = icmp eq i32 %246, 0
  br i1 %.not394, label %.loopexit407, label %247

247:                                              ; preds = %245
  %248 = load i32, ptr %1, align 4, !tbaa !5
  %.not395463 = icmp slt i32 %248, 1
  br i1 %.not395463, label %.loopexit407, label %.lr.ph466.preheader

.lr.ph466.preheader:                              ; preds = %247
  %249 = add nuw i32 %248, 1
  %wide.trip.count553 = zext i32 %249 to i64
  %250 = zext nneg i32 %248 to i64
  %min.iters.check619 = icmp eq i32 %248, 1
  br i1 %min.iters.check619, label %.lr.ph466.preheader688, label %vector.memcheck609

vector.memcheck609:                               ; preds = %.lr.ph466.preheader
  %251 = shl nuw nsw i64 %wide.trip.count553, 3
  %scevgep611 = getelementptr i8, ptr %scevgep610, i64 %251
  %252 = shl nuw nsw i64 %wide.trip.count553, 2
  %scevgep613 = getelementptr i8, ptr %scevgep612, i64 %252
  %bound0614 = icmp ugt ptr %scevgep613, %10
  %bound1615 = icmp ugt ptr %scevgep611, %7
  %found.conflict616 = and i1 %bound0614, %bound1615
  br i1 %found.conflict616, label %.lr.ph466.preheader688, label %vector.ph620

vector.ph620:                                     ; preds = %vector.memcheck609
  %n.vec622 = and i64 %250, 2147483646
  %ind.end623 = or i64 %250, 1
  br label %vector.body625

vector.body625:                                   ; preds = %vector.body625, %vector.ph620
  %index626 = phi i64 [ 0, %vector.ph620 ], [ %index.next633, %vector.body625 ]
  %253 = getelementptr float, ptr %7, i64 %index626
  %wide.load628 = load <2 x float>, ptr %253, align 4, !tbaa !12, !alias.scope !36
  %254 = getelementptr %struct.complex, ptr %10, i64 %index626
  %255 = load <4 x float>, ptr %254, align 4, !tbaa !12
  %256 = shufflevector <2 x float> %wide.load628, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec632 = fmul <4 x float> %256, %255
  store <4 x float> %interleaved.vec632, ptr %254, align 4, !tbaa !12
  %index.next633 = add nuw i64 %index626, 2
  %257 = icmp eq i64 %index.next633, %n.vec622
  br i1 %257, label %middle.block617, label %vector.body625, !llvm.loop !39

middle.block617:                                  ; preds = %vector.body625
  %cmp.n634 = icmp eq i64 %n.vec622, %250
  br i1 %cmp.n634, label %.loopexit407, label %.lr.ph466.preheader688

.lr.ph466.preheader688:                           ; preds = %middle.block617, %vector.memcheck609, %.lr.ph466.preheader
  %indvars.iv550.ph = phi i64 [ 1, %vector.memcheck609 ], [ 1, %.lr.ph466.preheader ], [ %ind.end623, %middle.block617 ]
  %258 = zext nneg i32 %248 to i64
  %259 = and i32 %248, 1
  %lcmp.mod707.not = icmp eq i32 %259, 0
  br i1 %lcmp.mod707.not, label %.lr.ph466.prol.loopexit, label %.lr.ph466.prol

.lr.ph466.prol:                                   ; preds = %.lr.ph466.preheader688
  %260 = getelementptr inbounds float, ptr %20, i64 %indvars.iv550.ph
  %261 = load float, ptr %260, align 4, !tbaa !12
  %262 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv550.ph
  %263 = load <2 x float>, ptr %262, align 4, !tbaa !12
  %264 = insertelement <2 x float> poison, float %261, i64 0
  %265 = shufflevector <2 x float> %264, <2 x float> poison, <2 x i32> zeroinitializer
  %266 = fmul <2 x float> %265, %263
  store <2 x float> %266, ptr %262, align 4, !tbaa !12
  %indvars.iv.next551.prol = add nuw nsw i64 %indvars.iv550.ph, 1
  br label %.lr.ph466.prol.loopexit

.lr.ph466.prol.loopexit:                          ; preds = %.lr.ph466.prol, %.lr.ph466.preheader688
  %indvars.iv550.unr = phi i64 [ %indvars.iv550.ph, %.lr.ph466.preheader688 ], [ %indvars.iv.next551.prol, %.lr.ph466.prol ]
  %267 = icmp eq i64 %indvars.iv550.ph, %258
  br i1 %267, label %.loopexit407, label %.lr.ph466

.lr.ph466:                                        ; preds = %.lr.ph466.prol.loopexit, %.lr.ph466
  %indvars.iv550 = phi i64 [ %indvars.iv.next551.1, %.lr.ph466 ], [ %indvars.iv550.unr, %.lr.ph466.prol.loopexit ]
  %268 = getelementptr inbounds float, ptr %20, i64 %indvars.iv550
  %269 = load float, ptr %268, align 4, !tbaa !12
  %270 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv550
  %271 = load <2 x float>, ptr %270, align 4, !tbaa !12
  %272 = insertelement <2 x float> poison, float %269, i64 0
  %273 = shufflevector <2 x float> %272, <2 x float> poison, <2 x i32> zeroinitializer
  %274 = fmul <2 x float> %273, %271
  store <2 x float> %274, ptr %270, align 4, !tbaa !12
  %275 = getelementptr float, ptr %7, i64 %indvars.iv550
  %276 = load float, ptr %275, align 4, !tbaa !12
  %277 = getelementptr %struct.complex, ptr %10, i64 %indvars.iv550
  %278 = load <2 x float>, ptr %277, align 4, !tbaa !12
  %279 = insertelement <2 x float> poison, float %276, i64 0
  %280 = shufflevector <2 x float> %279, <2 x float> poison, <2 x i32> zeroinitializer
  %281 = fmul <2 x float> %280, %278
  store <2 x float> %281, ptr %277, align 4, !tbaa !12
  %indvars.iv.next551.1 = add nuw nsw i64 %indvars.iv550, 2
  %exitcond554.not.1 = icmp eq i64 %indvars.iv.next551.1, %wide.trip.count553
  br i1 %exitcond554.not.1, label %.loopexit407, label %.lr.ph466, !llvm.loop !40

.loopexit407:                                     ; preds = %.lr.ph466.prol.loopexit, %.lr.ph466, %middle.block617, %247, %245
  call void @chetrs_(ptr noundef nonnull %.str.1..str591, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #5
  %282 = load i32, ptr %1, align 4, !tbaa !5
  %.not396467 = icmp slt i32 %282, 1
  br i1 %.not396467, label %.loopexit.backedge, label %.lr.ph470.preheader

.lr.ph470.preheader:                              ; preds = %.loopexit407
  %283 = add nuw i32 %282, 1
  %wide.trip.count558 = zext i32 %283 to i64
  %284 = zext nneg i32 %282 to i64
  %min.iters.check = icmp eq i32 %282, 1
  br i1 %min.iters.check, label %.lr.ph470.preheader687, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph470.preheader
  %285 = shl nuw nsw i64 %wide.trip.count558, 3
  %scevgep605 = getelementptr i8, ptr %scevgep, i64 %285
  %286 = shl nuw nsw i64 %wide.trip.count558, 2
  %scevgep607 = getelementptr i8, ptr %scevgep606, i64 %286
  %bound0 = icmp ugt ptr %scevgep607, %10
  %bound1 = icmp ugt ptr %scevgep605, %11
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph470.preheader687, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %284, 2147483646
  %ind.end = or i64 %284, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %287 = getelementptr float, ptr %11, i64 %index
  %wide.load = load <2 x float>, ptr %287, align 4, !tbaa !12, !alias.scope !41
  %288 = getelementptr %struct.complex, ptr %10, i64 %index
  %289 = load <4 x float>, ptr %288, align 4, !tbaa !12
  %290 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %290, %289
  store <4 x float> %interleaved.vec, ptr %288, align 4, !tbaa !12
  %index.next = add nuw i64 %index, 2
  %291 = icmp eq i64 %index.next, %n.vec
  br i1 %291, label %middle.block, label %vector.body, !llvm.loop !44

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %284
  br i1 %cmp.n, label %.loopexit.backedge, label %.lr.ph470.preheader687

.lr.ph470.preheader687:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph470.preheader
  %indvars.iv555.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph470.preheader ], [ %ind.end, %middle.block ]
  %292 = zext nneg i32 %282 to i64
  %293 = and i32 %282, 1
  %lcmp.mod709.not = icmp eq i32 %293, 0
  br i1 %lcmp.mod709.not, label %.lr.ph470.prol.loopexit, label %.lr.ph470.prol

.lr.ph470.prol:                                   ; preds = %.lr.ph470.preheader687
  %294 = getelementptr inbounds float, ptr %22, i64 %indvars.iv555.ph
  %295 = load float, ptr %294, align 4, !tbaa !12
  %296 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv555.ph
  %297 = load <2 x float>, ptr %296, align 4, !tbaa !12
  %298 = insertelement <2 x float> poison, float %295, i64 0
  %299 = shufflevector <2 x float> %298, <2 x float> poison, <2 x i32> zeroinitializer
  %300 = fmul <2 x float> %299, %297
  store <2 x float> %300, ptr %296, align 4, !tbaa !12
  %indvars.iv.next556.prol = add nuw nsw i64 %indvars.iv555.ph, 1
  br label %.lr.ph470.prol.loopexit

.lr.ph470.prol.loopexit:                          ; preds = %.lr.ph470.prol, %.lr.ph470.preheader687
  %indvars.iv555.unr = phi i64 [ %indvars.iv555.ph, %.lr.ph470.preheader687 ], [ %indvars.iv.next556.prol, %.lr.ph470.prol ]
  %301 = icmp eq i64 %indvars.iv555.ph, %292
  br i1 %301, label %.loopexit.backedge, label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470.prol.loopexit, %.lr.ph470
  %indvars.iv555 = phi i64 [ %indvars.iv.next556.1, %.lr.ph470 ], [ %indvars.iv555.unr, %.lr.ph470.prol.loopexit ]
  %302 = getelementptr inbounds float, ptr %22, i64 %indvars.iv555
  %303 = load float, ptr %302, align 4, !tbaa !12
  %304 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv555
  %305 = load <2 x float>, ptr %304, align 4, !tbaa !12
  %306 = insertelement <2 x float> poison, float %303, i64 0
  %307 = shufflevector <2 x float> %306, <2 x float> poison, <2 x i32> zeroinitializer
  %308 = fmul <2 x float> %307, %305
  store <2 x float> %308, ptr %304, align 4, !tbaa !12
  %309 = getelementptr float, ptr %11, i64 %indvars.iv555
  %310 = load float, ptr %309, align 4, !tbaa !12
  %311 = getelementptr %struct.complex, ptr %10, i64 %indvars.iv555
  %312 = load <2 x float>, ptr %311, align 4, !tbaa !12
  %313 = insertelement <2 x float> poison, float %310, i64 0
  %314 = shufflevector <2 x float> %313, <2 x float> poison, <2 x i32> zeroinitializer
  %315 = fmul <2 x float> %314, %312
  store <2 x float> %315, ptr %311, align 4, !tbaa !12
  %indvars.iv.next556.1 = add nuw nsw i64 %indvars.iv555, 2
  %exitcond559.not.1 = icmp eq i64 %indvars.iv.next556.1, %wide.trip.count558
  br i1 %exitcond559.not.1, label %.loopexit.backedge, label %.lr.ph470, !llvm.loop !45

316:                                              ; preds = %.loopexit
  %317 = load float, ptr %16, align 4, !tbaa !12
  %318 = fcmp une float %317, 0.000000e+00
  %319 = fdiv float 1.000000e+00, %317
  %.0376 = select i1 %318, float %319, float 0.000000e+00
  br label %320

320:                                              ; preds = %.loopexit412, %316, %.thread
  %.0 = phi float [ 0.000000e+00, %.thread ], [ %.0376, %316 ], [ %.mux, %.loopexit412 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  ret float %.0
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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


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