; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1

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

77:                                               ; preds = %13
  %78 = load ptr, ptr %24, align 8, !tbaa !5
  store i64 -2, ptr %78, align 8, !tbaa !9
  br label %79

79:                                               ; preds = %77, %13
  %80 = load ptr, ptr %24, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = icmp ne i64 %81, 0
  br i1 %82, label %83, label %90

83:                                               ; preds = %79
  %84 = load ptr, ptr %24, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  %86 = sub nsw i64 0, %85
  store i64 %86, ptr %32, align 8, !tbaa !9
  %87 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %32)
  %88 = load float, ptr %36, align 4, !tbaa !11
  %89 = fpext float %88 to double
  store double %89, ptr %14, align 8
  store i32 1, ptr %48, align 4
  br label %935

90:                                               ; preds = %79
  store i64 0, ptr %42, align 8, !tbaa !9
  %91 = load ptr, ptr %15, align 8, !tbaa !5
  %92 = call i64 @lsame_(ptr noundef %91, ptr noundef @.str.1)
  %93 = icmp ne i64 %92, 0
  br i1 %93, label %94, label %95

94:                                               ; preds = %90
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %95

95:                                               ; preds = %94, %90
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %96 = load i64, ptr %42, align 8, !tbaa !9
  %97 = icmp ne i64 %96, 0
  br i1 %97, label %98, label %365

98:                                               ; preds = %95
  %99 = load ptr, ptr %16, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %361, %98
  %102 = load i64, ptr %40, align 8, !tbaa !9
  %103 = load i64, ptr %32, align 8, !tbaa !9
  %104 = icmp sle i64 %102, %103
  br i1 %104, label %105, label %364

105:                                              ; preds = %101
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %106 = load ptr, ptr %23, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp ne i64 %107, 0
  br i1 %108, label %109, label %233

109:                                              ; preds = %105
  %110 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %110, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %111

111:                                              ; preds = %166, %109
  %112 = load i64, ptr %41, align 8, !tbaa !9
  %113 = load i64, ptr %33, align 8, !tbaa !9
  %114 = icmp sle i64 %112, %113
  br i1 %114, label %115, label %169

115:                                              ; preds = %111
  %116 = load i64, ptr %41, align 8, !tbaa !9
  %117 = load i64, ptr %40, align 8, !tbaa !9
  %118 = load i64, ptr %28, align 8, !tbaa !9
  %119 = mul nsw i64 %117, %118
  %120 = add nsw i64 %116, %119
  store i64 %120, ptr %34, align 8, !tbaa !9
  %121 = load ptr, ptr %17, align 8, !tbaa !5
  %122 = load i64, ptr %34, align 8, !tbaa !9
  %123 = getelementptr inbounds %struct.complex, ptr %121, i64 %122
  %124 = getelementptr inbounds %struct.complex, ptr %123, i32 0, i32 0
  %125 = load float, ptr %124, align 4, !tbaa !13
  store float %125, ptr %37, align 4, !tbaa !11
  %126 = load float, ptr %37, align 4, !tbaa !11
  %127 = fcmp oge float %126, 0.000000e+00
  br i1 %127, label %128, label %130

128:                                              ; preds = %115
  %129 = load float, ptr %37, align 4, !tbaa !11
  br label %133

130:                                              ; preds = %115
  %131 = load float, ptr %37, align 4, !tbaa !11
  %132 = fneg float %131
  br label %133

133:                                              ; preds = %130, %128
  %134 = phi float [ %129, %128 ], [ %132, %130 ]
  %135 = fpext float %134 to double
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  %137 = load i64, ptr %41, align 8, !tbaa !9
  %138 = load i64, ptr %40, align 8, !tbaa !9
  %139 = load i64, ptr %28, align 8, !tbaa !9
  %140 = mul nsw i64 %138, %139
  %141 = add nsw i64 %137, %140
  %142 = getelementptr inbounds %struct.complex, ptr %136, i64 %141
  %143 = call double @r_imag(ptr noundef %142)
  %144 = fptrunc double %143 to float
  store float %144, ptr %38, align 4, !tbaa !11
  %145 = load float, ptr %38, align 4, !tbaa !11
  %146 = fcmp oge float %145, 0.000000e+00
  br i1 %146, label %147, label %149

147:                                              ; preds = %133
  %148 = load float, ptr %38, align 4, !tbaa !11
  br label %152

149:                                              ; preds = %133
  %150 = load float, ptr %38, align 4, !tbaa !11
  %151 = fneg float %150
  br label %152

152:                                              ; preds = %149, %147
  %153 = phi float [ %148, %147 ], [ %151, %149 ]
  %154 = fpext float %153 to double
  %155 = fadd double %135, %154
  %156 = load ptr, ptr %22, align 8, !tbaa !5
  %157 = load i64, ptr %41, align 8, !tbaa !9
  %158 = getelementptr inbounds float, ptr %156, i64 %157
  %159 = load float, ptr %158, align 4, !tbaa !11
  %160 = fpext float %159 to double
  %161 = fdiv double %155, %160
  %162 = load float, ptr %43, align 4, !tbaa !11
  %163 = fpext float %162 to double
  %164 = fadd double %163, %161
  %165 = fptrunc double %164 to float
  store float %165, ptr %43, align 4, !tbaa !11
  br label %166

166:                                              ; preds = %152
  %167 = load i64, ptr %41, align 8, !tbaa !9
  %168 = add nsw i64 %167, 1
  store i64 %168, ptr %41, align 8, !tbaa !9
  br label %111, !llvm.loop !15

169:                                              ; preds = %111
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  store i64 %171, ptr %33, align 8, !tbaa !9
  %172 = load i64, ptr %40, align 8, !tbaa !9
  %173 = add nsw i64 %172, 1
  store i64 %173, ptr %41, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %229, %169
  %175 = load i64, ptr %41, align 8, !tbaa !9
  %176 = load i64, ptr %33, align 8, !tbaa !9
  %177 = icmp sle i64 %175, %176
  br i1 %177, label %178, label %232

178:                                              ; preds = %174
  %179 = load i64, ptr %40, align 8, !tbaa !9
  %180 = load i64, ptr %41, align 8, !tbaa !9
  %181 = load i64, ptr %28, align 8, !tbaa !9
  %182 = mul nsw i64 %180, %181
  %183 = add nsw i64 %179, %182
  store i64 %183, ptr %34, align 8, !tbaa !9
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = load i64, ptr %34, align 8, !tbaa !9
  %186 = getelementptr inbounds %struct.complex, ptr %184, i64 %185
  %187 = getelementptr inbounds %struct.complex, ptr %186, i32 0, i32 0
  %188 = load float, ptr %187, align 4, !tbaa !13
  store float %188, ptr %37, align 4, !tbaa !11
  %189 = load float, ptr %37, align 4, !tbaa !11
  %190 = fcmp oge float %189, 0.000000e+00
  br i1 %190, label %191, label %193

191:                                              ; preds = %178
  %192 = load float, ptr %37, align 4, !tbaa !11
  br label %196

193:                                              ; preds = %178
  %194 = load float, ptr %37, align 4, !tbaa !11
  %195 = fneg float %194
  br label %196

196:                                              ; preds = %193, %191
  %197 = phi float [ %192, %191 ], [ %195, %193 ]
  %198 = fpext float %197 to double
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = load i64, ptr %40, align 8, !tbaa !9
  %201 = load i64, ptr %41, align 8, !tbaa !9
  %202 = load i64, ptr %28, align 8, !tbaa !9
  %203 = mul nsw i64 %201, %202
  %204 = add nsw i64 %200, %203
  %205 = getelementptr inbounds %struct.complex, ptr %199, i64 %204
  %206 = call double @r_imag(ptr noundef %205)
  %207 = fptrunc double %206 to float
  store float %207, ptr %38, align 4, !tbaa !11
  %208 = load float, ptr %38, align 4, !tbaa !11
  %209 = fcmp oge float %208, 0.000000e+00
  br i1 %209, label %210, label %212

210:                                              ; preds = %196
  %211 = load float, ptr %38, align 4, !tbaa !11
  br label %215

212:                                              ; preds = %196
  %213 = load float, ptr %38, align 4, !tbaa !11
  %214 = fneg float %213
  br label %215

215:                                              ; preds = %212, %210
  %216 = phi float [ %211, %210 ], [ %214, %212 ]
  %217 = fpext float %216 to double
  %218 = fadd double %198, %217
  %219 = load ptr, ptr %22, align 8, !tbaa !5
  %220 = load i64, ptr %41, align 8, !tbaa !9
  %221 = getelementptr inbounds float, ptr %219, i64 %220
  %222 = load float, ptr %221, align 4, !tbaa !11
  %223 = fpext float %222 to double
  %224 = fdiv double %218, %223
  %225 = load float, ptr %43, align 4, !tbaa !11
  %226 = fpext float %225 to double
  %227 = fadd double %226, %224
  %228 = fptrunc double %227 to float
  store float %228, ptr %43, align 4, !tbaa !11
  br label %229

229:                                              ; preds = %215
  %230 = load i64, ptr %41, align 8, !tbaa !9
  %231 = add nsw i64 %230, 1
  store i64 %231, ptr %41, align 8, !tbaa !9
  br label %174, !llvm.loop !17

232:                                              ; preds = %174
  br label %345

233:                                              ; preds = %105
  %234 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %234, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %284, %233
  %236 = load i64, ptr %41, align 8, !tbaa !9
  %237 = load i64, ptr %33, align 8, !tbaa !9
  %238 = icmp sle i64 %236, %237
  br i1 %238, label %239, label %287

239:                                              ; preds = %235
  %240 = load i64, ptr %41, align 8, !tbaa !9
  %241 = load i64, ptr %40, align 8, !tbaa !9
  %242 = load i64, ptr %28, align 8, !tbaa !9
  %243 = mul nsw i64 %241, %242
  %244 = add nsw i64 %240, %243
  store i64 %244, ptr %34, align 8, !tbaa !9
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  %246 = load i64, ptr %34, align 8, !tbaa !9
  %247 = getelementptr inbounds %struct.complex, ptr %245, i64 %246
  %248 = getelementptr inbounds %struct.complex, ptr %247, i32 0, i32 0
  %249 = load float, ptr %248, align 4, !tbaa !13
  store float %249, ptr %37, align 4, !tbaa !11
  %250 = load float, ptr %37, align 4, !tbaa !11
  %251 = fcmp oge float %250, 0.000000e+00
  br i1 %251, label %252, label %254

252:                                              ; preds = %239
  %253 = load float, ptr %37, align 4, !tbaa !11
  br label %257

254:                                              ; preds = %239
  %255 = load float, ptr %37, align 4, !tbaa !11
  %256 = fneg float %255
  br label %257

257:                                              ; preds = %254, %252
  %258 = phi float [ %253, %252 ], [ %256, %254 ]
  %259 = fpext float %258 to double
  %260 = load ptr, ptr %17, align 8, !tbaa !5
  %261 = load i64, ptr %41, align 8, !tbaa !9
  %262 = load i64, ptr %40, align 8, !tbaa !9
  %263 = load i64, ptr %28, align 8, !tbaa !9
  %264 = mul nsw i64 %262, %263
  %265 = add nsw i64 %261, %264
  %266 = getelementptr inbounds %struct.complex, ptr %260, i64 %265
  %267 = call double @r_imag(ptr noundef %266)
  %268 = fptrunc double %267 to float
  store float %268, ptr %38, align 4, !tbaa !11
  %269 = load float, ptr %38, align 4, !tbaa !11
  %270 = fcmp oge float %269, 0.000000e+00
  br i1 %270, label %271, label %273

271:                                              ; preds = %257
  %272 = load float, ptr %38, align 4, !tbaa !11
  br label %276

273:                                              ; preds = %257
  %274 = load float, ptr %38, align 4, !tbaa !11
  %275 = fneg float %274
  br label %276

276:                                              ; preds = %273, %271
  %277 = phi float [ %272, %271 ], [ %275, %273 ]
  %278 = fpext float %277 to double
  %279 = fadd double %259, %278
  %280 = load float, ptr %43, align 4, !tbaa !11
  %281 = fpext float %280 to double
  %282 = fadd double %281, %279
  %283 = fptrunc double %282 to float
  store float %283, ptr %43, align 4, !tbaa !11
  br label %284

284:                                              ; preds = %276
  %285 = load i64, ptr %41, align 8, !tbaa !9
  %286 = add nsw i64 %285, 1
  store i64 %286, ptr %41, align 8, !tbaa !9
  br label %235, !llvm.loop !18

287:                                              ; preds = %235
  %288 = load ptr, ptr %16, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  store i64 %289, ptr %33, align 8, !tbaa !9
  %290 = load i64, ptr %40, align 8, !tbaa !9
  %291 = add nsw i64 %290, 1
  store i64 %291, ptr %41, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %341, %287
  %293 = load i64, ptr %41, align 8, !tbaa !9
  %294 = load i64, ptr %33, align 8, !tbaa !9
  %295 = icmp sle i64 %293, %294
  br i1 %295, label %296, label %344

296:                                              ; preds = %292
  %297 = load i64, ptr %40, align 8, !tbaa !9
  %298 = load i64, ptr %41, align 8, !tbaa !9
  %299 = load i64, ptr %28, align 8, !tbaa !9
  %300 = mul nsw i64 %298, %299
  %301 = add nsw i64 %297, %300
  store i64 %301, ptr %34, align 8, !tbaa !9
  %302 = load ptr, ptr %17, align 8, !tbaa !5
  %303 = load i64, ptr %34, align 8, !tbaa !9
  %304 = getelementptr inbounds %struct.complex, ptr %302, 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 %37, align 4, !tbaa !11
  %307 = load float, ptr %37, align 4, !tbaa !11
  %308 = fcmp oge float %307, 0.000000e+00
  br i1 %308, label %309, label %311

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

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

314:                                              ; preds = %311, %309
  %315 = phi float [ %310, %309 ], [ %313, %311 ]
  %316 = fpext float %315 to double
  %317 = load ptr, ptr %17, align 8, !tbaa !5
  %318 = load i64, ptr %40, align 8, !tbaa !9
  %319 = load i64, ptr %41, align 8, !tbaa !9
  %320 = load i64, ptr %28, align 8, !tbaa !9
  %321 = mul nsw i64 %319, %320
  %322 = add nsw i64 %318, %321
  %323 = getelementptr inbounds %struct.complex, ptr %317, i64 %322
  %324 = call double @r_imag(ptr noundef %323)
  %325 = fptrunc double %324 to float
  store float %325, ptr %38, align 4, !tbaa !11
  %326 = load float, ptr %38, align 4, !tbaa !11
  %327 = fcmp oge float %326, 0.000000e+00
  br i1 %327, label %328, label %330

328:                                              ; preds = %314
  %329 = load float, ptr %38, align 4, !tbaa !11
  br label %333

330:                                              ; preds = %314
  %331 = load float, ptr %38, align 4, !tbaa !11
  %332 = fneg float %331
  br label %333

333:                                              ; preds = %330, %328
  %334 = phi float [ %329, %328 ], [ %332, %330 ]
  %335 = fpext float %334 to double
  %336 = fadd double %316, %335
  %337 = load float, ptr %43, align 4, !tbaa !11
  %338 = fpext float %337 to double
  %339 = fadd double %338, %336
  %340 = fptrunc double %339 to float
  store float %340, ptr %43, align 4, !tbaa !11
  br label %341

341:                                              ; preds = %333
  %342 = load i64, ptr %41, align 8, !tbaa !9
  %343 = add nsw i64 %342, 1
  store i64 %343, ptr %41, align 8, !tbaa !9
  br label %292, !llvm.loop !19

344:                                              ; preds = %292
  br label %345

345:                                              ; preds = %344, %232
  %346 = load float, ptr %43, align 4, !tbaa !11
  %347 = load ptr, ptr %26, align 8, !tbaa !5
  %348 = load i64, ptr %40, align 8, !tbaa !9
  %349 = getelementptr inbounds float, ptr %347, i64 %348
  store float %346, ptr %349, align 4, !tbaa !11
  %350 = load float, ptr %46, align 4, !tbaa !11
  %351 = load float, ptr %43, align 4, !tbaa !11
  %352 = fcmp oge float %350, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %345
  %354 = load float, ptr %46, align 4, !tbaa !11
  br label %357

355:                                              ; preds = %345
  %356 = load float, ptr %43, align 4, !tbaa !11
  br label %357

357:                                              ; preds = %355, %353
  %358 = phi float [ %354, %353 ], [ %356, %355 ]
  %359 = fpext float %358 to double
  %360 = fptrunc double %359 to float
  store float %360, ptr %46, align 4, !tbaa !11
  br label %361

361:                                              ; preds = %357
  %362 = load i64, ptr %40, align 8, !tbaa !9
  %363 = add nsw i64 %362, 1
  store i64 %363, ptr %40, align 8, !tbaa !9
  br label %101, !llvm.loop !20

364:                                              ; preds = %101
  br label %632

365:                                              ; preds = %95
  %366 = load ptr, ptr %16, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  store i64 %367, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %628, %365
  %369 = load i64, ptr %40, align 8, !tbaa !9
  %370 = load i64, ptr %32, align 8, !tbaa !9
  %371 = icmp sle i64 %369, %370
  br i1 %371, label %372, label %631

372:                                              ; preds = %368
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %373 = load ptr, ptr %23, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = icmp ne i64 %374, 0
  br i1 %375, label %376, label %500

376:                                              ; preds = %372
  %377 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %377, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %378

378:                                              ; preds = %433, %376
  %379 = load i64, ptr %41, align 8, !tbaa !9
  %380 = load i64, ptr %33, align 8, !tbaa !9
  %381 = icmp sle i64 %379, %380
  br i1 %381, label %382, label %436

382:                                              ; preds = %378
  %383 = load i64, ptr %40, align 8, !tbaa !9
  %384 = load i64, ptr %41, align 8, !tbaa !9
  %385 = load i64, ptr %28, align 8, !tbaa !9
  %386 = mul nsw i64 %384, %385
  %387 = add nsw i64 %383, %386
  store i64 %387, ptr %34, align 8, !tbaa !9
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = load i64, ptr %34, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.complex, ptr %388, i64 %389
  %391 = getelementptr inbounds %struct.complex, ptr %390, i32 0, i32 0
  %392 = load float, ptr %391, align 4, !tbaa !13
  store float %392, ptr %37, align 4, !tbaa !11
  %393 = load float, ptr %37, align 4, !tbaa !11
  %394 = fcmp oge float %393, 0.000000e+00
  br i1 %394, label %395, label %397

395:                                              ; preds = %382
  %396 = load float, ptr %37, align 4, !tbaa !11
  br label %400

397:                                              ; preds = %382
  %398 = load float, ptr %37, align 4, !tbaa !11
  %399 = fneg float %398
  br label %400

400:                                              ; preds = %397, %395
  %401 = phi float [ %396, %395 ], [ %399, %397 ]
  %402 = fpext float %401 to double
  %403 = load ptr, ptr %17, align 8, !tbaa !5
  %404 = load i64, ptr %40, align 8, !tbaa !9
  %405 = load i64, ptr %41, align 8, !tbaa !9
  %406 = load i64, ptr %28, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  %409 = getelementptr inbounds %struct.complex, ptr %403, i64 %408
  %410 = call double @r_imag(ptr noundef %409)
  %411 = fptrunc double %410 to float
  store float %411, ptr %38, align 4, !tbaa !11
  %412 = load float, ptr %38, align 4, !tbaa !11
  %413 = fcmp oge float %412, 0.000000e+00
  br i1 %413, label %414, label %416

414:                                              ; preds = %400
  %415 = load float, ptr %38, align 4, !tbaa !11
  br label %419

416:                                              ; preds = %400
  %417 = load float, ptr %38, align 4, !tbaa !11
  %418 = fneg float %417
  br label %419

419:                                              ; preds = %416, %414
  %420 = phi float [ %415, %414 ], [ %418, %416 ]
  %421 = fpext float %420 to double
  %422 = fadd double %402, %421
  %423 = load ptr, ptr %22, align 8, !tbaa !5
  %424 = load i64, ptr %41, align 8, !tbaa !9
  %425 = getelementptr inbounds float, ptr %423, i64 %424
  %426 = load float, ptr %425, align 4, !tbaa !11
  %427 = fpext float %426 to double
  %428 = fdiv double %422, %427
  %429 = load float, ptr %43, align 4, !tbaa !11
  %430 = fpext float %429 to double
  %431 = fadd double %430, %428
  %432 = fptrunc double %431 to float
  store float %432, ptr %43, align 4, !tbaa !11
  br label %433

433:                                              ; preds = %419
  %434 = load i64, ptr %41, align 8, !tbaa !9
  %435 = add nsw i64 %434, 1
  store i64 %435, ptr %41, align 8, !tbaa !9
  br label %378, !llvm.loop !21

436:                                              ; preds = %378
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  store i64 %438, ptr %33, align 8, !tbaa !9
  %439 = load i64, ptr %40, align 8, !tbaa !9
  %440 = add nsw i64 %439, 1
  store i64 %440, ptr %41, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %496, %436
  %442 = load i64, ptr %41, align 8, !tbaa !9
  %443 = load i64, ptr %33, align 8, !tbaa !9
  %444 = icmp sle i64 %442, %443
  br i1 %444, label %445, label %499

445:                                              ; preds = %441
  %446 = load i64, ptr %41, align 8, !tbaa !9
  %447 = load i64, ptr %40, align 8, !tbaa !9
  %448 = load i64, ptr %28, align 8, !tbaa !9
  %449 = mul nsw i64 %447, %448
  %450 = add nsw i64 %446, %449
  store i64 %450, ptr %34, align 8, !tbaa !9
  %451 = load ptr, ptr %17, align 8, !tbaa !5
  %452 = load i64, ptr %34, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct.complex, ptr %451, i64 %452
  %454 = getelementptr inbounds %struct.complex, ptr %453, i32 0, i32 0
  %455 = load float, ptr %454, align 4, !tbaa !13
  store float %455, ptr %37, align 4, !tbaa !11
  %456 = load float, ptr %37, align 4, !tbaa !11
  %457 = fcmp oge float %456, 0.000000e+00
  br i1 %457, label %458, label %460

458:                                              ; preds = %445
  %459 = load float, ptr %37, align 4, !tbaa !11
  br label %463

460:                                              ; preds = %445
  %461 = load float, ptr %37, align 4, !tbaa !11
  %462 = fneg float %461
  br label %463

463:                                              ; preds = %460, %458
  %464 = phi float [ %459, %458 ], [ %462, %460 ]
  %465 = fpext float %464 to double
  %466 = load ptr, ptr %17, align 8, !tbaa !5
  %467 = load i64, ptr %41, align 8, !tbaa !9
  %468 = load i64, ptr %40, align 8, !tbaa !9
  %469 = load i64, ptr %28, align 8, !tbaa !9
  %470 = mul nsw i64 %468, %469
  %471 = add nsw i64 %467, %470
  %472 = getelementptr inbounds %struct.complex, ptr %466, i64 %471
  %473 = call double @r_imag(ptr noundef %472)
  %474 = fptrunc double %473 to float
  store float %474, ptr %38, align 4, !tbaa !11
  %475 = load float, ptr %38, align 4, !tbaa !11
  %476 = fcmp oge float %475, 0.000000e+00
  br i1 %476, label %477, label %479

477:                                              ; preds = %463
  %478 = load float, ptr %38, align 4, !tbaa !11
  br label %482

479:                                              ; preds = %463
  %480 = load float, ptr %38, align 4, !tbaa !11
  %481 = fneg float %480
  br label %482

482:                                              ; preds = %479, %477
  %483 = phi float [ %478, %477 ], [ %481, %479 ]
  %484 = fpext float %483 to double
  %485 = fadd double %465, %484
  %486 = load ptr, ptr %22, align 8, !tbaa !5
  %487 = load i64, ptr %41, align 8, !tbaa !9
  %488 = getelementptr inbounds float, ptr %486, i64 %487
  %489 = load float, ptr %488, align 4, !tbaa !11
  %490 = fpext float %489 to double
  %491 = fdiv double %485, %490
  %492 = load float, ptr %43, align 4, !tbaa !11
  %493 = fpext float %492 to double
  %494 = fadd double %493, %491
  %495 = fptrunc double %494 to float
  store float %495, ptr %43, align 4, !tbaa !11
  br label %496

496:                                              ; preds = %482
  %497 = load i64, ptr %41, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %41, align 8, !tbaa !9
  br label %441, !llvm.loop !22

499:                                              ; preds = %441
  br label %612

500:                                              ; preds = %372
  %501 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %501, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %502

502:                                              ; preds = %551, %500
  %503 = load i64, ptr %41, align 8, !tbaa !9
  %504 = load i64, ptr %33, align 8, !tbaa !9
  %505 = icmp sle i64 %503, %504
  br i1 %505, label %506, label %554

506:                                              ; preds = %502
  %507 = load i64, ptr %40, align 8, !tbaa !9
  %508 = load i64, ptr %41, align 8, !tbaa !9
  %509 = load i64, ptr %28, align 8, !tbaa !9
  %510 = mul nsw i64 %508, %509
  %511 = add nsw i64 %507, %510
  store i64 %511, ptr %34, align 8, !tbaa !9
  %512 = load ptr, ptr %17, align 8, !tbaa !5
  %513 = load i64, ptr %34, align 8, !tbaa !9
  %514 = getelementptr inbounds %struct.complex, ptr %512, i64 %513
  %515 = getelementptr inbounds %struct.complex, ptr %514, i32 0, i32 0
  %516 = load float, ptr %515, align 4, !tbaa !13
  store float %516, ptr %37, align 4, !tbaa !11
  %517 = load float, ptr %37, align 4, !tbaa !11
  %518 = fcmp oge float %517, 0.000000e+00
  br i1 %518, label %519, label %521

519:                                              ; preds = %506
  %520 = load float, ptr %37, align 4, !tbaa !11
  br label %524

521:                                              ; preds = %506
  %522 = load float, ptr %37, align 4, !tbaa !11
  %523 = fneg float %522
  br label %524

524:                                              ; preds = %521, %519
  %525 = phi float [ %520, %519 ], [ %523, %521 ]
  %526 = fpext float %525 to double
  %527 = load ptr, ptr %17, align 8, !tbaa !5
  %528 = load i64, ptr %40, align 8, !tbaa !9
  %529 = load i64, ptr %41, align 8, !tbaa !9
  %530 = load i64, ptr %28, align 8, !tbaa !9
  %531 = mul nsw i64 %529, %530
  %532 = add nsw i64 %528, %531
  %533 = getelementptr inbounds %struct.complex, ptr %527, i64 %532
  %534 = call double @r_imag(ptr noundef %533)
  %535 = fptrunc double %534 to float
  store float %535, ptr %38, align 4, !tbaa !11
  %536 = load float, ptr %38, align 4, !tbaa !11
  %537 = fcmp oge float %536, 0.000000e+00
  br i1 %537, label %538, label %540

538:                                              ; preds = %524
  %539 = load float, ptr %38, align 4, !tbaa !11
  br label %543

540:                                              ; preds = %524
  %541 = load float, ptr %38, align 4, !tbaa !11
  %542 = fneg float %541
  br label %543

543:                                              ; preds = %540, %538
  %544 = phi float [ %539, %538 ], [ %542, %540 ]
  %545 = fpext float %544 to double
  %546 = fadd double %526, %545
  %547 = load float, ptr %43, align 4, !tbaa !11
  %548 = fpext float %547 to double
  %549 = fadd double %548, %546
  %550 = fptrunc double %549 to float
  store float %550, ptr %43, align 4, !tbaa !11
  br label %551

551:                                              ; preds = %543
  %552 = load i64, ptr %41, align 8, !tbaa !9
  %553 = add nsw i64 %552, 1
  store i64 %553, ptr %41, align 8, !tbaa !9
  br label %502, !llvm.loop !23

554:                                              ; preds = %502
  %555 = load ptr, ptr %16, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  store i64 %556, ptr %33, align 8, !tbaa !9
  %557 = load i64, ptr %40, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  store i64 %558, ptr %41, align 8, !tbaa !9
  br label %559

559:                                              ; preds = %608, %554
  %560 = load i64, ptr %41, align 8, !tbaa !9
  %561 = load i64, ptr %33, align 8, !tbaa !9
  %562 = icmp sle i64 %560, %561
  br i1 %562, label %563, label %611

563:                                              ; preds = %559
  %564 = load i64, ptr %41, align 8, !tbaa !9
  %565 = load i64, ptr %40, align 8, !tbaa !9
  %566 = load i64, ptr %28, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %564, %567
  store i64 %568, ptr %34, align 8, !tbaa !9
  %569 = load ptr, ptr %17, align 8, !tbaa !5
  %570 = load i64, ptr %34, align 8, !tbaa !9
  %571 = getelementptr inbounds %struct.complex, ptr %569, i64 %570
  %572 = getelementptr inbounds %struct.complex, ptr %571, i32 0, i32 0
  %573 = load float, ptr %572, align 4, !tbaa !13
  store float %573, ptr %37, align 4, !tbaa !11
  %574 = load float, ptr %37, align 4, !tbaa !11
  %575 = fcmp oge float %574, 0.000000e+00
  br i1 %575, label %576, label %578

576:                                              ; preds = %563
  %577 = load float, ptr %37, align 4, !tbaa !11
  br label %581

578:                                              ; preds = %563
  %579 = load float, ptr %37, align 4, !tbaa !11
  %580 = fneg float %579
  br label %581

581:                                              ; preds = %578, %576
  %582 = phi float [ %577, %576 ], [ %580, %578 ]
  %583 = fpext float %582 to double
  %584 = load ptr, ptr %17, align 8, !tbaa !5
  %585 = load i64, ptr %41, align 8, !tbaa !9
  %586 = load i64, ptr %40, align 8, !tbaa !9
  %587 = load i64, ptr %28, align 8, !tbaa !9
  %588 = mul nsw i64 %586, %587
  %589 = add nsw i64 %585, %588
  %590 = getelementptr inbounds %struct.complex, ptr %584, i64 %589
  %591 = call double @r_imag(ptr noundef %590)
  %592 = fptrunc double %591 to float
  store float %592, ptr %38, align 4, !tbaa !11
  %593 = load float, ptr %38, align 4, !tbaa !11
  %594 = fcmp oge float %593, 0.000000e+00
  br i1 %594, label %595, label %597

595:                                              ; preds = %581
  %596 = load float, ptr %38, align 4, !tbaa !11
  br label %600

597:                                              ; preds = %581
  %598 = load float, ptr %38, align 4, !tbaa !11
  %599 = fneg float %598
  br label %600

600:                                              ; preds = %597, %595
  %601 = phi float [ %596, %595 ], [ %599, %597 ]
  %602 = fpext float %601 to double
  %603 = fadd double %583, %602
  %604 = load float, ptr %43, align 4, !tbaa !11
  %605 = fpext float %604 to double
  %606 = fadd double %605, %603
  %607 = fptrunc double %606 to float
  store float %607, ptr %43, align 4, !tbaa !11
  br label %608

608:                                              ; preds = %600
  %609 = load i64, ptr %41, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  store i64 %610, ptr %41, align 8, !tbaa !9
  br label %559, !llvm.loop !24

611:                                              ; preds = %559
  br label %612

612:                                              ; preds = %611, %499
  %613 = load float, ptr %43, align 4, !tbaa !11
  %614 = load ptr, ptr %26, align 8, !tbaa !5
  %615 = load i64, ptr %40, align 8, !tbaa !9
  %616 = getelementptr inbounds float, ptr %614, i64 %615
  store float %613, ptr %616, align 4, !tbaa !11
  %617 = load float, ptr %46, align 4, !tbaa !11
  %618 = load float, ptr %43, align 4, !tbaa !11
  %619 = fcmp oge float %617, %618
  br i1 %619, label %620, label %622

620:                                              ; preds = %612
  %621 = load float, ptr %46, align 4, !tbaa !11
  br label %624

622:                                              ; preds = %612
  %623 = load float, ptr %43, align 4, !tbaa !11
  br label %624

624:                                              ; preds = %622, %620
  %625 = phi float [ %621, %620 ], [ %623, %622 ]
  %626 = fpext float %625 to double
  %627 = fptrunc double %626 to float
  store float %627, ptr %46, align 4, !tbaa !11
  br label %628

628:                                              ; preds = %624
  %629 = load i64, ptr %40, align 8, !tbaa !9
  %630 = add nsw i64 %629, 1
  store i64 %630, ptr %40, align 8, !tbaa !9
  br label %368, !llvm.loop !25

631:                                              ; preds = %368
  br label %632

632:                                              ; preds = %631, %364
  %633 = load ptr, ptr %16, align 8, !tbaa !5
  %634 = load i64, ptr %633, align 8, !tbaa !9
  %635 = icmp eq i64 %634, 0
  br i1 %635, label %636, label %639

636:                                              ; preds = %632
  store float 1.000000e+00, ptr %36, align 4, !tbaa !11
  %637 = load float, ptr %36, align 4, !tbaa !11
  %638 = fpext float %637 to double
  store double %638, ptr %14, align 8
  store i32 1, ptr %48, align 4
  br label %935

639:                                              ; preds = %632
  %640 = load float, ptr %46, align 4, !tbaa !11
  %641 = fcmp oeq float %640, 0.000000e+00
  br i1 %641, label %642, label %645

642:                                              ; preds = %639
  %643 = load float, ptr %36, align 4, !tbaa !11
  %644 = fpext float %643 to double
  store double %644, ptr %14, align 8
  store i32 1, ptr %48, align 4
  br label %935

645:                                              ; preds = %639
  br label %646

646:                                              ; preds = %645
  store float 0.000000e+00, ptr %47, align 4, !tbaa !11
  store i64 0, ptr %44, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %925, %646
  %648 = load ptr, ptr %16, align 8, !tbaa !5
  %649 = load ptr, ptr %25, align 8, !tbaa !5
  %650 = load ptr, ptr %16, align 8, !tbaa !5
  %651 = load i64, ptr %650, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  %653 = getelementptr inbounds %struct.complex, ptr %649, i64 %652
  %654 = load ptr, ptr %25, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.complex, ptr %654, i64 1
  %656 = getelementptr inbounds [3 x i64], ptr %45, i64 0, i64 0
  %657 = call i32 @clacn2_(ptr noundef %648, ptr noundef %653, ptr noundef %655, ptr noundef %47, ptr noundef %44, ptr noundef %656)
  %658 = load i64, ptr %44, align 8, !tbaa !9
  %659 = icmp ne i64 %658, 0
  br i1 %659, label %660, label %926

660:                                              ; preds = %647
  %661 = load i64, ptr %44, align 8, !tbaa !9
  %662 = icmp eq i64 %661, 2
  br i1 %662, label %663, label %794

663:                                              ; preds = %660
  %664 = load ptr, ptr %16, align 8, !tbaa !5
  %665 = load i64, ptr %664, align 8, !tbaa !9
  store i64 %665, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %666

666:                                              ; preds = %708, %663
  %667 = load i64, ptr %40, align 8, !tbaa !9
  %668 = load i64, ptr %32, align 8, !tbaa !9
  %669 = icmp sle i64 %667, %668
  br i1 %669, label %670, label %711

670:                                              ; preds = %666
  %671 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %671, ptr %33, align 8, !tbaa !9
  %672 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %672, ptr %34, align 8, !tbaa !9
  %673 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %673, ptr %35, align 8, !tbaa !9
  %674 = load ptr, ptr %26, align 8, !tbaa !5
  %675 = load i64, ptr %35, align 8, !tbaa !9
  %676 = getelementptr inbounds float, ptr %674, i64 %675
  %677 = load float, ptr %676, align 4, !tbaa !11
  %678 = load ptr, ptr %25, align 8, !tbaa !5
  %679 = load i64, ptr %34, align 8, !tbaa !9
  %680 = getelementptr inbounds %struct.complex, ptr %678, i64 %679
  %681 = getelementptr inbounds %struct.complex, ptr %680, i32 0, i32 0
  %682 = load float, ptr %681, align 4, !tbaa !13
  %683 = fmul float %677, %682
  %684 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %683, ptr %684, align 4, !tbaa !13
  %685 = load ptr, ptr %26, align 8, !tbaa !5
  %686 = load i64, ptr %35, align 8, !tbaa !9
  %687 = getelementptr inbounds float, ptr %685, i64 %686
  %688 = load float, ptr %687, align 4, !tbaa !11
  %689 = load ptr, ptr %25, align 8, !tbaa !5
  %690 = load i64, ptr %34, align 8, !tbaa !9
  %691 = getelementptr inbounds %struct.complex, ptr %689, i64 %690
  %692 = getelementptr inbounds %struct.complex, ptr %691, i32 0, i32 1
  %693 = load float, ptr %692, align 4, !tbaa !26
  %694 = fmul float %688, %693
  %695 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %694, ptr %695, align 4, !tbaa !26
  %696 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %697 = load float, ptr %696, align 4, !tbaa !13
  %698 = load ptr, ptr %25, align 8, !tbaa !5
  %699 = load i64, ptr %33, align 8, !tbaa !9
  %700 = getelementptr inbounds %struct.complex, ptr %698, i64 %699
  %701 = getelementptr inbounds %struct.complex, ptr %700, i32 0, i32 0
  store float %697, ptr %701, align 4, !tbaa !13
  %702 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %703 = load float, ptr %702, align 4, !tbaa !26
  %704 = load ptr, ptr %25, align 8, !tbaa !5
  %705 = load i64, ptr %33, align 8, !tbaa !9
  %706 = getelementptr inbounds %struct.complex, ptr %704, i64 %705
  %707 = getelementptr inbounds %struct.complex, ptr %706, i32 0, i32 1
  store float %703, ptr %707, align 4, !tbaa !26
  br label %708

708:                                              ; preds = %670
  %709 = load i64, ptr %40, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %40, align 8, !tbaa !9
  br label %666, !llvm.loop !27

711:                                              ; preds = %666
  %712 = load i64, ptr %42, align 8, !tbaa !9
  %713 = icmp ne i64 %712, 0
  br i1 %713, label %714, label %727

714:                                              ; preds = %711
  %715 = load ptr, ptr %16, align 8, !tbaa !5
  %716 = load ptr, ptr %19, align 8, !tbaa !5
  %717 = load i64, ptr %31, align 8, !tbaa !9
  %718 = getelementptr inbounds %struct.complex, ptr %716, i64 %717
  %719 = load ptr, ptr %20, align 8, !tbaa !5
  %720 = load ptr, ptr %21, align 8, !tbaa !5
  %721 = getelementptr inbounds i64, ptr %720, i64 1
  %722 = load ptr, ptr %25, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.complex, ptr %722, i64 1
  %724 = load ptr, ptr %16, align 8, !tbaa !5
  %725 = load ptr, ptr %24, align 8, !tbaa !5
  %726 = call i32 @chetrs_(ptr noundef @.str.1, ptr noundef %715, ptr noundef @c__1, ptr noundef %718, ptr noundef %719, ptr noundef %721, ptr noundef %723, ptr noundef %724, ptr noundef %725)
  br label %740

727:                                              ; preds = %711
  %728 = load ptr, ptr %16, align 8, !tbaa !5
  %729 = load ptr, ptr %19, align 8, !tbaa !5
  %730 = load i64, ptr %31, align 8, !tbaa !9
  %731 = getelementptr inbounds %struct.complex, ptr %729, i64 %730
  %732 = load ptr, ptr %20, align 8, !tbaa !5
  %733 = load ptr, ptr %21, align 8, !tbaa !5
  %734 = getelementptr inbounds i64, ptr %733, i64 1
  %735 = load ptr, ptr %25, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.complex, ptr %735, i64 1
  %737 = load ptr, ptr %16, align 8, !tbaa !5
  %738 = load ptr, ptr %24, align 8, !tbaa !5
  %739 = call i32 @chetrs_(ptr noundef @.str.2, ptr noundef %728, ptr noundef @c__1, ptr noundef %731, ptr noundef %732, ptr noundef %734, ptr noundef %736, ptr noundef %737, ptr noundef %738)
  br label %740

740:                                              ; preds = %727, %714
  %741 = load ptr, ptr %23, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  %743 = icmp ne i64 %742, 0
  br i1 %743, label %744, label %793

744:                                              ; preds = %740
  %745 = load ptr, ptr %16, align 8, !tbaa !5
  %746 = load i64, ptr %745, align 8, !tbaa !9
  store i64 %746, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %747

747:                                              ; preds = %789, %744
  %748 = load i64, ptr %40, align 8, !tbaa !9
  %749 = load i64, ptr %32, align 8, !tbaa !9
  %750 = icmp sle i64 %748, %749
  br i1 %750, label %751, label %792

751:                                              ; preds = %747
  %752 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %752, ptr %33, align 8, !tbaa !9
  %753 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %753, ptr %34, align 8, !tbaa !9
  %754 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %754, ptr %35, align 8, !tbaa !9
  %755 = load ptr, ptr %22, align 8, !tbaa !5
  %756 = load i64, ptr %35, align 8, !tbaa !9
  %757 = getelementptr inbounds float, ptr %755, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !11
  %759 = load ptr, ptr %25, align 8, !tbaa !5
  %760 = load i64, ptr %34, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.complex, ptr %759, i64 %760
  %762 = getelementptr inbounds %struct.complex, ptr %761, i32 0, i32 0
  %763 = load float, ptr %762, align 4, !tbaa !13
  %764 = fmul float %758, %763
  %765 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %764, ptr %765, align 4, !tbaa !13
  %766 = load ptr, ptr %22, align 8, !tbaa !5
  %767 = load i64, ptr %35, align 8, !tbaa !9
  %768 = getelementptr inbounds float, ptr %766, i64 %767
  %769 = load float, ptr %768, align 4, !tbaa !11
  %770 = load ptr, ptr %25, align 8, !tbaa !5
  %771 = load i64, ptr %34, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.complex, ptr %770, i64 %771
  %773 = getelementptr inbounds %struct.complex, ptr %772, i32 0, i32 1
  %774 = load float, ptr %773, align 4, !tbaa !26
  %775 = fmul float %769, %774
  %776 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %775, ptr %776, align 4, !tbaa !26
  %777 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %778 = load float, ptr %777, align 4, !tbaa !13
  %779 = load ptr, ptr %25, align 8, !tbaa !5
  %780 = load i64, ptr %33, align 8, !tbaa !9
  %781 = getelementptr inbounds %struct.complex, ptr %779, i64 %780
  %782 = getelementptr inbounds %struct.complex, ptr %781, i32 0, i32 0
  store float %778, ptr %782, align 4, !tbaa !13
  %783 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %784 = load float, ptr %783, align 4, !tbaa !26
  %785 = load ptr, ptr %25, align 8, !tbaa !5
  %786 = load i64, ptr %33, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.complex, ptr %785, i64 %786
  %788 = getelementptr inbounds %struct.complex, ptr %787, i32 0, i32 1
  store float %784, ptr %788, align 4, !tbaa !26
  br label %789

789:                                              ; preds = %751
  %790 = load i64, ptr %40, align 8, !tbaa !9
  %791 = add nsw i64 %790, 1
  store i64 %791, ptr %40, align 8, !tbaa !9
  br label %747, !llvm.loop !28

792:                                              ; preds = %747
  br label %793

793:                                              ; preds = %792, %740
  br label %925

794:                                              ; preds = %660
  %795 = load ptr, ptr %23, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %798, label %847

798:                                              ; preds = %794
  %799 = load ptr, ptr %16, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  store i64 %800, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %843, %798
  %802 = load i64, ptr %40, align 8, !tbaa !9
  %803 = load i64, ptr %32, align 8, !tbaa !9
  %804 = icmp sle i64 %802, %803
  br i1 %804, label %805, label %846

805:                                              ; preds = %801
  %806 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %806, ptr %33, align 8, !tbaa !9
  %807 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %807, ptr %34, align 8, !tbaa !9
  %808 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %808, ptr %35, align 8, !tbaa !9
  %809 = load ptr, ptr %22, align 8, !tbaa !5
  %810 = load i64, ptr %35, align 8, !tbaa !9
  %811 = getelementptr inbounds float, ptr %809, i64 %810
  %812 = load float, ptr %811, align 4, !tbaa !11
  %813 = load ptr, ptr %25, align 8, !tbaa !5
  %814 = load i64, ptr %34, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.complex, ptr %813, i64 %814
  %816 = getelementptr inbounds %struct.complex, ptr %815, i32 0, i32 0
  %817 = load float, ptr %816, align 4, !tbaa !13
  %818 = fmul float %812, %817
  %819 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %818, ptr %819, align 4, !tbaa !13
  %820 = load ptr, ptr %22, align 8, !tbaa !5
  %821 = load i64, ptr %35, align 8, !tbaa !9
  %822 = getelementptr inbounds float, ptr %820, i64 %821
  %823 = load float, ptr %822, align 4, !tbaa !11
  %824 = load ptr, ptr %25, align 8, !tbaa !5
  %825 = load i64, ptr %34, align 8, !tbaa !9
  %826 = getelementptr inbounds %struct.complex, ptr %824, i64 %825
  %827 = getelementptr inbounds %struct.complex, ptr %826, i32 0, i32 1
  %828 = load float, ptr %827, align 4, !tbaa !26
  %829 = fmul float %823, %828
  %830 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %829, ptr %830, align 4, !tbaa !26
  %831 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %832 = load float, ptr %831, align 4, !tbaa !13
  %833 = load ptr, ptr %25, align 8, !tbaa !5
  %834 = load i64, ptr %33, align 8, !tbaa !9
  %835 = getelementptr inbounds %struct.complex, ptr %833, i64 %834
  %836 = getelementptr inbounds %struct.complex, ptr %835, i32 0, i32 0
  store float %832, ptr %836, align 4, !tbaa !13
  %837 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %838 = load float, ptr %837, align 4, !tbaa !26
  %839 = load ptr, ptr %25, align 8, !tbaa !5
  %840 = load i64, ptr %33, align 8, !tbaa !9
  %841 = getelementptr inbounds %struct.complex, ptr %839, i64 %840
  %842 = getelementptr inbounds %struct.complex, ptr %841, i32 0, i32 1
  store float %838, ptr %842, align 4, !tbaa !26
  br label %843

843:                                              ; preds = %805
  %844 = load i64, ptr %40, align 8, !tbaa !9
  %845 = add nsw i64 %844, 1
  store i64 %845, ptr %40, align 8, !tbaa !9
  br label %801, !llvm.loop !29

846:                                              ; preds = %801
  br label %847

847:                                              ; preds = %846, %794
  %848 = load i64, ptr %42, align 8, !tbaa !9
  %849 = icmp ne i64 %848, 0
  br i1 %849, label %850, label %863

850:                                              ; preds = %847
  %851 = load ptr, ptr %16, align 8, !tbaa !5
  %852 = load ptr, ptr %19, align 8, !tbaa !5
  %853 = load i64, ptr %31, align 8, !tbaa !9
  %854 = getelementptr inbounds %struct.complex, ptr %852, i64 %853
  %855 = load ptr, ptr %20, align 8, !tbaa !5
  %856 = load ptr, ptr %21, align 8, !tbaa !5
  %857 = getelementptr inbounds i64, ptr %856, i64 1
  %858 = load ptr, ptr %25, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.complex, ptr %858, i64 1
  %860 = load ptr, ptr %16, align 8, !tbaa !5
  %861 = load ptr, ptr %24, align 8, !tbaa !5
  %862 = call i32 @chetrs_(ptr noundef @.str.1, ptr noundef %851, ptr noundef @c__1, ptr noundef %854, ptr noundef %855, ptr noundef %857, ptr noundef %859, ptr noundef %860, ptr noundef %861)
  br label %876

863:                                              ; preds = %847
  %864 = load ptr, ptr %16, align 8, !tbaa !5
  %865 = load ptr, ptr %19, align 8, !tbaa !5
  %866 = load i64, ptr %31, align 8, !tbaa !9
  %867 = getelementptr inbounds %struct.complex, ptr %865, i64 %866
  %868 = load ptr, ptr %20, align 8, !tbaa !5
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = getelementptr inbounds i64, ptr %869, i64 1
  %871 = load ptr, ptr %25, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.complex, ptr %871, i64 1
  %873 = load ptr, ptr %16, align 8, !tbaa !5
  %874 = load ptr, ptr %24, align 8, !tbaa !5
  %875 = call i32 @chetrs_(ptr noundef @.str.2, ptr noundef %864, ptr noundef @c__1, ptr noundef %867, ptr noundef %868, ptr noundef %870, ptr noundef %872, ptr noundef %873, ptr noundef %874)
  br label %876

876:                                              ; preds = %863, %850
  %877 = load ptr, ptr %16, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  store i64 %878, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %879

879:                                              ; preds = %921, %876
  %880 = load i64, ptr %40, align 8, !tbaa !9
  %881 = load i64, ptr %32, align 8, !tbaa !9
  %882 = icmp sle i64 %880, %881
  br i1 %882, label %883, label %924

883:                                              ; preds = %879
  %884 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %884, ptr %33, align 8, !tbaa !9
  %885 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %885, ptr %34, align 8, !tbaa !9
  %886 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %886, ptr %35, align 8, !tbaa !9
  %887 = load ptr, ptr %26, align 8, !tbaa !5
  %888 = load i64, ptr %35, align 8, !tbaa !9
  %889 = getelementptr inbounds float, ptr %887, i64 %888
  %890 = load float, ptr %889, align 4, !tbaa !11
  %891 = load ptr, ptr %25, align 8, !tbaa !5
  %892 = load i64, ptr %34, align 8, !tbaa !9
  %893 = getelementptr inbounds %struct.complex, ptr %891, i64 %892
  %894 = getelementptr inbounds %struct.complex, ptr %893, i32 0, i32 0
  %895 = load float, ptr %894, align 4, !tbaa !13
  %896 = fmul float %890, %895
  %897 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  store float %896, ptr %897, align 4, !tbaa !13
  %898 = load ptr, ptr %26, align 8, !tbaa !5
  %899 = load i64, ptr %35, align 8, !tbaa !9
  %900 = getelementptr inbounds float, ptr %898, i64 %899
  %901 = load float, ptr %900, align 4, !tbaa !11
  %902 = load ptr, ptr %25, align 8, !tbaa !5
  %903 = load i64, ptr %34, align 8, !tbaa !9
  %904 = getelementptr inbounds %struct.complex, ptr %902, i64 %903
  %905 = getelementptr inbounds %struct.complex, ptr %904, i32 0, i32 1
  %906 = load float, ptr %905, align 4, !tbaa !26
  %907 = fmul float %901, %906
  %908 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  store float %907, ptr %908, align 4, !tbaa !26
  %909 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 0
  %910 = load float, ptr %909, align 4, !tbaa !13
  %911 = load ptr, ptr %25, align 8, !tbaa !5
  %912 = load i64, ptr %33, align 8, !tbaa !9
  %913 = getelementptr inbounds %struct.complex, ptr %911, i64 %912
  %914 = getelementptr inbounds %struct.complex, ptr %913, i32 0, i32 0
  store float %910, ptr %914, align 4, !tbaa !13
  %915 = getelementptr inbounds %struct.complex, ptr %39, i32 0, i32 1
  %916 = load float, ptr %915, align 4, !tbaa !26
  %917 = load ptr, ptr %25, align 8, !tbaa !5
  %918 = load i64, ptr %33, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.complex, ptr %917, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 1
  store float %916, ptr %920, align 4, !tbaa !26
  br label %921

921:                                              ; preds = %883
  %922 = load i64, ptr %40, align 8, !tbaa !9
  %923 = add nsw i64 %922, 1
  store i64 %923, ptr %40, align 8, !tbaa !9
  br label %879, !llvm.loop !30

924:                                              ; preds = %879
  br label %925

925:                                              ; preds = %924, %793
  br label %647

926:                                              ; preds = %647
  %927 = load float, ptr %47, align 4, !tbaa !11
  %928 = fcmp une float %927, 0.000000e+00
  br i1 %928, label %929, label %932

929:                                              ; preds = %926
  %930 = load float, ptr %47, align 4, !tbaa !11
  %931 = fdiv float 1.000000e+00, %930
  store float %931, ptr %36, align 4, !tbaa !11
  br label %932

932:                                              ; preds = %929, %926
  %933 = load float, ptr %36, align 4, !tbaa !11
  %934 = fpext float %933 to double
  store double %934, ptr %14, align 8
  store i32 1, ptr %48, align 4
  br label %935

935:                                              ; preds = %932, %642, %636, %83
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  %936 = load double, ptr %14, align 8
  ret double %936
}

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

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

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

declare double @r_imag(ptr noundef) #2

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

declare i32 @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"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !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 [14 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @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, i64 noundef %12) local_unnamed_addr #0 {
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca [3 x i64], align 16
  %17 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #3
  %18 = load i64, ptr %3, align 8, !tbaa !5
  %19 = xor i64 %18, -1
  %20 = getelementptr inbounds %struct.complex, ptr %2, i64 %19
  %21 = getelementptr inbounds i8, ptr %7, i64 -4
  %22 = getelementptr inbounds i8, ptr %10, i64 -8
  %23 = getelementptr inbounds i8, ptr %11, i64 -4
  store i64 0, ptr %9, align 8, !tbaa !5
  %24 = load i64, ptr %1, align 8, !tbaa !5
  %25 = icmp sgt i64 %24, -1
  %spec.store.select = select i1 %25, i64 0, i64 -2
  store i64 %spec.store.select, ptr %9, align 8
  br i1 %25, label %28, label %26

26:                                               ; preds = %13
  store i64 2, ptr %14, align 8, !tbaa !5
  %27 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %14) #3
  br label %358

28:                                               ; preds = %13
  %29 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #3
  %.not360 = icmp eq i64 %29, 0
  %30 = load i64, ptr %1, align 8, !tbaa !5
  %.not362430 = icmp slt i64 %30, 1
  br i1 %.not360, label %117, label %31

31:                                               ; preds = %28
  br i1 %.not362430, label %.loopexit386, label %.lr.ph410.preheader

.lr.ph410.preheader:                              ; preds = %31
  %32 = add nuw i64 %30, 1
  br label %.lr.ph410

.lr.ph410:                                        ; preds = %.lr.ph410.preheader, %.loopexit387
  %indvars.iv = phi i64 [ 2, %.lr.ph410.preheader ], [ %indvars.iv.next, %.loopexit387 ]
  %.0409 = phi float [ 0.000000e+00, %.lr.ph410.preheader ], [ %115, %.loopexit387 ]
  %.0349407 = phi i64 [ 1, %.lr.ph410.preheader ], [ %116, %.loopexit387 ]
  %33 = load i64, ptr %8, align 8, !tbaa !5
  %.not376 = icmp eq i64 %33, 0
  %34 = mul nsw i64 %.0349407, %18
  %invariant.gep397 = getelementptr %struct.complex, ptr %20, i64 %34
  br i1 %.not376, label %.preheader388, label %.preheader390

.preheader390:                                    ; preds = %.lr.ph410, %.preheader390
  %.0337393 = phi float [ %52, %.preheader390 ], [ 0.000000e+00, %.lr.ph410 ]
  %.0341392 = phi i64 [ %53, %.preheader390 ], [ 1, %.lr.ph410 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep397, i64 %.0341392
  %35 = load float, ptr %gep, align 4, !tbaa !9
  %36 = tail call double @r_imag(ptr noundef nonnull %gep) #3
  %37 = fptrunc double %36 to float
  %38 = insertelement <2 x float> poison, float %35, i64 0
  %39 = insertelement <2 x float> %38, float %37, i64 1
  %40 = fcmp oge <2 x float> %39, zeroinitializer
  %41 = fneg <2 x float> %39
  %42 = select <2 x i1> %40, <2 x float> %39, <2 x float> %41
  %43 = fpext <2 x float> %42 to <2 x double>
  %shift = shufflevector <2 x double> %43, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %44 = fadd <2 x double> %shift, %43
  %45 = extractelement <2 x double> %44, i64 0
  %46 = getelementptr inbounds float, ptr %21, i64 %.0341392
  %47 = load float, ptr %46, align 4, !tbaa !12
  %48 = fpext float %47 to double
  %49 = fdiv double %45, %48
  %50 = fpext float %.0337393 to double
  %51 = fadd double %49, %50
  %52 = fptrunc double %51 to float
  %53 = add nuw i64 %.0341392, 1
  %exitcond.not = icmp eq i64 %53, %indvars.iv
  br i1 %exitcond.not, label %54, label %.preheader390, !llvm.loop !13

54:                                               ; preds = %.preheader390
  %55 = load i64, ptr %1, align 8, !tbaa !5
  %.not380.not394 = icmp slt i64 %.0349407, %55
  br i1 %.not380.not394, label %.lr.ph, label %.loopexit387

.lr.ph:                                           ; preds = %54
  %56 = getelementptr %struct.complex, ptr %20, i64 %.0349407
  br label %57

57:                                               ; preds = %.lr.ph, %57
  %.1338396 = phi float [ %52, %.lr.ph ], [ %77, %57 ]
  %.1342.in395 = phi i64 [ %.0349407, %.lr.ph ], [ %.1342, %57 ]
  %.1342 = add nuw nsw i64 %.1342.in395, 1
  %58 = mul nsw i64 %.1342, %18
  %59 = getelementptr %struct.complex, ptr %56, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !9
  %61 = tail call double @r_imag(ptr noundef nonnull %59) #3
  %62 = fptrunc double %61 to float
  %63 = insertelement <2 x float> poison, float %60, i64 0
  %64 = insertelement <2 x float> %63, float %62, i64 1
  %65 = fcmp oge <2 x float> %64, zeroinitializer
  %66 = fneg <2 x float> %64
  %67 = select <2 x i1> %65, <2 x float> %64, <2 x float> %66
  %68 = fpext <2 x float> %67 to <2 x double>
  %shift576 = shufflevector <2 x double> %68, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %69 = fadd <2 x double> %shift576, %68
  %70 = extractelement <2 x double> %69, i64 0
  %71 = getelementptr float, ptr %7, i64 %.1342.in395
  %72 = load float, ptr %71, align 4, !tbaa !12
  %73 = fpext float %72 to double
  %74 = fdiv double %70, %73
  %75 = fpext float %.1338396 to double
  %76 = fadd double %74, %75
  %77 = fptrunc double %76 to float
  %.not380.not = icmp slt i64 %.1342, %55
  br i1 %.not380.not, label %57, label %.loopexit387, !llvm.loop !15

.preheader388:                                    ; preds = %.lr.ph410, %.preheader388
  %.2339400 = phi float [ %91, %.preheader388 ], [ 0.000000e+00, %.lr.ph410 ]
  %.2343399 = phi i64 [ %92, %.preheader388 ], [ 1, %.lr.ph410 ]
  %gep398 = getelementptr %struct.complex, ptr %invariant.gep397, i64 %.2343399
  %78 = load float, ptr %gep398, align 4, !tbaa !9
  %79 = tail call double @r_imag(ptr noundef nonnull %gep398) #3
  %80 = fptrunc double %79 to float
  %81 = insertelement <2 x float> poison, float %78, i64 0
  %82 = insertelement <2 x float> %81, float %80, i64 1
  %83 = fcmp oge <2 x float> %82, zeroinitializer
  %84 = fneg <2 x float> %82
  %85 = select <2 x i1> %83, <2 x float> %82, <2 x float> %84
  %86 = fpext <2 x float> %85 to <2 x double>
  %shift577 = shufflevector <2 x double> %86, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %87 = fadd <2 x double> %shift577, %86
  %88 = extractelement <2 x double> %87, i64 0
  %89 = fpext float %.2339400 to double
  %90 = fadd double %88, %89
  %91 = fptrunc double %90 to float
  %92 = add nuw i64 %.2343399, 1
  %exitcond464.not = icmp eq i64 %92, %indvars.iv
  br i1 %exitcond464.not, label %93, label %.preheader388, !llvm.loop !16

93:                                               ; preds = %.preheader388
  %94 = load i64, ptr %1, align 8, !tbaa !5
  %.not378.not401 = icmp slt i64 %.0349407, %94
  br i1 %.not378.not401, label %.lr.ph404, label %.loopexit387

.lr.ph404:                                        ; preds = %93
  %95 = getelementptr %struct.complex, ptr %20, i64 %.0349407
  br label %96

96:                                               ; preds = %.lr.ph404, %96
  %.3403 = phi float [ %91, %.lr.ph404 ], [ %112, %96 ]
  %.3344.in402 = phi i64 [ %.0349407, %.lr.ph404 ], [ %.3344, %96 ]
  %.3344 = add nuw nsw i64 %.3344.in402, 1
  %97 = mul nsw i64 %.3344, %18
  %98 = getelementptr %struct.complex, ptr %95, i64 %97
  %99 = load float, ptr %98, align 4, !tbaa !9
  %100 = tail call double @r_imag(ptr noundef nonnull %98) #3
  %101 = fptrunc double %100 to float
  %102 = insertelement <2 x float> poison, float %99, i64 0
  %103 = insertelement <2 x float> %102, float %101, i64 1
  %104 = fcmp oge <2 x float> %103, zeroinitializer
  %105 = fneg <2 x float> %103
  %106 = select <2 x i1> %104, <2 x float> %103, <2 x float> %105
  %107 = fpext <2 x float> %106 to <2 x double>
  %shift578 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %108 = fadd <2 x double> %shift578, %107
  %109 = extractelement <2 x double> %108, i64 0
  %110 = fpext float %.3403 to double
  %111 = fadd double %109, %110
  %112 = fptrunc double %111 to float
  %.not378.not = icmp slt i64 %.3344, %94
  br i1 %.not378.not, label %96, label %.loopexit387, !llvm.loop !17

.loopexit387:                                     ; preds = %57, %96, %54, %93
  %.4 = phi float [ %91, %93 ], [ %52, %54 ], [ %112, %96 ], [ %77, %57 ]
  %113 = getelementptr inbounds float, ptr %23, i64 %.0349407
  store float %.4, ptr %113, align 4, !tbaa !12
  %114 = fcmp oge float %.0409, %.4
  %115 = select i1 %114, float %.0409, float %.4
  %116 = add nuw nsw i64 %.0349407, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond465.not = icmp eq i64 %indvars.iv, %32
  br i1 %exitcond465.not, label %.loopexit386thread-pre-split, label %.lr.ph410, !llvm.loop !18

117:                                              ; preds = %28
  br i1 %.not362430, label %.loopexit386, label %.lr.ph434.preheader

.lr.ph434.preheader:                              ; preds = %117
  %118 = add nuw i64 %30, 1
  br label %.lr.ph434

.lr.ph434:                                        ; preds = %.lr.ph434.preheader, %.loopexit383
  %indvars.iv466 = phi i64 [ 2, %.lr.ph434.preheader ], [ %indvars.iv.next467, %.loopexit383 ]
  %.1433 = phi float [ 0.000000e+00, %.lr.ph434.preheader ], [ %201, %.loopexit383 ]
  %.1350431 = phi i64 [ 1, %.lr.ph434.preheader ], [ %202, %.loopexit383 ]
  %119 = load i64, ptr %8, align 8, !tbaa !5
  %.not363 = icmp eq i64 %119, 0
  %120 = getelementptr %struct.complex, ptr %20, i64 %.1350431
  br i1 %.not363, label %.preheader, label %.preheader385

.preheader385:                                    ; preds = %.lr.ph434, %.preheader385
  %.5413 = phi float [ %140, %.preheader385 ], [ 0.000000e+00, %.lr.ph434 ]
  %.4345412 = phi i64 [ %141, %.preheader385 ], [ 1, %.lr.ph434 ]
  %121 = mul nsw i64 %.4345412, %18
  %122 = getelementptr %struct.complex, ptr %120, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !9
  %124 = tail call double @r_imag(ptr noundef nonnull %122) #3
  %125 = fptrunc double %124 to float
  %126 = insertelement <2 x float> poison, float %123, i64 0
  %127 = insertelement <2 x float> %126, float %125, i64 1
  %128 = fcmp oge <2 x float> %127, zeroinitializer
  %129 = fneg <2 x float> %127
  %130 = select <2 x i1> %128, <2 x float> %127, <2 x float> %129
  %131 = fpext <2 x float> %130 to <2 x double>
  %shift579 = shufflevector <2 x double> %131, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %132 = fadd <2 x double> %shift579, %131
  %133 = extractelement <2 x double> %132, i64 0
  %134 = getelementptr inbounds float, ptr %21, i64 %.4345412
  %135 = load float, ptr %134, align 4, !tbaa !12
  %136 = fpext float %135 to double
  %137 = fdiv double %133, %136
  %138 = fpext float %.5413 to double
  %139 = fadd double %137, %138
  %140 = fptrunc double %139 to float
  %141 = add nuw i64 %.4345412, 1
  %exitcond468.not = icmp eq i64 %141, %indvars.iv466
  br i1 %exitcond468.not, label %142, label %.preheader385, !llvm.loop !19

142:                                              ; preds = %.preheader385
  %143 = load i64, ptr %1, align 8, !tbaa !5
  %.not367.not414 = icmp slt i64 %.1350431, %143
  br i1 %.not367.not414, label %.lr.ph417, label %.loopexit383

.lr.ph417:                                        ; preds = %142
  %144 = mul nsw i64 %.1350431, %18
  %invariant.gep419 = getelementptr %struct.complex, ptr %20, i64 %144
  br label %145

145:                                              ; preds = %.lr.ph417, %145
  %.6416 = phi float [ %140, %.lr.ph417 ], [ %163, %145 ]
  %.5346.in415 = phi i64 [ %.1350431, %.lr.ph417 ], [ %.5346, %145 ]
  %.5346 = add nuw nsw i64 %.5346.in415, 1
  %gep420 = getelementptr %struct.complex, ptr %invariant.gep419, i64 %.5346
  %146 = load float, ptr %gep420, align 4, !tbaa !9
  %147 = tail call double @r_imag(ptr noundef nonnull %gep420) #3
  %148 = fptrunc double %147 to float
  %149 = insertelement <2 x float> poison, float %146, i64 0
  %150 = insertelement <2 x float> %149, float %148, i64 1
  %151 = fcmp oge <2 x float> %150, zeroinitializer
  %152 = fneg <2 x float> %150
  %153 = select <2 x i1> %151, <2 x float> %150, <2 x float> %152
  %154 = fpext <2 x float> %153 to <2 x double>
  %shift580 = shufflevector <2 x double> %154, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %155 = fadd <2 x double> %shift580, %154
  %156 = extractelement <2 x double> %155, i64 0
  %157 = getelementptr float, ptr %7, i64 %.5346.in415
  %158 = load float, ptr %157, align 4, !tbaa !12
  %159 = fpext float %158 to double
  %160 = fdiv double %156, %159
  %161 = fpext float %.6416 to double
  %162 = fadd double %160, %161
  %163 = fptrunc double %162 to float
  %.not367.not = icmp slt i64 %.5346, %143
  br i1 %.not367.not, label %145, label %.loopexit383, !llvm.loop !20

.preheader:                                       ; preds = %.lr.ph434, %.preheader
  %.7422 = phi float [ %179, %.preheader ], [ 0.000000e+00, %.lr.ph434 ]
  %.6347421 = phi i64 [ %180, %.preheader ], [ 1, %.lr.ph434 ]
  %164 = mul nsw i64 %.6347421, %18
  %165 = getelementptr %struct.complex, ptr %120, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !9
  %167 = tail call double @r_imag(ptr noundef nonnull %165) #3
  %168 = fptrunc double %167 to float
  %169 = insertelement <2 x float> poison, float %166, i64 0
  %170 = insertelement <2 x float> %169, float %168, i64 1
  %171 = fcmp oge <2 x float> %170, zeroinitializer
  %172 = fneg <2 x float> %170
  %173 = select <2 x i1> %171, <2 x float> %170, <2 x float> %172
  %174 = fpext <2 x float> %173 to <2 x double>
  %shift581 = shufflevector <2 x double> %174, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %175 = fadd <2 x double> %shift581, %174
  %176 = extractelement <2 x double> %175, i64 0
  %177 = fpext float %.7422 to double
  %178 = fadd double %176, %177
  %179 = fptrunc double %178 to float
  %180 = add nuw i64 %.6347421, 1
  %exitcond469.not = icmp eq i64 %180, %indvars.iv466
  br i1 %exitcond469.not, label %181, label %.preheader, !llvm.loop !21

181:                                              ; preds = %.preheader
  %182 = load i64, ptr %1, align 8, !tbaa !5
  %.not365.not423 = icmp slt i64 %.1350431, %182
  br i1 %.not365.not423, label %.lr.ph426, label %.loopexit383

.lr.ph426:                                        ; preds = %181
  %183 = mul nsw i64 %.1350431, %18
  %invariant.gep428 = getelementptr %struct.complex, ptr %20, i64 %183
  br label %184

184:                                              ; preds = %.lr.ph426, %184
  %.8425 = phi float [ %179, %.lr.ph426 ], [ %198, %184 ]
  %.7348.in424 = phi i64 [ %.1350431, %.lr.ph426 ], [ %.7348, %184 ]
  %.7348 = add nuw nsw i64 %.7348.in424, 1
  %gep429 = getelementptr %struct.complex, ptr %invariant.gep428, i64 %.7348
  %185 = load float, ptr %gep429, align 4, !tbaa !9
  %186 = tail call double @r_imag(ptr noundef nonnull %gep429) #3
  %187 = fptrunc double %186 to float
  %188 = insertelement <2 x float> poison, float %185, i64 0
  %189 = insertelement <2 x float> %188, float %187, i64 1
  %190 = fcmp oge <2 x float> %189, zeroinitializer
  %191 = fneg <2 x float> %189
  %192 = select <2 x i1> %190, <2 x float> %189, <2 x float> %191
  %193 = fpext <2 x float> %192 to <2 x double>
  %shift582 = shufflevector <2 x double> %193, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %194 = fadd <2 x double> %shift582, %193
  %195 = extractelement <2 x double> %194, i64 0
  %196 = fpext float %.8425 to double
  %197 = fadd double %195, %196
  %198 = fptrunc double %197 to float
  %.not365.not = icmp slt i64 %.7348, %182
  br i1 %.not365.not, label %184, label %.loopexit383, !llvm.loop !22

.loopexit383:                                     ; preds = %145, %184, %142, %181
  %.9 = phi float [ %179, %181 ], [ %140, %142 ], [ %198, %184 ], [ %163, %145 ]
  %199 = getelementptr inbounds float, ptr %23, i64 %.1350431
  store float %.9, ptr %199, align 4, !tbaa !12
  %200 = fcmp oge float %.1433, %.9
  %201 = select i1 %200, float %.1433, float %.9
  %202 = add nuw nsw i64 %.1350431, 1
  %indvars.iv.next467 = add nuw i64 %indvars.iv466, 1
  %exitcond470.not = icmp eq i64 %indvars.iv466, %118
  br i1 %exitcond470.not, label %.loopexit386thread-pre-split, label %.lr.ph434, !llvm.loop !23

.loopexit386thread-pre-split:                     ; preds = %.loopexit387, %.loopexit383
  %.2.ph = phi float [ %201, %.loopexit383 ], [ %115, %.loopexit387 ]
  %.pr = load i64, ptr %1, align 8, !tbaa !5
  %203 = fcmp oeq float %.2.ph, 0.000000e+00
  br label %.loopexit386

.loopexit386:                                     ; preds = %.loopexit386thread-pre-split, %31, %117
  %204 = phi i64 [ %.pr, %.loopexit386thread-pre-split ], [ %30, %31 ], [ %30, %117 ]
  %.2 = phi i1 [ %203, %.loopexit386thread-pre-split ], [ true, %31 ], [ true, %117 ]
  %205 = icmp eq i64 %204, 0
  %brmerge = select i1 %205, i1 true, i1 %.2
  %.mux = select i1 %205, double 1.000000e+00, double 0.000000e+00
  br i1 %brmerge, label %358, label %206

206:                                              ; preds = %.loopexit386
  store float 0.000000e+00, ptr %17, align 4, !tbaa !12
  store i64 0, ptr %15, align 8, !tbaa !5
  %.str.2..str.1 = select i1 %.not360, ptr @.str.2, ptr @.str.1
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %206
  %207 = phi i64 [ %204, %206 ], [ %.be, %.loopexit.backedge ]
  %208 = getelementptr %struct.complex, ptr %10, i64 %207
  %209 = call i32 @clacn2_(ptr noundef nonnull %1, ptr noundef %208, ptr noundef %10, ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef nonnull %16) #3
  %210 = load i64, ptr %15, align 8, !tbaa !5
  switch i64 %210, label %283 [
    i64 0, label %353
    i64 2, label %211
  ]

211:                                              ; preds = %.loopexit
  %212 = load i64, ptr %1, align 8, !tbaa !5
  %.not373436 = icmp slt i64 %212, 1
  br i1 %.not373436, label %._crit_edge, label %.lr.ph438.preheader

.lr.ph438.preheader:                              ; preds = %211
  %min.iters.check560 = icmp eq i64 %212, 1
  br i1 %min.iters.check560, label %.lr.ph438.preheader587, label %vector.memcheck552

vector.memcheck552:                               ; preds = %.lr.ph438.preheader
  %213 = shl i64 %212, 3
  %scevgep553 = getelementptr i8, ptr %10, i64 %213
  %214 = shl i64 %212, 2
  %scevgep554 = getelementptr i8, ptr %11, i64 %214
  %bound0555 = icmp ugt ptr %scevgep554, %10
  %bound1556 = icmp ugt ptr %scevgep553, %11
  %found.conflict557 = and i1 %bound0555, %bound1556
  br i1 %found.conflict557, label %.lr.ph438.preheader587, label %vector.ph561

vector.ph561:                                     ; preds = %vector.memcheck552
  %n.vec563 = and i64 %212, 9223372036854775806
  %ind.end564 = or i64 %212, 1
  br label %vector.body566

vector.body566:                                   ; preds = %vector.body566, %vector.ph561
  %index567 = phi i64 [ 0, %vector.ph561 ], [ %index.next574, %vector.body566 ]
  %215 = getelementptr float, ptr %11, i64 %index567
  %wide.load569 = load <2 x float>, ptr %215, align 4, !tbaa !12, !alias.scope !24
  %216 = getelementptr %struct.complex, ptr %10, i64 %index567
  %217 = load <4 x float>, ptr %216, align 4, !tbaa !12
  %218 = shufflevector <2 x float> %wide.load569, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec573 = fmul <4 x float> %218, %217
  store <4 x float> %interleaved.vec573, ptr %216, align 4, !tbaa !12
  %index.next574 = add nuw i64 %index567, 2
  %219 = icmp eq i64 %index.next574, %n.vec563
  br i1 %219, label %middle.block558, label %vector.body566, !llvm.loop !27

middle.block558:                                  ; preds = %vector.body566
  %cmp.n575 = icmp eq i64 %212, %n.vec563
  br i1 %cmp.n575, label %._crit_edge, label %.lr.ph438.preheader587

.lr.ph438.preheader587:                           ; preds = %middle.block558, %vector.memcheck552, %.lr.ph438.preheader
  %.2351437.ph = phi i64 [ 1, %vector.memcheck552 ], [ 1, %.lr.ph438.preheader ], [ %ind.end564, %middle.block558 ]
  %xtraiter = and i64 %212, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph438.prol.loopexit, label %.lr.ph438.prol

.lr.ph438.prol:                                   ; preds = %.lr.ph438.preheader587
  %220 = getelementptr inbounds float, ptr %23, i64 %.2351437.ph
  %221 = load float, ptr %220, align 4, !tbaa !12
  %222 = getelementptr inbounds %struct.complex, ptr %22, i64 %.2351437.ph
  %223 = load <2 x float>, ptr %222, align 4, !tbaa !12
  %224 = insertelement <2 x float> poison, float %221, i64 0
  %225 = shufflevector <2 x float> %224, <2 x float> poison, <2 x i32> zeroinitializer
  %226 = fmul <2 x float> %225, %223
  store <2 x float> %226, ptr %222, align 4, !tbaa !12
  %227 = add nuw i64 %.2351437.ph, 1
  br label %.lr.ph438.prol.loopexit

.lr.ph438.prol.loopexit:                          ; preds = %.lr.ph438.prol, %.lr.ph438.preheader587
  %.2351437.unr = phi i64 [ %.2351437.ph, %.lr.ph438.preheader587 ], [ %227, %.lr.ph438.prol ]
  %228 = icmp eq i64 %212, %.2351437.ph
  br i1 %228, label %._crit_edge, label %.lr.ph438

.lr.ph438:                                        ; preds = %.lr.ph438.prol.loopexit, %.lr.ph438
  %.2351437 = phi i64 [ %244, %.lr.ph438 ], [ %.2351437.unr, %.lr.ph438.prol.loopexit ]
  %229 = getelementptr inbounds float, ptr %23, i64 %.2351437
  %230 = load float, ptr %229, align 4, !tbaa !12
  %231 = getelementptr inbounds %struct.complex, ptr %22, i64 %.2351437
  %232 = load <2 x float>, ptr %231, align 4, !tbaa !12
  %233 = insertelement <2 x float> poison, float %230, i64 0
  %234 = shufflevector <2 x float> %233, <2 x float> poison, <2 x i32> zeroinitializer
  %235 = fmul <2 x float> %234, %232
  store <2 x float> %235, ptr %231, align 4, !tbaa !12
  %236 = add nuw i64 %.2351437, 1
  %237 = getelementptr float, ptr %11, i64 %.2351437
  %238 = load float, ptr %237, align 4, !tbaa !12
  %239 = getelementptr %struct.complex, ptr %10, i64 %.2351437
  %240 = load <2 x float>, ptr %239, align 4, !tbaa !12
  %241 = insertelement <2 x float> poison, float %238, i64 0
  %242 = shufflevector <2 x float> %241, <2 x float> poison, <2 x i32> zeroinitializer
  %243 = fmul <2 x float> %242, %240
  store <2 x float> %243, ptr %239, align 4, !tbaa !12
  %244 = add nuw i64 %.2351437, 2
  %exitcond471.not.1 = icmp eq i64 %236, %212
  br i1 %exitcond471.not.1, label %._crit_edge, label %.lr.ph438, !llvm.loop !30

._crit_edge:                                      ; preds = %.lr.ph438.prol.loopexit, %.lr.ph438, %middle.block558, %211
  br i1 %.not360, label %247, label %245

245:                                              ; preds = %._crit_edge
  %246 = call i32 @chetrs_(ptr noundef nonnull @.str.1, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #3
  br label %249

247:                                              ; preds = %._crit_edge
  %248 = call i32 @chetrs_(ptr noundef nonnull @.str.2, 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) #3
  br label %249

249:                                              ; preds = %247, %245
  %250 = load i64, ptr %8, align 8, !tbaa !5
  %.not374 = icmp eq i64 %250, 0
  %.pre.pre = load i64, ptr %1, align 8, !tbaa !5
  %.not375439 = icmp slt i64 %.pre.pre, 1
  %or.cond = select i1 %.not374, i1 true, i1 %.not375439
  br i1 %or.cond, label %.loopexit.backedge, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %249
  %min.iters.check536 = icmp ult i64 %.pre.pre, 2
  br i1 %min.iters.check536, label %.lr.ph442.preheader585, label %vector.memcheck528

vector.memcheck528:                               ; preds = %.lr.ph442.preheader
  %251 = shl i64 %.pre.pre, 3
  %scevgep529 = getelementptr i8, ptr %10, i64 %251
  %252 = shl i64 %.pre.pre, 2
  %scevgep530 = getelementptr i8, ptr %7, i64 %252
  %bound0531 = icmp ugt ptr %scevgep530, %10
  %bound1532 = icmp ugt ptr %scevgep529, %7
  %found.conflict533 = and i1 %bound0531, %bound1532
  br i1 %found.conflict533, label %.lr.ph442.preheader585, label %vector.ph537

vector.ph537:                                     ; preds = %vector.memcheck528
  %n.vec539 = and i64 %.pre.pre, 9223372036854775806
  %ind.end540 = or i64 %.pre.pre, 1
  br label %vector.body542

vector.body542:                                   ; preds = %vector.body542, %vector.ph537
  %index543 = phi i64 [ 0, %vector.ph537 ], [ %index.next550, %vector.body542 ]
  %253 = getelementptr float, ptr %7, i64 %index543
  %wide.load545 = load <2 x float>, ptr %253, align 4, !tbaa !12, !alias.scope !31
  %254 = getelementptr %struct.complex, ptr %10, i64 %index543
  %255 = load <4 x float>, ptr %254, align 4, !tbaa !12
  %256 = shufflevector <2 x float> %wide.load545, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec549 = fmul <4 x float> %256, %255
  store <4 x float> %interleaved.vec549, ptr %254, align 4, !tbaa !12
  %index.next550 = add nuw i64 %index543, 2
  %257 = icmp eq i64 %index.next550, %n.vec539
  br i1 %257, label %middle.block534, label %vector.body542, !llvm.loop !34

middle.block534:                                  ; preds = %vector.body542
  %cmp.n551 = icmp eq i64 %.pre.pre, %n.vec539
  br i1 %cmp.n551, label %.loopexit.backedge, label %.lr.ph442.preheader585

.loopexit.backedge:                               ; preds = %.lr.ph442.prol.loopexit, %.lr.ph442, %.lr.ph450.prol.loopexit, %.lr.ph450, %middle.block534, %middle.block, %.loopexit381, %249
  %.be = phi i64 [ %320, %.loopexit381 ], [ %.pre.pre, %249 ], [ %320, %middle.block ], [ %.pre.pre, %middle.block534 ], [ %320, %.lr.ph450 ], [ %320, %.lr.ph450.prol.loopexit ], [ %.pre.pre, %.lr.ph442 ], [ %.pre.pre, %.lr.ph442.prol.loopexit ]
  br label %.loopexit

.lr.ph442.preheader585:                           ; preds = %middle.block534, %vector.memcheck528, %.lr.ph442.preheader
  %.3352440.ph = phi i64 [ 1, %vector.memcheck528 ], [ 1, %.lr.ph442.preheader ], [ %ind.end540, %middle.block534 ]
  %xtraiter600 = and i64 %.pre.pre, 1
  %lcmp.mod601.not = icmp eq i64 %xtraiter600, 0
  br i1 %lcmp.mod601.not, label %.lr.ph442.prol.loopexit, label %.lr.ph442.prol

.lr.ph442.prol:                                   ; preds = %.lr.ph442.preheader585
  %258 = getelementptr inbounds float, ptr %21, i64 %.3352440.ph
  %259 = load float, ptr %258, align 4, !tbaa !12
  %260 = getelementptr inbounds %struct.complex, ptr %22, i64 %.3352440.ph
  %261 = load <2 x float>, ptr %260, align 4, !tbaa !12
  %262 = insertelement <2 x float> poison, float %259, i64 0
  %263 = shufflevector <2 x float> %262, <2 x float> poison, <2 x i32> zeroinitializer
  %264 = fmul <2 x float> %263, %261
  store <2 x float> %264, ptr %260, align 4, !tbaa !12
  %265 = add nuw i64 %.3352440.ph, 1
  br label %.lr.ph442.prol.loopexit

.lr.ph442.prol.loopexit:                          ; preds = %.lr.ph442.prol, %.lr.ph442.preheader585
  %.3352440.unr = phi i64 [ %.3352440.ph, %.lr.ph442.preheader585 ], [ %265, %.lr.ph442.prol ]
  %266 = icmp eq i64 %.pre.pre, %.3352440.ph
  br i1 %266, label %.loopexit.backedge, label %.lr.ph442

.lr.ph442:                                        ; preds = %.lr.ph442.prol.loopexit, %.lr.ph442
  %.3352440 = phi i64 [ %282, %.lr.ph442 ], [ %.3352440.unr, %.lr.ph442.prol.loopexit ]
  %267 = getelementptr inbounds float, ptr %21, i64 %.3352440
  %268 = load float, ptr %267, align 4, !tbaa !12
  %269 = getelementptr inbounds %struct.complex, ptr %22, i64 %.3352440
  %270 = load <2 x float>, ptr %269, align 4, !tbaa !12
  %271 = insertelement <2 x float> poison, float %268, i64 0
  %272 = shufflevector <2 x float> %271, <2 x float> poison, <2 x i32> zeroinitializer
  %273 = fmul <2 x float> %272, %270
  store <2 x float> %273, ptr %269, align 4, !tbaa !12
  %274 = add nuw i64 %.3352440, 1
  %275 = getelementptr float, ptr %7, i64 %.3352440
  %276 = load float, ptr %275, align 4, !tbaa !12
  %277 = getelementptr %struct.complex, ptr %10, i64 %.3352440
  %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
  %282 = add nuw i64 %.3352440, 2
  %exitcond472.not.1 = icmp eq i64 %274, %.pre.pre
  br i1 %exitcond472.not.1, label %.loopexit.backedge, label %.lr.ph442, !llvm.loop !35

283:                                              ; preds = %.loopexit
  %284 = load i64, ptr %8, align 8, !tbaa !5
  %.not370 = icmp eq i64 %284, 0
  br i1 %.not370, label %.loopexit381, label %285

285:                                              ; preds = %283
  %286 = load i64, ptr %1, align 8, !tbaa !5
  %.not371443 = icmp slt i64 %286, 1
  br i1 %.not371443, label %.loopexit381, label %.lr.ph446.preheader

.lr.ph446.preheader:                              ; preds = %285
  %min.iters.check512 = icmp eq i64 %286, 1
  br i1 %min.iters.check512, label %.lr.ph446.preheader584, label %vector.memcheck504

vector.memcheck504:                               ; preds = %.lr.ph446.preheader
  %287 = shl i64 %286, 3
  %scevgep505 = getelementptr i8, ptr %10, i64 %287
  %288 = shl i64 %286, 2
  %scevgep506 = getelementptr i8, ptr %7, i64 %288
  %bound0507 = icmp ugt ptr %scevgep506, %10
  %bound1508 = icmp ugt ptr %scevgep505, %7
  %found.conflict509 = and i1 %bound0507, %bound1508
  br i1 %found.conflict509, label %.lr.ph446.preheader584, label %vector.ph513

vector.ph513:                                     ; preds = %vector.memcheck504
  %n.vec515 = and i64 %286, 9223372036854775806
  %ind.end516 = or i64 %286, 1
  br label %vector.body518

vector.body518:                                   ; preds = %vector.body518, %vector.ph513
  %index519 = phi i64 [ 0, %vector.ph513 ], [ %index.next526, %vector.body518 ]
  %289 = getelementptr float, ptr %7, i64 %index519
  %wide.load521 = load <2 x float>, ptr %289, align 4, !tbaa !12, !alias.scope !36
  %290 = getelementptr %struct.complex, ptr %10, i64 %index519
  %291 = load <4 x float>, ptr %290, align 4, !tbaa !12
  %292 = shufflevector <2 x float> %wide.load521, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec525 = fmul <4 x float> %292, %291
  store <4 x float> %interleaved.vec525, ptr %290, align 4, !tbaa !12
  %index.next526 = add nuw i64 %index519, 2
  %293 = icmp eq i64 %index.next526, %n.vec515
  br i1 %293, label %middle.block510, label %vector.body518, !llvm.loop !39

middle.block510:                                  ; preds = %vector.body518
  %cmp.n527 = icmp eq i64 %286, %n.vec515
  br i1 %cmp.n527, label %.loopexit381, label %.lr.ph446.preheader584

.lr.ph446.preheader584:                           ; preds = %middle.block510, %vector.memcheck504, %.lr.ph446.preheader
  %.4353444.ph = phi i64 [ 1, %vector.memcheck504 ], [ 1, %.lr.ph446.preheader ], [ %ind.end516, %middle.block510 ]
  %xtraiter602 = and i64 %286, 1
  %lcmp.mod603.not = icmp eq i64 %xtraiter602, 0
  br i1 %lcmp.mod603.not, label %.lr.ph446.prol.loopexit, label %.lr.ph446.prol

.lr.ph446.prol:                                   ; preds = %.lr.ph446.preheader584
  %294 = getelementptr inbounds float, ptr %21, i64 %.4353444.ph
  %295 = load float, ptr %294, align 4, !tbaa !12
  %296 = getelementptr inbounds %struct.complex, ptr %22, i64 %.4353444.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
  %301 = add nuw i64 %.4353444.ph, 1
  br label %.lr.ph446.prol.loopexit

.lr.ph446.prol.loopexit:                          ; preds = %.lr.ph446.prol, %.lr.ph446.preheader584
  %.4353444.unr = phi i64 [ %.4353444.ph, %.lr.ph446.preheader584 ], [ %301, %.lr.ph446.prol ]
  %302 = icmp eq i64 %286, %.4353444.ph
  br i1 %302, label %.loopexit381, label %.lr.ph446

.lr.ph446:                                        ; preds = %.lr.ph446.prol.loopexit, %.lr.ph446
  %.4353444 = phi i64 [ %318, %.lr.ph446 ], [ %.4353444.unr, %.lr.ph446.prol.loopexit ]
  %303 = getelementptr inbounds float, ptr %21, i64 %.4353444
  %304 = load float, ptr %303, align 4, !tbaa !12
  %305 = getelementptr inbounds %struct.complex, ptr %22, i64 %.4353444
  %306 = load <2 x float>, ptr %305, align 4, !tbaa !12
  %307 = insertelement <2 x float> poison, float %304, i64 0
  %308 = shufflevector <2 x float> %307, <2 x float> poison, <2 x i32> zeroinitializer
  %309 = fmul <2 x float> %308, %306
  store <2 x float> %309, ptr %305, align 4, !tbaa !12
  %310 = add nuw i64 %.4353444, 1
  %311 = getelementptr float, ptr %7, i64 %.4353444
  %312 = load float, ptr %311, align 4, !tbaa !12
  %313 = getelementptr %struct.complex, ptr %10, i64 %.4353444
  %314 = load <2 x float>, ptr %313, align 4, !tbaa !12
  %315 = insertelement <2 x float> poison, float %312, i64 0
  %316 = shufflevector <2 x float> %315, <2 x float> poison, <2 x i32> zeroinitializer
  %317 = fmul <2 x float> %316, %314
  store <2 x float> %317, ptr %313, align 4, !tbaa !12
  %318 = add nuw i64 %.4353444, 2
  %exitcond473.not.1 = icmp eq i64 %310, %286
  br i1 %exitcond473.not.1, label %.loopexit381, label %.lr.ph446, !llvm.loop !40

.loopexit381:                                     ; preds = %.lr.ph446.prol.loopexit, %.lr.ph446, %middle.block510, %285, %283
  %319 = call i32 @chetrs_(ptr noundef nonnull %.str.2..str.1, 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) #3
  %320 = load i64, ptr %1, align 8, !tbaa !5
  %.not372447 = icmp slt i64 %320, 1
  br i1 %.not372447, label %.loopexit.backedge, label %.lr.ph450.preheader

.lr.ph450.preheader:                              ; preds = %.loopexit381
  %min.iters.check = icmp eq i64 %320, 1
  br i1 %min.iters.check, label %.lr.ph450.preheader583, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph450.preheader
  %321 = shl i64 %320, 3
  %scevgep = getelementptr i8, ptr %10, i64 %321
  %322 = shl i64 %320, 2
  %scevgep502 = getelementptr i8, ptr %11, i64 %322
  %bound0 = icmp ugt ptr %scevgep502, %10
  %bound1 = icmp ugt ptr %scevgep, %11
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph450.preheader583, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %323 = getelementptr float, ptr %11, i64 %index
  %wide.load = load <2 x float>, ptr %323, align 4, !tbaa !12, !alias.scope !41
  %324 = getelementptr %struct.complex, ptr %10, i64 %index
  %325 = load <4 x float>, ptr %324, align 4, !tbaa !12
  %326 = 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> %326, %325
  store <4 x float> %interleaved.vec, ptr %324, align 4, !tbaa !12
  %index.next = add nuw i64 %index, 2
  %327 = icmp eq i64 %index.next, %n.vec
  br i1 %327, label %middle.block, label %vector.body, !llvm.loop !44

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %320, %n.vec
  br i1 %cmp.n, label %.loopexit.backedge, label %.lr.ph450.preheader583

.lr.ph450.preheader583:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph450.preheader
  %.5354448.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph450.preheader ], [ %ind.end, %middle.block ]
  %xtraiter604 = and i64 %320, 1
  %lcmp.mod605.not = icmp eq i64 %xtraiter604, 0
  br i1 %lcmp.mod605.not, label %.lr.ph450.prol.loopexit, label %.lr.ph450.prol

.lr.ph450.prol:                                   ; preds = %.lr.ph450.preheader583
  %328 = getelementptr inbounds float, ptr %23, i64 %.5354448.ph
  %329 = load float, ptr %328, align 4, !tbaa !12
  %330 = getelementptr inbounds %struct.complex, ptr %22, i64 %.5354448.ph
  %331 = load <2 x float>, ptr %330, align 4, !tbaa !12
  %332 = insertelement <2 x float> poison, float %329, i64 0
  %333 = shufflevector <2 x float> %332, <2 x float> poison, <2 x i32> zeroinitializer
  %334 = fmul <2 x float> %333, %331
  store <2 x float> %334, ptr %330, align 4, !tbaa !12
  %335 = add nuw i64 %.5354448.ph, 1
  br label %.lr.ph450.prol.loopexit

.lr.ph450.prol.loopexit:                          ; preds = %.lr.ph450.prol, %.lr.ph450.preheader583
  %.5354448.unr = phi i64 [ %.5354448.ph, %.lr.ph450.preheader583 ], [ %335, %.lr.ph450.prol ]
  %336 = icmp eq i64 %320, %.5354448.ph
  br i1 %336, label %.loopexit.backedge, label %.lr.ph450

.lr.ph450:                                        ; preds = %.lr.ph450.prol.loopexit, %.lr.ph450
  %.5354448 = phi i64 [ %352, %.lr.ph450 ], [ %.5354448.unr, %.lr.ph450.prol.loopexit ]
  %337 = getelementptr inbounds float, ptr %23, i64 %.5354448
  %338 = load float, ptr %337, align 4, !tbaa !12
  %339 = getelementptr inbounds %struct.complex, ptr %22, i64 %.5354448
  %340 = load <2 x float>, ptr %339, align 4, !tbaa !12
  %341 = insertelement <2 x float> poison, float %338, i64 0
  %342 = shufflevector <2 x float> %341, <2 x float> poison, <2 x i32> zeroinitializer
  %343 = fmul <2 x float> %342, %340
  store <2 x float> %343, ptr %339, align 4, !tbaa !12
  %344 = add nuw i64 %.5354448, 1
  %345 = getelementptr float, ptr %11, i64 %.5354448
  %346 = load float, ptr %345, align 4, !tbaa !12
  %347 = getelementptr %struct.complex, ptr %10, i64 %.5354448
  %348 = load <2 x float>, ptr %347, align 4, !tbaa !12
  %349 = insertelement <2 x float> poison, float %346, i64 0
  %350 = shufflevector <2 x float> %349, <2 x float> poison, <2 x i32> zeroinitializer
  %351 = fmul <2 x float> %350, %348
  store <2 x float> %351, ptr %347, align 4, !tbaa !12
  %352 = add nuw i64 %.5354448, 2
  %exitcond474.not.1 = icmp eq i64 %344, %320
  br i1 %exitcond474.not.1, label %.loopexit.backedge, label %.lr.ph450, !llvm.loop !45

353:                                              ; preds = %.loopexit
  %354 = load float, ptr %17, align 4, !tbaa !12
  %355 = fcmp une float %354, 0.000000e+00
  %356 = fdiv float 1.000000e+00, %354
  %357 = fpext float %356 to double
  %.0355 = select i1 %355, double %357, double 0.000000e+00
  br label %358

358:                                              ; preds = %.loopexit386, %353, %26
  %.0356 = phi double [ 0.000000e+00, %26 ], [ %.0355, %353 ], [ %.mux, %.loopexit386 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  ret double %.0356
}

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

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

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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

declare i32 @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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !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: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass