; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (cla_gbrcond_c)

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

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

84:                                               ; preds = %15
  %85 = load ptr, ptr %17, align 8, !tbaa !5
  %86 = call i64 @lsame_(ptr noundef %85, ptr noundef @.str.1)
  %87 = icmp ne i64 %86, 0
  br i1 %87, label %94, label %88

88:                                               ; preds = %84
  %89 = load ptr, ptr %17, align 8, !tbaa !5
  %90 = call i64 @lsame_(ptr noundef %89, ptr noundef @.str.2)
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %94, label %92

92:                                               ; preds = %88
  %93 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -1, ptr %93, align 8, !tbaa !9
  br label %156

94:                                               ; preds = %88, %84, %15
  %95 = load ptr, ptr %18, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp slt i64 %96, 0
  br i1 %97, label %98, label %100

98:                                               ; preds = %94
  %99 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -2, ptr %99, align 8, !tbaa !9
  br label %155

100:                                              ; preds = %94
  %101 = load ptr, ptr %19, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  %103 = icmp slt i64 %102, 0
  br i1 %103, label %111, label %104

104:                                              ; preds = %100
  %105 = load ptr, ptr %19, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = sub nsw i64 %108, 1
  %110 = icmp sgt i64 %106, %109
  br i1 %110, label %111, label %113

111:                                              ; preds = %104, %100
  %112 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -3, ptr %112, align 8, !tbaa !9
  br label %154

113:                                              ; preds = %104
  %114 = load ptr, ptr %20, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = icmp slt i64 %115, 0
  br i1 %116, label %124, label %117

117:                                              ; preds = %113
  %118 = load ptr, ptr %20, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = sub nsw i64 %121, 1
  %123 = icmp sgt i64 %119, %122
  br i1 %123, label %124, label %126

124:                                              ; preds = %117, %113
  %125 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -4, ptr %125, align 8, !tbaa !9
  br label %153

126:                                              ; preds = %117
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = load ptr, ptr %20, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = add nsw i64 %130, %132
  %134 = add nsw i64 %133, 1
  %135 = icmp slt i64 %128, %134
  br i1 %135, label %136, label %138

136:                                              ; preds = %126
  %137 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -6, ptr %137, align 8, !tbaa !9
  br label %152

138:                                              ; preds = %126
  %139 = load ptr, ptr %24, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = load ptr, ptr %19, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = shl i64 %142, 1
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = add nsw i64 %143, %145
  %147 = add nsw i64 %146, 1
  %148 = icmp slt i64 %140, %147
  br i1 %148, label %149, label %151

149:                                              ; preds = %138
  %150 = load ptr, ptr %28, align 8, !tbaa !5
  store i64 -8, ptr %150, align 8, !tbaa !9
  br label %151

151:                                              ; preds = %149, %138
  br label %152

152:                                              ; preds = %151, %136
  br label %153

153:                                              ; preds = %152, %124
  br label %154

154:                                              ; preds = %153, %111
  br label %155

155:                                              ; preds = %154, %98
  br label %156

156:                                              ; preds = %155, %92
  %157 = load ptr, ptr %28, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %160, label %167

160:                                              ; preds = %156
  %161 = load ptr, ptr %28, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = sub nsw i64 0, %162
  store i64 %163, ptr %36, align 8, !tbaa !9
  %164 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %36)
  %165 = load float, ptr %40, align 4, !tbaa !11
  %166 = fpext float %165 to double
  store double %166, ptr %16, align 8
  store i32 1, ptr %54, align 4
  br label %913

167:                                              ; preds = %156
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = add nsw i64 %169, 1
  store i64 %170, ptr %46, align 8, !tbaa !9
  %171 = load ptr, ptr %19, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = add nsw i64 %172, 1
  store i64 %173, ptr %47, align 8, !tbaa !9
  %174 = load i64, ptr %53, align 8, !tbaa !9
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %176, label %389

176:                                              ; preds = %167
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  store i64 %178, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %385, %176
  %180 = load i64, ptr %44, align 8, !tbaa !9
  %181 = load i64, ptr %36, align 8, !tbaa !9
  %182 = icmp sle i64 %180, %181
  br i1 %182, label %183, label %388

183:                                              ; preds = %179
  store float 0.000000e+00, ptr %48, align 4, !tbaa !11
  %184 = load ptr, ptr %27, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp ne i64 %185, 0
  br i1 %186, label %187, label %281

187:                                              ; preds = %183
  %188 = load i64, ptr %44, align 8, !tbaa !9
  %189 = load ptr, ptr %19, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = sub nsw i64 %188, %190
  store i64 %191, ptr %37, align 8, !tbaa !9
  %192 = load i64, ptr %44, align 8, !tbaa !9
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = add nsw i64 %192, %194
  store i64 %195, ptr %39, align 8, !tbaa !9
  %196 = load i64, ptr %39, align 8, !tbaa !9
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp sle i64 %196, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %187
  %201 = load i64, ptr %39, align 8, !tbaa !9
  br label %205

202:                                              ; preds = %187
  %203 = load ptr, ptr %18, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %202, %200
  %206 = phi i64 [ %201, %200 ], [ %204, %202 ]
  store i64 %206, ptr %38, align 8, !tbaa !9
  %207 = load i64, ptr %37, align 8, !tbaa !9
  %208 = icmp sge i64 %207, 1
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load i64, ptr %37, align 8, !tbaa !9
  br label %212

211:                                              ; preds = %205
  br label %212

212:                                              ; preds = %211, %209
  %213 = phi i64 [ %210, %209 ], [ 1, %211 ]
  store i64 %213, ptr %45, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %277, %212
  %215 = load i64, ptr %45, align 8, !tbaa !9
  %216 = load i64, ptr %38, align 8, !tbaa !9
  %217 = icmp sle i64 %215, %216
  br i1 %217, label %218, label %280

218:                                              ; preds = %214
  %219 = load i64, ptr %46, align 8, !tbaa !9
  %220 = load i64, ptr %44, align 8, !tbaa !9
  %221 = add nsw i64 %219, %220
  %222 = load i64, ptr %45, align 8, !tbaa !9
  %223 = sub nsw i64 %221, %222
  %224 = load i64, ptr %45, align 8, !tbaa !9
  %225 = load i64, ptr %32, align 8, !tbaa !9
  %226 = mul nsw i64 %224, %225
  %227 = add nsw i64 %223, %226
  store i64 %227, ptr %37, align 8, !tbaa !9
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load i64, ptr %37, align 8, !tbaa !9
  %230 = getelementptr inbounds %struct.complex, ptr %228, i64 %229
  %231 = getelementptr inbounds %struct.complex, ptr %230, i32 0, i32 0
  %232 = load float, ptr %231, align 4, !tbaa !13
  store float %232, ptr %41, align 4, !tbaa !11
  %233 = load float, ptr %41, align 4, !tbaa !11
  %234 = fcmp oge float %233, 0.000000e+00
  br i1 %234, label %235, label %237

235:                                              ; preds = %218
  %236 = load float, ptr %41, align 4, !tbaa !11
  br label %240

237:                                              ; preds = %218
  %238 = load float, ptr %41, align 4, !tbaa !11
  %239 = fneg float %238
  br label %240

240:                                              ; preds = %237, %235
  %241 = phi float [ %236, %235 ], [ %239, %237 ]
  %242 = fpext float %241 to double
  %243 = load ptr, ptr %21, align 8, !tbaa !5
  %244 = load i64, ptr %46, align 8, !tbaa !9
  %245 = load i64, ptr %44, align 8, !tbaa !9
  %246 = add nsw i64 %244, %245
  %247 = load i64, ptr %45, align 8, !tbaa !9
  %248 = sub nsw i64 %246, %247
  %249 = load i64, ptr %45, align 8, !tbaa !9
  %250 = load i64, ptr %32, align 8, !tbaa !9
  %251 = mul nsw i64 %249, %250
  %252 = add nsw i64 %248, %251
  %253 = getelementptr inbounds %struct.complex, ptr %243, i64 %252
  %254 = call double @r_imag(ptr noundef %253)
  %255 = fptrunc double %254 to float
  store float %255, ptr %42, align 4, !tbaa !11
  %256 = load float, ptr %42, align 4, !tbaa !11
  %257 = fcmp oge float %256, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %240
  %259 = load float, ptr %42, align 4, !tbaa !11
  br label %263

260:                                              ; preds = %240
  %261 = load float, ptr %42, align 4, !tbaa !11
  %262 = fneg float %261
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi float [ %259, %258 ], [ %262, %260 ]
  %265 = fpext float %264 to double
  %266 = fadd double %242, %265
  %267 = load ptr, ptr %26, align 8, !tbaa !5
  %268 = load i64, ptr %45, align 8, !tbaa !9
  %269 = getelementptr inbounds float, ptr %267, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !11
  %271 = fpext float %270 to double
  %272 = fdiv double %266, %271
  %273 = load float, ptr %48, align 4, !tbaa !11
  %274 = fpext float %273 to double
  %275 = fadd double %274, %272
  %276 = fptrunc double %275 to float
  store float %276, ptr %48, align 4, !tbaa !11
  br label %277

277:                                              ; preds = %263
  %278 = load i64, ptr %45, align 8, !tbaa !9
  %279 = add nsw i64 %278, 1
  store i64 %279, ptr %45, align 8, !tbaa !9
  br label %214, !llvm.loop !15

280:                                              ; preds = %214
  br label %369

281:                                              ; preds = %183
  %282 = load i64, ptr %44, align 8, !tbaa !9
  %283 = load ptr, ptr %19, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = sub nsw i64 %282, %284
  store i64 %285, ptr %38, align 8, !tbaa !9
  %286 = load i64, ptr %44, align 8, !tbaa !9
  %287 = load ptr, ptr %20, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = add nsw i64 %286, %288
  store i64 %289, ptr %39, align 8, !tbaa !9
  %290 = load i64, ptr %39, align 8, !tbaa !9
  %291 = load ptr, ptr %18, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = icmp sle i64 %290, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %281
  %295 = load i64, ptr %39, align 8, !tbaa !9
  br label %299

296:                                              ; preds = %281
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %296, %294
  %300 = phi i64 [ %295, %294 ], [ %298, %296 ]
  store i64 %300, ptr %37, align 8, !tbaa !9
  %301 = load i64, ptr %38, align 8, !tbaa !9
  %302 = icmp sge i64 %301, 1
  br i1 %302, label %303, label %305

303:                                              ; preds = %299
  %304 = load i64, ptr %38, align 8, !tbaa !9
  br label %306

305:                                              ; preds = %299
  br label %306

306:                                              ; preds = %305, %303
  %307 = phi i64 [ %304, %303 ], [ 1, %305 ]
  store i64 %307, ptr %45, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %365, %306
  %309 = load i64, ptr %45, align 8, !tbaa !9
  %310 = load i64, ptr %37, align 8, !tbaa !9
  %311 = icmp sle i64 %309, %310
  br i1 %311, label %312, label %368

312:                                              ; preds = %308
  %313 = load i64, ptr %46, align 8, !tbaa !9
  %314 = load i64, ptr %44, align 8, !tbaa !9
  %315 = add nsw i64 %313, %314
  %316 = load i64, ptr %45, align 8, !tbaa !9
  %317 = sub nsw i64 %315, %316
  %318 = load i64, ptr %45, align 8, !tbaa !9
  %319 = load i64, ptr %32, align 8, !tbaa !9
  %320 = mul nsw i64 %318, %319
  %321 = add nsw i64 %317, %320
  store i64 %321, ptr %38, align 8, !tbaa !9
  %322 = load ptr, ptr %21, align 8, !tbaa !5
  %323 = load i64, ptr %38, align 8, !tbaa !9
  %324 = getelementptr inbounds %struct.complex, ptr %322, i64 %323
  %325 = getelementptr inbounds %struct.complex, ptr %324, i32 0, i32 0
  %326 = load float, ptr %325, align 4, !tbaa !13
  store float %326, ptr %41, align 4, !tbaa !11
  %327 = load float, ptr %41, align 4, !tbaa !11
  %328 = fcmp oge float %327, 0.000000e+00
  br i1 %328, label %329, label %331

329:                                              ; preds = %312
  %330 = load float, ptr %41, align 4, !tbaa !11
  br label %334

331:                                              ; preds = %312
  %332 = load float, ptr %41, align 4, !tbaa !11
  %333 = fneg float %332
  br label %334

334:                                              ; preds = %331, %329
  %335 = phi float [ %330, %329 ], [ %333, %331 ]
  %336 = fpext float %335 to double
  %337 = load ptr, ptr %21, align 8, !tbaa !5
  %338 = load i64, ptr %46, align 8, !tbaa !9
  %339 = load i64, ptr %44, align 8, !tbaa !9
  %340 = add nsw i64 %338, %339
  %341 = load i64, ptr %45, align 8, !tbaa !9
  %342 = sub nsw i64 %340, %341
  %343 = load i64, ptr %45, align 8, !tbaa !9
  %344 = load i64, ptr %32, align 8, !tbaa !9
  %345 = mul nsw i64 %343, %344
  %346 = add nsw i64 %342, %345
  %347 = getelementptr inbounds %struct.complex, ptr %337, i64 %346
  %348 = call double @r_imag(ptr noundef %347)
  %349 = fptrunc double %348 to float
  store float %349, ptr %42, align 4, !tbaa !11
  %350 = load float, ptr %42, align 4, !tbaa !11
  %351 = fcmp oge float %350, 0.000000e+00
  br i1 %351, label %352, label %354

352:                                              ; preds = %334
  %353 = load float, ptr %42, align 4, !tbaa !11
  br label %357

354:                                              ; preds = %334
  %355 = load float, ptr %42, align 4, !tbaa !11
  %356 = fneg float %355
  br label %357

357:                                              ; preds = %354, %352
  %358 = phi float [ %353, %352 ], [ %356, %354 ]
  %359 = fpext float %358 to double
  %360 = fadd double %336, %359
  %361 = load float, ptr %48, align 4, !tbaa !11
  %362 = fpext float %361 to double
  %363 = fadd double %362, %360
  %364 = fptrunc double %363 to float
  store float %364, ptr %48, align 4, !tbaa !11
  br label %365

365:                                              ; preds = %357
  %366 = load i64, ptr %45, align 8, !tbaa !9
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %45, align 8, !tbaa !9
  br label %308, !llvm.loop !17

368:                                              ; preds = %308
  br label %369

369:                                              ; preds = %368, %280
  %370 = load float, ptr %48, align 4, !tbaa !11
  %371 = load ptr, ptr %30, align 8, !tbaa !5
  %372 = load i64, ptr %44, align 8, !tbaa !9
  %373 = getelementptr inbounds float, ptr %371, i64 %372
  store float %370, ptr %373, align 4, !tbaa !11
  %374 = load float, ptr %51, align 4, !tbaa !11
  %375 = load float, ptr %48, align 4, !tbaa !11
  %376 = fcmp oge float %374, %375
  br i1 %376, label %377, label %379

377:                                              ; preds = %369
  %378 = load float, ptr %51, align 4, !tbaa !11
  br label %381

379:                                              ; preds = %369
  %380 = load float, ptr %48, align 4, !tbaa !11
  br label %381

381:                                              ; preds = %379, %377
  %382 = phi float [ %378, %377 ], [ %380, %379 ]
  %383 = fpext float %382 to double
  %384 = fptrunc double %383 to float
  store float %384, ptr %51, align 4, !tbaa !11
  br label %385

385:                                              ; preds = %381
  %386 = load i64, ptr %44, align 8, !tbaa !9
  %387 = add nsw i64 %386, 1
  store i64 %387, ptr %44, align 8, !tbaa !9
  br label %179, !llvm.loop !18

388:                                              ; preds = %179
  br label %602

389:                                              ; preds = %167
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  store i64 %391, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %598, %389
  %393 = load i64, ptr %44, align 8, !tbaa !9
  %394 = load i64, ptr %36, align 8, !tbaa !9
  %395 = icmp sle i64 %393, %394
  br i1 %395, label %396, label %601

396:                                              ; preds = %392
  store float 0.000000e+00, ptr %48, align 4, !tbaa !11
  %397 = load ptr, ptr %27, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = icmp ne i64 %398, 0
  br i1 %399, label %400, label %494

400:                                              ; preds = %396
  %401 = load i64, ptr %44, align 8, !tbaa !9
  %402 = load ptr, ptr %19, align 8, !tbaa !5
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = sub nsw i64 %401, %403
  store i64 %404, ptr %37, align 8, !tbaa !9
  %405 = load i64, ptr %44, align 8, !tbaa !9
  %406 = load ptr, ptr %20, align 8, !tbaa !5
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = add nsw i64 %405, %407
  store i64 %408, ptr %39, align 8, !tbaa !9
  %409 = load i64, ptr %39, align 8, !tbaa !9
  %410 = load ptr, ptr %18, align 8, !tbaa !5
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = icmp sle i64 %409, %411
  br i1 %412, label %413, label %415

413:                                              ; preds = %400
  %414 = load i64, ptr %39, align 8, !tbaa !9
  br label %418

415:                                              ; preds = %400
  %416 = load ptr, ptr %18, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %415, %413
  %419 = phi i64 [ %414, %413 ], [ %417, %415 ]
  store i64 %419, ptr %38, align 8, !tbaa !9
  %420 = load i64, ptr %37, align 8, !tbaa !9
  %421 = icmp sge i64 %420, 1
  br i1 %421, label %422, label %424

422:                                              ; preds = %418
  %423 = load i64, ptr %37, align 8, !tbaa !9
  br label %425

424:                                              ; preds = %418
  br label %425

425:                                              ; preds = %424, %422
  %426 = phi i64 [ %423, %422 ], [ 1, %424 ]
  store i64 %426, ptr %45, align 8, !tbaa !9
  br label %427

427:                                              ; preds = %490, %425
  %428 = load i64, ptr %45, align 8, !tbaa !9
  %429 = load i64, ptr %38, align 8, !tbaa !9
  %430 = icmp sle i64 %428, %429
  br i1 %430, label %431, label %493

431:                                              ; preds = %427
  %432 = load i64, ptr %47, align 8, !tbaa !9
  %433 = load i64, ptr %44, align 8, !tbaa !9
  %434 = sub nsw i64 %432, %433
  %435 = load i64, ptr %45, align 8, !tbaa !9
  %436 = add nsw i64 %434, %435
  %437 = load i64, ptr %44, align 8, !tbaa !9
  %438 = load i64, ptr %32, align 8, !tbaa !9
  %439 = mul nsw i64 %437, %438
  %440 = add nsw i64 %436, %439
  store i64 %440, ptr %37, align 8, !tbaa !9
  %441 = load ptr, ptr %21, align 8, !tbaa !5
  %442 = load i64, ptr %37, align 8, !tbaa !9
  %443 = getelementptr inbounds %struct.complex, ptr %441, i64 %442
  %444 = getelementptr inbounds %struct.complex, ptr %443, i32 0, i32 0
  %445 = load float, ptr %444, align 4, !tbaa !13
  store float %445, ptr %41, align 4, !tbaa !11
  %446 = load float, ptr %41, align 4, !tbaa !11
  %447 = fcmp oge float %446, 0.000000e+00
  br i1 %447, label %448, label %450

448:                                              ; preds = %431
  %449 = load float, ptr %41, align 4, !tbaa !11
  br label %453

450:                                              ; preds = %431
  %451 = load float, ptr %41, align 4, !tbaa !11
  %452 = fneg float %451
  br label %453

453:                                              ; preds = %450, %448
  %454 = phi float [ %449, %448 ], [ %452, %450 ]
  %455 = fpext float %454 to double
  %456 = load ptr, ptr %21, align 8, !tbaa !5
  %457 = load i64, ptr %47, align 8, !tbaa !9
  %458 = load i64, ptr %44, align 8, !tbaa !9
  %459 = sub nsw i64 %457, %458
  %460 = load i64, ptr %45, align 8, !tbaa !9
  %461 = add nsw i64 %459, %460
  %462 = load i64, ptr %44, align 8, !tbaa !9
  %463 = load i64, ptr %32, align 8, !tbaa !9
  %464 = mul nsw i64 %462, %463
  %465 = add nsw i64 %461, %464
  %466 = getelementptr inbounds %struct.complex, ptr %456, i64 %465
  %467 = call double @r_imag(ptr noundef %466)
  %468 = fptrunc double %467 to float
  store float %468, ptr %42, align 4, !tbaa !11
  %469 = load float, ptr %42, align 4, !tbaa !11
  %470 = fcmp oge float %469, 0.000000e+00
  br i1 %470, label %471, label %473

471:                                              ; preds = %453
  %472 = load float, ptr %42, align 4, !tbaa !11
  br label %476

473:                                              ; preds = %453
  %474 = load float, ptr %42, align 4, !tbaa !11
  %475 = fneg float %474
  br label %476

476:                                              ; preds = %473, %471
  %477 = phi float [ %472, %471 ], [ %475, %473 ]
  %478 = fpext float %477 to double
  %479 = fadd double %455, %478
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = load i64, ptr %45, align 8, !tbaa !9
  %482 = getelementptr inbounds float, ptr %480, i64 %481
  %483 = load float, ptr %482, align 4, !tbaa !11
  %484 = fpext float %483 to double
  %485 = fdiv double %479, %484
  %486 = load float, ptr %48, align 4, !tbaa !11
  %487 = fpext float %486 to double
  %488 = fadd double %487, %485
  %489 = fptrunc double %488 to float
  store float %489, ptr %48, align 4, !tbaa !11
  br label %490

490:                                              ; preds = %476
  %491 = load i64, ptr %45, align 8, !tbaa !9
  %492 = add nsw i64 %491, 1
  store i64 %492, ptr %45, align 8, !tbaa !9
  br label %427, !llvm.loop !19

493:                                              ; preds = %427
  br label %582

494:                                              ; preds = %396
  %495 = load i64, ptr %44, align 8, !tbaa !9
  %496 = load ptr, ptr %19, align 8, !tbaa !5
  %497 = load i64, ptr %496, align 8, !tbaa !9
  %498 = sub nsw i64 %495, %497
  store i64 %498, ptr %38, align 8, !tbaa !9
  %499 = load i64, ptr %44, align 8, !tbaa !9
  %500 = load ptr, ptr %20, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  %502 = add nsw i64 %499, %501
  store i64 %502, ptr %39, align 8, !tbaa !9
  %503 = load i64, ptr %39, align 8, !tbaa !9
  %504 = load ptr, ptr %18, align 8, !tbaa !5
  %505 = load i64, ptr %504, align 8, !tbaa !9
  %506 = icmp sle i64 %503, %505
  br i1 %506, label %507, label %509

507:                                              ; preds = %494
  %508 = load i64, ptr %39, align 8, !tbaa !9
  br label %512

509:                                              ; preds = %494
  %510 = load ptr, ptr %18, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !9
  br label %512

512:                                              ; preds = %509, %507
  %513 = phi i64 [ %508, %507 ], [ %511, %509 ]
  store i64 %513, ptr %37, align 8, !tbaa !9
  %514 = load i64, ptr %38, align 8, !tbaa !9
  %515 = icmp sge i64 %514, 1
  br i1 %515, label %516, label %518

516:                                              ; preds = %512
  %517 = load i64, ptr %38, align 8, !tbaa !9
  br label %519

518:                                              ; preds = %512
  br label %519

519:                                              ; preds = %518, %516
  %520 = phi i64 [ %517, %516 ], [ 1, %518 ]
  store i64 %520, ptr %45, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %578, %519
  %522 = load i64, ptr %45, align 8, !tbaa !9
  %523 = load i64, ptr %37, align 8, !tbaa !9
  %524 = icmp sle i64 %522, %523
  br i1 %524, label %525, label %581

525:                                              ; preds = %521
  %526 = load i64, ptr %47, align 8, !tbaa !9
  %527 = load i64, ptr %44, align 8, !tbaa !9
  %528 = sub nsw i64 %526, %527
  %529 = load i64, ptr %45, align 8, !tbaa !9
  %530 = add nsw i64 %528, %529
  %531 = load i64, ptr %44, align 8, !tbaa !9
  %532 = load i64, ptr %32, align 8, !tbaa !9
  %533 = mul nsw i64 %531, %532
  %534 = add nsw i64 %530, %533
  store i64 %534, ptr %38, align 8, !tbaa !9
  %535 = load ptr, ptr %21, align 8, !tbaa !5
  %536 = load i64, ptr %38, align 8, !tbaa !9
  %537 = getelementptr inbounds %struct.complex, ptr %535, i64 %536
  %538 = getelementptr inbounds %struct.complex, ptr %537, i32 0, i32 0
  %539 = load float, ptr %538, align 4, !tbaa !13
  store float %539, ptr %41, align 4, !tbaa !11
  %540 = load float, ptr %41, align 4, !tbaa !11
  %541 = fcmp oge float %540, 0.000000e+00
  br i1 %541, label %542, label %544

542:                                              ; preds = %525
  %543 = load float, ptr %41, align 4, !tbaa !11
  br label %547

544:                                              ; preds = %525
  %545 = load float, ptr %41, align 4, !tbaa !11
  %546 = fneg float %545
  br label %547

547:                                              ; preds = %544, %542
  %548 = phi float [ %543, %542 ], [ %546, %544 ]
  %549 = fpext float %548 to double
  %550 = load ptr, ptr %21, align 8, !tbaa !5
  %551 = load i64, ptr %47, align 8, !tbaa !9
  %552 = load i64, ptr %44, align 8, !tbaa !9
  %553 = sub nsw i64 %551, %552
  %554 = load i64, ptr %45, align 8, !tbaa !9
  %555 = add nsw i64 %553, %554
  %556 = load i64, ptr %44, align 8, !tbaa !9
  %557 = load i64, ptr %32, align 8, !tbaa !9
  %558 = mul nsw i64 %556, %557
  %559 = add nsw i64 %555, %558
  %560 = getelementptr inbounds %struct.complex, ptr %550, i64 %559
  %561 = call double @r_imag(ptr noundef %560)
  %562 = fptrunc double %561 to float
  store float %562, ptr %42, align 4, !tbaa !11
  %563 = load float, ptr %42, align 4, !tbaa !11
  %564 = fcmp oge float %563, 0.000000e+00
  br i1 %564, label %565, label %567

565:                                              ; preds = %547
  %566 = load float, ptr %42, align 4, !tbaa !11
  br label %570

567:                                              ; preds = %547
  %568 = load float, ptr %42, align 4, !tbaa !11
  %569 = fneg float %568
  br label %570

570:                                              ; preds = %567, %565
  %571 = phi float [ %566, %565 ], [ %569, %567 ]
  %572 = fpext float %571 to double
  %573 = fadd double %549, %572
  %574 = load float, ptr %48, align 4, !tbaa !11
  %575 = fpext float %574 to double
  %576 = fadd double %575, %573
  %577 = fptrunc double %576 to float
  store float %577, ptr %48, align 4, !tbaa !11
  br label %578

578:                                              ; preds = %570
  %579 = load i64, ptr %45, align 8, !tbaa !9
  %580 = add nsw i64 %579, 1
  store i64 %580, ptr %45, align 8, !tbaa !9
  br label %521, !llvm.loop !20

581:                                              ; preds = %521
  br label %582

582:                                              ; preds = %581, %493
  %583 = load float, ptr %48, align 4, !tbaa !11
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load i64, ptr %44, align 8, !tbaa !9
  %586 = getelementptr inbounds float, ptr %584, i64 %585
  store float %583, ptr %586, align 4, !tbaa !11
  %587 = load float, ptr %51, align 4, !tbaa !11
  %588 = load float, ptr %48, align 4, !tbaa !11
  %589 = fcmp oge float %587, %588
  br i1 %589, label %590, label %592

590:                                              ; preds = %582
  %591 = load float, ptr %51, align 4, !tbaa !11
  br label %594

592:                                              ; preds = %582
  %593 = load float, ptr %48, align 4, !tbaa !11
  br label %594

594:                                              ; preds = %592, %590
  %595 = phi float [ %591, %590 ], [ %593, %592 ]
  %596 = fpext float %595 to double
  %597 = fptrunc double %596 to float
  store float %597, ptr %51, align 4, !tbaa !11
  br label %598

598:                                              ; preds = %594
  %599 = load i64, ptr %44, align 8, !tbaa !9
  %600 = add nsw i64 %599, 1
  store i64 %600, ptr %44, align 8, !tbaa !9
  br label %392, !llvm.loop !21

601:                                              ; preds = %392
  br label %602

602:                                              ; preds = %601, %388
  %603 = load ptr, ptr %18, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  %605 = icmp eq i64 %604, 0
  br i1 %605, label %606, label %609

606:                                              ; preds = %602
  store float 1.000000e+00, ptr %40, align 4, !tbaa !11
  %607 = load float, ptr %40, align 4, !tbaa !11
  %608 = fpext float %607 to double
  store double %608, ptr %16, align 8
  store i32 1, ptr %54, align 4
  br label %913

609:                                              ; preds = %602
  %610 = load float, ptr %51, align 4, !tbaa !11
  %611 = fcmp oeq float %610, 0.000000e+00
  br i1 %611, label %612, label %615

612:                                              ; preds = %609
  %613 = load float, ptr %40, align 4, !tbaa !11
  %614 = fpext float %613 to double
  store double %614, ptr %16, align 8
  store i32 1, ptr %54, align 4
  br label %913

615:                                              ; preds = %609
  br label %616

616:                                              ; preds = %615
  store float 0.000000e+00, ptr %52, align 4, !tbaa !11
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %903, %616
  %618 = load ptr, ptr %18, align 8, !tbaa !5
  %619 = load ptr, ptr %29, align 8, !tbaa !5
  %620 = load ptr, ptr %18, align 8, !tbaa !5
  %621 = load i64, ptr %620, align 8, !tbaa !9
  %622 = add nsw i64 %621, 1
  %623 = getelementptr inbounds %struct.complex, ptr %619, i64 %622
  %624 = load ptr, ptr %29, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.complex, ptr %624, i64 1
  %626 = getelementptr inbounds [3 x i64], ptr %50, i64 0, i64 0
  %627 = call i32 @clacn2_(ptr noundef %618, ptr noundef %623, ptr noundef %625, ptr noundef %52, ptr noundef %49, ptr noundef %626)
  %628 = load i64, ptr %49, align 8, !tbaa !9
  %629 = icmp ne i64 %628, 0
  br i1 %629, label %630, label %904

630:                                              ; preds = %617
  %631 = load i64, ptr %49, align 8, !tbaa !9
  %632 = icmp eq i64 %631, 2
  br i1 %632, label %633, label %768

633:                                              ; preds = %630
  %634 = load ptr, ptr %18, align 8, !tbaa !5
  %635 = load i64, ptr %634, align 8, !tbaa !9
  store i64 %635, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %678, %633
  %637 = load i64, ptr %44, align 8, !tbaa !9
  %638 = load i64, ptr %36, align 8, !tbaa !9
  %639 = icmp sle i64 %637, %638
  br i1 %639, label %640, label %681

640:                                              ; preds = %636
  %641 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %641, ptr %37, align 8, !tbaa !9
  %642 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %642, ptr %38, align 8, !tbaa !9
  %643 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %643, ptr %39, align 8, !tbaa !9
  %644 = load ptr, ptr %30, align 8, !tbaa !5
  %645 = load i64, ptr %39, align 8, !tbaa !9
  %646 = getelementptr inbounds float, ptr %644, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !11
  %648 = load ptr, ptr %29, align 8, !tbaa !5
  %649 = load i64, ptr %38, align 8, !tbaa !9
  %650 = getelementptr inbounds %struct.complex, ptr %648, i64 %649
  %651 = getelementptr inbounds %struct.complex, ptr %650, i32 0, i32 0
  %652 = load float, ptr %651, align 4, !tbaa !13
  %653 = fmul float %647, %652
  %654 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %653, ptr %654, align 4, !tbaa !13
  %655 = load ptr, ptr %30, align 8, !tbaa !5
  %656 = load i64, ptr %39, align 8, !tbaa !9
  %657 = getelementptr inbounds float, ptr %655, i64 %656
  %658 = load float, ptr %657, align 4, !tbaa !11
  %659 = load ptr, ptr %29, align 8, !tbaa !5
  %660 = load i64, ptr %38, align 8, !tbaa !9
  %661 = getelementptr inbounds %struct.complex, ptr %659, i64 %660
  %662 = getelementptr inbounds %struct.complex, ptr %661, i32 0, i32 1
  %663 = load float, ptr %662, align 4, !tbaa !22
  %664 = fmul float %658, %663
  %665 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %664, ptr %665, align 4, !tbaa !22
  %666 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %667 = load float, ptr %666, align 4, !tbaa !13
  %668 = load ptr, ptr %29, align 8, !tbaa !5
  %669 = load i64, ptr %37, align 8, !tbaa !9
  %670 = getelementptr inbounds %struct.complex, ptr %668, i64 %669
  %671 = getelementptr inbounds %struct.complex, ptr %670, i32 0, i32 0
  store float %667, ptr %671, align 4, !tbaa !13
  %672 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %673 = load float, ptr %672, align 4, !tbaa !22
  %674 = load ptr, ptr %29, align 8, !tbaa !5
  %675 = load i64, ptr %37, align 8, !tbaa !9
  %676 = getelementptr inbounds %struct.complex, ptr %674, i64 %675
  %677 = getelementptr inbounds %struct.complex, ptr %676, i32 0, i32 1
  store float %673, ptr %677, align 4, !tbaa !22
  br label %678

678:                                              ; preds = %640
  %679 = load i64, ptr %44, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %44, align 8, !tbaa !9
  br label %636, !llvm.loop !23

681:                                              ; preds = %636
  %682 = load i64, ptr %53, align 8, !tbaa !9
  %683 = icmp ne i64 %682, 0
  br i1 %683, label %684, label %699

684:                                              ; preds = %681
  %685 = load ptr, ptr %18, align 8, !tbaa !5
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  %687 = load ptr, ptr %20, align 8, !tbaa !5
  %688 = load ptr, ptr %23, align 8, !tbaa !5
  %689 = load i64, ptr %35, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.complex, ptr %688, i64 %689
  %691 = load ptr, ptr %24, align 8, !tbaa !5
  %692 = load ptr, ptr %25, align 8, !tbaa !5
  %693 = getelementptr inbounds i64, ptr %692, i64 1
  %694 = load ptr, ptr %29, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.complex, ptr %694, i64 1
  %696 = load ptr, ptr %18, align 8, !tbaa !5
  %697 = load ptr, ptr %28, align 8, !tbaa !5
  %698 = call i32 @cgbtrs_(ptr noundef @.str.4, ptr noundef %685, ptr noundef %686, ptr noundef %687, ptr noundef @c__1, ptr noundef %690, ptr noundef %691, ptr noundef %693, ptr noundef %695, ptr noundef %696, ptr noundef %697)
  br label %714

699:                                              ; preds = %681
  %700 = load ptr, ptr %18, align 8, !tbaa !5
  %701 = load ptr, ptr %19, align 8, !tbaa !5
  %702 = load ptr, ptr %20, align 8, !tbaa !5
  %703 = load ptr, ptr %23, align 8, !tbaa !5
  %704 = load i64, ptr %35, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.complex, ptr %703, i64 %704
  %706 = load ptr, ptr %24, align 8, !tbaa !5
  %707 = load ptr, ptr %25, align 8, !tbaa !5
  %708 = getelementptr inbounds i64, ptr %707, i64 1
  %709 = load ptr, ptr %29, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.complex, ptr %709, i64 1
  %711 = load ptr, ptr %18, align 8, !tbaa !5
  %712 = load ptr, ptr %28, align 8, !tbaa !5
  %713 = call i32 @cgbtrs_(ptr noundef @.str.5, ptr noundef %700, ptr noundef %701, ptr noundef %702, ptr noundef @c__1, ptr noundef %705, ptr noundef %706, ptr noundef %708, ptr noundef %710, ptr noundef %711, ptr noundef %712)
  br label %714

714:                                              ; preds = %699, %684
  %715 = load ptr, ptr %27, align 8, !tbaa !5
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = icmp ne i64 %716, 0
  br i1 %717, label %718, label %767

718:                                              ; preds = %714
  %719 = load ptr, ptr %18, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  store i64 %720, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %763, %718
  %722 = load i64, ptr %44, align 8, !tbaa !9
  %723 = load i64, ptr %36, align 8, !tbaa !9
  %724 = icmp sle i64 %722, %723
  br i1 %724, label %725, label %766

725:                                              ; preds = %721
  %726 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %726, ptr %37, align 8, !tbaa !9
  %727 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %727, ptr %38, align 8, !tbaa !9
  %728 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %728, ptr %39, align 8, !tbaa !9
  %729 = load ptr, ptr %26, align 8, !tbaa !5
  %730 = load i64, ptr %39, align 8, !tbaa !9
  %731 = getelementptr inbounds float, ptr %729, i64 %730
  %732 = load float, ptr %731, align 4, !tbaa !11
  %733 = load ptr, ptr %29, align 8, !tbaa !5
  %734 = load i64, ptr %38, align 8, !tbaa !9
  %735 = getelementptr inbounds %struct.complex, ptr %733, i64 %734
  %736 = getelementptr inbounds %struct.complex, ptr %735, i32 0, i32 0
  %737 = load float, ptr %736, align 4, !tbaa !13
  %738 = fmul float %732, %737
  %739 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %738, ptr %739, align 4, !tbaa !13
  %740 = load ptr, ptr %26, align 8, !tbaa !5
  %741 = load i64, ptr %39, align 8, !tbaa !9
  %742 = getelementptr inbounds float, ptr %740, i64 %741
  %743 = load float, ptr %742, align 4, !tbaa !11
  %744 = load ptr, ptr %29, align 8, !tbaa !5
  %745 = load i64, ptr %38, align 8, !tbaa !9
  %746 = getelementptr inbounds %struct.complex, ptr %744, i64 %745
  %747 = getelementptr inbounds %struct.complex, ptr %746, i32 0, i32 1
  %748 = load float, ptr %747, align 4, !tbaa !22
  %749 = fmul float %743, %748
  %750 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %749, ptr %750, align 4, !tbaa !22
  %751 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %752 = load float, ptr %751, align 4, !tbaa !13
  %753 = load ptr, ptr %29, align 8, !tbaa !5
  %754 = load i64, ptr %37, align 8, !tbaa !9
  %755 = getelementptr inbounds %struct.complex, ptr %753, i64 %754
  %756 = getelementptr inbounds %struct.complex, ptr %755, i32 0, i32 0
  store float %752, ptr %756, align 4, !tbaa !13
  %757 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %758 = load float, ptr %757, align 4, !tbaa !22
  %759 = load ptr, ptr %29, align 8, !tbaa !5
  %760 = load i64, ptr %37, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.complex, ptr %759, i64 %760
  %762 = getelementptr inbounds %struct.complex, ptr %761, i32 0, i32 1
  store float %758, ptr %762, align 4, !tbaa !22
  br label %763

763:                                              ; preds = %725
  %764 = load i64, ptr %44, align 8, !tbaa !9
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %44, align 8, !tbaa !9
  br label %721, !llvm.loop !24

766:                                              ; preds = %721
  br label %767

767:                                              ; preds = %766, %714
  br label %903

768:                                              ; preds = %630
  %769 = load ptr, ptr %27, align 8, !tbaa !5
  %770 = load i64, ptr %769, align 8, !tbaa !9
  %771 = icmp ne i64 %770, 0
  br i1 %771, label %772, label %821

772:                                              ; preds = %768
  %773 = load ptr, ptr %18, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  store i64 %774, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %775

775:                                              ; preds = %817, %772
  %776 = load i64, ptr %44, align 8, !tbaa !9
  %777 = load i64, ptr %36, align 8, !tbaa !9
  %778 = icmp sle i64 %776, %777
  br i1 %778, label %779, label %820

779:                                              ; preds = %775
  %780 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %780, ptr %37, align 8, !tbaa !9
  %781 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %781, ptr %38, align 8, !tbaa !9
  %782 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %782, ptr %39, align 8, !tbaa !9
  %783 = load ptr, ptr %26, align 8, !tbaa !5
  %784 = load i64, ptr %39, align 8, !tbaa !9
  %785 = getelementptr inbounds float, ptr %783, i64 %784
  %786 = load float, ptr %785, align 4, !tbaa !11
  %787 = load ptr, ptr %29, align 8, !tbaa !5
  %788 = load i64, ptr %38, align 8, !tbaa !9
  %789 = getelementptr inbounds %struct.complex, ptr %787, i64 %788
  %790 = getelementptr inbounds %struct.complex, ptr %789, i32 0, i32 0
  %791 = load float, ptr %790, align 4, !tbaa !13
  %792 = fmul float %786, %791
  %793 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %792, ptr %793, align 4, !tbaa !13
  %794 = load ptr, ptr %26, align 8, !tbaa !5
  %795 = load i64, ptr %39, align 8, !tbaa !9
  %796 = getelementptr inbounds float, ptr %794, i64 %795
  %797 = load float, ptr %796, align 4, !tbaa !11
  %798 = load ptr, ptr %29, align 8, !tbaa !5
  %799 = load i64, ptr %38, align 8, !tbaa !9
  %800 = getelementptr inbounds %struct.complex, ptr %798, i64 %799
  %801 = getelementptr inbounds %struct.complex, ptr %800, i32 0, i32 1
  %802 = load float, ptr %801, align 4, !tbaa !22
  %803 = fmul float %797, %802
  %804 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %803, ptr %804, align 4, !tbaa !22
  %805 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %806 = load float, ptr %805, align 4, !tbaa !13
  %807 = load ptr, ptr %29, align 8, !tbaa !5
  %808 = load i64, ptr %37, align 8, !tbaa !9
  %809 = getelementptr inbounds %struct.complex, ptr %807, i64 %808
  %810 = getelementptr inbounds %struct.complex, ptr %809, i32 0, i32 0
  store float %806, ptr %810, align 4, !tbaa !13
  %811 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %812 = load float, ptr %811, align 4, !tbaa !22
  %813 = load ptr, ptr %29, align 8, !tbaa !5
  %814 = load i64, ptr %37, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.complex, ptr %813, i64 %814
  %816 = getelementptr inbounds %struct.complex, ptr %815, i32 0, i32 1
  store float %812, ptr %816, align 4, !tbaa !22
  br label %817

817:                                              ; preds = %779
  %818 = load i64, ptr %44, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %44, align 8, !tbaa !9
  br label %775, !llvm.loop !25

820:                                              ; preds = %775
  br label %821

821:                                              ; preds = %820, %768
  %822 = load i64, ptr %53, align 8, !tbaa !9
  %823 = icmp ne i64 %822, 0
  br i1 %823, label %824, label %839

824:                                              ; preds = %821
  %825 = load ptr, ptr %18, align 8, !tbaa !5
  %826 = load ptr, ptr %19, align 8, !tbaa !5
  %827 = load ptr, ptr %20, align 8, !tbaa !5
  %828 = load ptr, ptr %23, align 8, !tbaa !5
  %829 = load i64, ptr %35, align 8, !tbaa !9
  %830 = getelementptr inbounds %struct.complex, ptr %828, i64 %829
  %831 = load ptr, ptr %24, align 8, !tbaa !5
  %832 = load ptr, ptr %25, align 8, !tbaa !5
  %833 = getelementptr inbounds i64, ptr %832, i64 1
  %834 = load ptr, ptr %29, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.complex, ptr %834, i64 1
  %836 = load ptr, ptr %18, align 8, !tbaa !5
  %837 = load ptr, ptr %28, align 8, !tbaa !5
  %838 = call i32 @cgbtrs_(ptr noundef @.str.5, ptr noundef %825, ptr noundef %826, ptr noundef %827, ptr noundef @c__1, ptr noundef %830, ptr noundef %831, ptr noundef %833, ptr noundef %835, ptr noundef %836, ptr noundef %837)
  br label %854

839:                                              ; preds = %821
  %840 = load ptr, ptr %18, align 8, !tbaa !5
  %841 = load ptr, ptr %19, align 8, !tbaa !5
  %842 = load ptr, ptr %20, align 8, !tbaa !5
  %843 = load ptr, ptr %23, align 8, !tbaa !5
  %844 = load i64, ptr %35, align 8, !tbaa !9
  %845 = getelementptr inbounds %struct.complex, ptr %843, i64 %844
  %846 = load ptr, ptr %24, align 8, !tbaa !5
  %847 = load ptr, ptr %25, align 8, !tbaa !5
  %848 = getelementptr inbounds i64, ptr %847, i64 1
  %849 = load ptr, ptr %29, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.complex, ptr %849, i64 1
  %851 = load ptr, ptr %18, align 8, !tbaa !5
  %852 = load ptr, ptr %28, align 8, !tbaa !5
  %853 = call i32 @cgbtrs_(ptr noundef @.str.4, ptr noundef %840, ptr noundef %841, ptr noundef %842, ptr noundef @c__1, ptr noundef %845, ptr noundef %846, ptr noundef %848, ptr noundef %850, ptr noundef %851, ptr noundef %852)
  br label %854

854:                                              ; preds = %839, %824
  %855 = load ptr, ptr %18, align 8, !tbaa !5
  %856 = load i64, ptr %855, align 8, !tbaa !9
  store i64 %856, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %857

857:                                              ; preds = %899, %854
  %858 = load i64, ptr %44, align 8, !tbaa !9
  %859 = load i64, ptr %36, align 8, !tbaa !9
  %860 = icmp sle i64 %858, %859
  br i1 %860, label %861, label %902

861:                                              ; preds = %857
  %862 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %862, ptr %37, align 8, !tbaa !9
  %863 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %863, ptr %38, align 8, !tbaa !9
  %864 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %864, ptr %39, align 8, !tbaa !9
  %865 = load ptr, ptr %30, align 8, !tbaa !5
  %866 = load i64, ptr %39, align 8, !tbaa !9
  %867 = getelementptr inbounds float, ptr %865, i64 %866
  %868 = load float, ptr %867, align 4, !tbaa !11
  %869 = load ptr, ptr %29, align 8, !tbaa !5
  %870 = load i64, ptr %38, align 8, !tbaa !9
  %871 = getelementptr inbounds %struct.complex, ptr %869, i64 %870
  %872 = getelementptr inbounds %struct.complex, ptr %871, i32 0, i32 0
  %873 = load float, ptr %872, align 4, !tbaa !13
  %874 = fmul float %868, %873
  %875 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %874, ptr %875, align 4, !tbaa !13
  %876 = load ptr, ptr %30, align 8, !tbaa !5
  %877 = load i64, ptr %39, align 8, !tbaa !9
  %878 = getelementptr inbounds float, ptr %876, i64 %877
  %879 = load float, ptr %878, align 4, !tbaa !11
  %880 = load ptr, ptr %29, align 8, !tbaa !5
  %881 = load i64, ptr %38, align 8, !tbaa !9
  %882 = getelementptr inbounds %struct.complex, ptr %880, i64 %881
  %883 = getelementptr inbounds %struct.complex, ptr %882, i32 0, i32 1
  %884 = load float, ptr %883, align 4, !tbaa !22
  %885 = fmul float %879, %884
  %886 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %885, ptr %886, align 4, !tbaa !22
  %887 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %888 = load float, ptr %887, align 4, !tbaa !13
  %889 = load ptr, ptr %29, align 8, !tbaa !5
  %890 = load i64, ptr %37, align 8, !tbaa !9
  %891 = getelementptr inbounds %struct.complex, ptr %889, i64 %890
  %892 = getelementptr inbounds %struct.complex, ptr %891, i32 0, i32 0
  store float %888, ptr %892, align 4, !tbaa !13
  %893 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %894 = load float, ptr %893, align 4, !tbaa !22
  %895 = load ptr, ptr %29, align 8, !tbaa !5
  %896 = load i64, ptr %37, align 8, !tbaa !9
  %897 = getelementptr inbounds %struct.complex, ptr %895, i64 %896
  %898 = getelementptr inbounds %struct.complex, ptr %897, i32 0, i32 1
  store float %894, ptr %898, align 4, !tbaa !22
  br label %899

899:                                              ; preds = %861
  %900 = load i64, ptr %44, align 8, !tbaa !9
  %901 = add nsw i64 %900, 1
  store i64 %901, ptr %44, align 8, !tbaa !9
  br label %857, !llvm.loop !26

902:                                              ; preds = %857
  br label %903

903:                                              ; preds = %902, %767
  br label %617

904:                                              ; preds = %617
  %905 = load float, ptr %52, align 4, !tbaa !11
  %906 = fcmp une float %905, 0.000000e+00
  br i1 %906, label %907, label %910

907:                                              ; preds = %904
  %908 = load float, ptr %52, align 4, !tbaa !11
  %909 = fdiv float 1.000000e+00, %908
  store float %909, ptr %40, align 4, !tbaa !11
  br label %910

910:                                              ; preds = %907, %904
  %911 = load float, ptr %40, align 4, !tbaa !11
  %912 = fpext float %911 to double
  store double %912, ptr %16, align 8
  store i32 1, ptr %54, align 4
  br label %913

913:                                              ; preds = %910, %612, %606, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 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
  %914 = load double, ptr %16, align 8
  ret double %914
}

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

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

declare i32 @xerbla_(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 @cgbtrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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 = !{!14, !12, i64 4}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

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

27:                                               ; preds = %15
  %28 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not361 = icmp eq i64 %28, 0
  br i1 %.not361, label %29, label %31

29:                                               ; preds = %27
  %30 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not362 = icmp eq i64 %30, 0
  br i1 %.not362, label %.thread.sink.split, label %31

31:                                               ; preds = %29, %27, %15
  %32 = load i64, ptr %1, align 8, !tbaa !5
  %33 = icmp slt i64 %32, 0
  br i1 %33, label %.thread.sink.split, label %34

34:                                               ; preds = %31
  %35 = load i64, ptr %2, align 8, !tbaa !5
  %or.cond = icmp ult i64 %35, %32
  br i1 %or.cond, label %36, label %.thread.sink.split

36:                                               ; preds = %34
  %37 = load i64, ptr %3, align 8, !tbaa !5
  %or.cond387 = icmp ult i64 %37, %32
  br i1 %or.cond387, label %38, label %.thread.sink.split

38:                                               ; preds = %36
  %39 = load i64, ptr %5, align 8, !tbaa !5
  %40 = add nuw nsw i64 %37, %35
  %.not365 = icmp sgt i64 %39, %40
  br i1 %.not365, label %41, label %.thread.sink.split

41:                                               ; preds = %38
  %42 = load i64, ptr %7, align 8, !tbaa !5
  %43 = shl nuw i64 %35, 1
  %44 = add nsw i64 %37, %43
  %.not366 = icmp sgt i64 %42, %44
  br i1 %.not366, label %45, label %.thread.sink.split

45:                                               ; preds = %41
  %.pr = load i64, ptr %11, align 8, !tbaa !5
  %.not367 = icmp eq i64 %.pr, 0
  br i1 %.not367, label %49, label %.thread

.thread.sink.split:                               ; preds = %41, %38, %36, %34, %31, %29
  %.sink = phi i64 [ -1, %29 ], [ -2, %31 ], [ -3, %34 ], [ -4, %36 ], [ -6, %38 ], [ -8, %41 ]
  store i64 %.sink, ptr %11, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %45
  %46 = phi i64 [ %.pr, %45 ], [ %.sink, %.thread.sink.split ]
  %47 = sub nsw i64 0, %46
  store i64 %47, ptr %16, align 8, !tbaa !5
  %48 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %16) #4
  br label %318

49:                                               ; preds = %45
  %50 = add nuw nsw i64 %37, 1
  %51 = add nuw nsw i64 %35, 1
  br i1 %.not, label %.lr.ph430, label %.lr.ph412

.lr.ph412:                                        ; preds = %49, %.loopexit397
  %.0331411 = phi float [ %109, %.loopexit397 ], [ 0.000000e+00, %49 ]
  %.0339409 = phi i64 [ %110, %.loopexit397 ], [ 1, %49 ]
  %52 = load i64, ptr %10, align 8, !tbaa !5
  %.not382 = icmp eq i64 %52, 0
  %53 = load i64, ptr %2, align 8, !tbaa !5
  %54 = sub nsw i64 %.0339409, %53
  %55 = load i64, ptr %3, align 8, !tbaa !5
  %56 = add nsw i64 %55, %.0339409
  %57 = load i64, ptr %1, align 8, !tbaa !5
  %.388 = tail call i64 @llvm.smin.i64(i64 %56, i64 %57)
  %58 = tail call i64 @llvm.smax.i64(i64 %54, i64 1)
  %.not384403 = icmp sgt i64 %58, %.388
  br i1 %.not382, label %85, label %59

59:                                               ; preds = %.lr.ph412
  br i1 %.not384403, label %.loopexit397, label %.lr.ph

.lr.ph:                                           ; preds = %59
  %60 = add nsw i64 %.0339409, %50
  br label %61

61:                                               ; preds = %.lr.ph, %61
  %.0332402 = phi float [ 0.000000e+00, %.lr.ph ], [ %83, %61 ]
  %.0335401 = phi i64 [ %58, %.lr.ph ], [ %84, %61 ]
  %62 = sub i64 %60, %.0335401
  %63 = mul nsw i64 %.0335401, %20
  %64 = getelementptr %struct.complex, ptr %22, i64 %62
  %65 = getelementptr %struct.complex, ptr %64, i64 %63
  %66 = load float, ptr %65, align 4, !tbaa !9
  %67 = tail call double @r_imag(ptr noundef nonnull %65) #4
  %68 = fptrunc double %67 to float
  %69 = insertelement <2 x float> poison, float %66, i64 0
  %70 = insertelement <2 x float> %69, float %68, i64 1
  %71 = fcmp oge <2 x float> %70, zeroinitializer
  %72 = fneg <2 x float> %70
  %73 = select <2 x i1> %71, <2 x float> %70, <2 x float> %72
  %74 = fpext <2 x float> %73 to <2 x double>
  %shift = shufflevector <2 x double> %74, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %75 = fadd <2 x double> %shift, %74
  %76 = extractelement <2 x double> %75, i64 0
  %77 = getelementptr inbounds float, ptr %23, i64 %.0335401
  %78 = load float, ptr %77, align 4, !tbaa !12
  %79 = fpext float %78 to double
  %80 = fdiv double %76, %79
  %81 = fpext float %.0332402 to double
  %82 = fadd double %80, %81
  %83 = fptrunc double %82 to float
  %84 = add nuw nsw i64 %.0335401, 1
  %.not386.not = icmp slt i64 %.0335401, %.388
  br i1 %.not386.not, label %61, label %.loopexit397, !llvm.loop !13

85:                                               ; preds = %.lr.ph412
  br i1 %.not384403, label %.loopexit397, label %.lr.ph406

.lr.ph406:                                        ; preds = %85
  %86 = add nsw i64 %.0339409, %50
  br label %87

87:                                               ; preds = %.lr.ph406, %87
  %.1333405 = phi float [ 0.000000e+00, %.lr.ph406 ], [ %105, %87 ]
  %.1336404 = phi i64 [ %58, %.lr.ph406 ], [ %106, %87 ]
  %88 = sub i64 %86, %.1336404
  %89 = mul nsw i64 %.1336404, %20
  %90 = getelementptr %struct.complex, ptr %22, i64 %88
  %91 = getelementptr %struct.complex, ptr %90, i64 %89
  %92 = load float, ptr %91, align 4, !tbaa !9
  %93 = tail call double @r_imag(ptr noundef nonnull %91) #4
  %94 = fptrunc double %93 to float
  %95 = insertelement <2 x float> poison, float %92, i64 0
  %96 = insertelement <2 x float> %95, float %94, i64 1
  %97 = fcmp oge <2 x float> %96, zeroinitializer
  %98 = fneg <2 x float> %96
  %99 = select <2 x i1> %97, <2 x float> %96, <2 x float> %98
  %100 = fpext <2 x float> %99 to <2 x double>
  %shift555 = shufflevector <2 x double> %100, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %101 = fadd <2 x double> %shift555, %100
  %102 = extractelement <2 x double> %101, i64 0
  %103 = fpext float %.1333405 to double
  %104 = fadd double %102, %103
  %105 = fptrunc double %104 to float
  %106 = add nuw nsw i64 %.1336404, 1
  %.not384.not = icmp slt i64 %.1336404, %.388
  br i1 %.not384.not, label %87, label %.loopexit397, !llvm.loop !15

.loopexit397:                                     ; preds = %61, %87, %59, %85
  %.2334 = phi float [ 0.000000e+00, %85 ], [ 0.000000e+00, %59 ], [ %105, %87 ], [ %83, %61 ]
  %107 = getelementptr inbounds float, ptr %25, i64 %.0339409
  store float %.2334, ptr %107, align 4, !tbaa !12
  %108 = fcmp oge float %.0331411, %.2334
  %109 = select i1 %108, float %.0331411, float %.2334
  %110 = add nuw i64 %.0339409, 1
  %exitcond.not = icmp eq i64 %.0339409, %32
  br i1 %exitcond.not, label %.loopexit396, label %.lr.ph412, !llvm.loop !16

.lr.ph430:                                        ; preds = %49, %.loopexit394
  %.1429 = phi float [ %164, %.loopexit394 ], [ 0.000000e+00, %49 ]
  %.1340427 = phi i64 [ %165, %.loopexit394 ], [ 1, %49 ]
  %111 = load i64, ptr %10, align 8, !tbaa !5
  %.not369 = icmp eq i64 %111, 0
  %112 = load i64, ptr %2, align 8, !tbaa !5
  %113 = sub nsw i64 %.1340427, %112
  %114 = load i64, ptr %3, align 8, !tbaa !5
  %115 = add nsw i64 %114, %.1340427
  %116 = load i64, ptr %1, align 8, !tbaa !5
  %.390 = tail call i64 @llvm.smin.i64(i64 %115, i64 %116)
  %117 = tail call i64 @llvm.smax.i64(i64 %113, i64 1)
  %.not371419 = icmp sgt i64 %117, %.390
  br i1 %.not369, label %142, label %118

118:                                              ; preds = %.lr.ph430
  br i1 %.not371419, label %.loopexit394, label %.lr.ph417

.lr.ph417:                                        ; preds = %118
  %119 = sub nsw i64 %51, %.1340427
  %120 = mul nsw i64 %.1340427, %20
  %121 = getelementptr %struct.complex, ptr %22, i64 %119
  %invariant.gep = getelementptr %struct.complex, ptr %121, i64 %120
  br label %122

122:                                              ; preds = %.lr.ph417, %122
  %.3416 = phi float [ 0.000000e+00, %.lr.ph417 ], [ %140, %122 ]
  %.2337415 = phi i64 [ %117, %.lr.ph417 ], [ %141, %122 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.2337415
  %123 = load float, ptr %gep, align 4, !tbaa !9
  %124 = tail call double @r_imag(ptr noundef nonnull %gep) #4
  %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>
  %shift556 = shufflevector <2 x double> %131, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %132 = fadd <2 x double> %shift556, %131
  %133 = extractelement <2 x double> %132, i64 0
  %134 = getelementptr inbounds float, ptr %23, i64 %.2337415
  %135 = load float, ptr %134, align 4, !tbaa !12
  %136 = fpext float %135 to double
  %137 = fdiv double %133, %136
  %138 = fpext float %.3416 to double
  %139 = fadd double %137, %138
  %140 = fptrunc double %139 to float
  %141 = add nuw nsw i64 %.2337415, 1
  %.not373.not = icmp slt i64 %.2337415, %.390
  br i1 %.not373.not, label %122, label %.loopexit394, !llvm.loop !17

142:                                              ; preds = %.lr.ph430
  br i1 %.not371419, label %.loopexit394, label %.lr.ph422

.lr.ph422:                                        ; preds = %142
  %143 = sub nsw i64 %51, %.1340427
  %144 = mul nsw i64 %.1340427, %20
  %145 = getelementptr %struct.complex, ptr %22, i64 %143
  %invariant.gep424 = getelementptr %struct.complex, ptr %145, i64 %144
  br label %146

146:                                              ; preds = %.lr.ph422, %146
  %.4421 = phi float [ 0.000000e+00, %.lr.ph422 ], [ %160, %146 ]
  %.3338420 = phi i64 [ %117, %.lr.ph422 ], [ %161, %146 ]
  %gep425 = getelementptr %struct.complex, ptr %invariant.gep424, i64 %.3338420
  %147 = load float, ptr %gep425, align 4, !tbaa !9
  %148 = tail call double @r_imag(ptr noundef nonnull %gep425) #4
  %149 = fptrunc double %148 to float
  %150 = insertelement <2 x float> poison, float %147, i64 0
  %151 = insertelement <2 x float> %150, float %149, i64 1
  %152 = fcmp oge <2 x float> %151, zeroinitializer
  %153 = fneg <2 x float> %151
  %154 = select <2 x i1> %152, <2 x float> %151, <2 x float> %153
  %155 = fpext <2 x float> %154 to <2 x double>
  %shift557 = shufflevector <2 x double> %155, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %156 = fadd <2 x double> %shift557, %155
  %157 = extractelement <2 x double> %156, i64 0
  %158 = fpext float %.4421 to double
  %159 = fadd double %157, %158
  %160 = fptrunc double %159 to float
  %161 = add nuw nsw i64 %.3338420, 1
  %.not371.not = icmp slt i64 %.3338420, %.390
  br i1 %.not371.not, label %146, label %.loopexit394, !llvm.loop !18

.loopexit394:                                     ; preds = %122, %146, %118, %142
  %.5 = phi float [ 0.000000e+00, %142 ], [ 0.000000e+00, %118 ], [ %160, %146 ], [ %140, %122 ]
  %162 = getelementptr inbounds float, ptr %25, i64 %.1340427
  store float %.5, ptr %162, align 4, !tbaa !12
  %163 = fcmp oge float %.1429, %.5
  %164 = select i1 %163, float %.1429, float %.5
  %165 = add nuw i64 %.1340427, 1
  %exitcond456.not = icmp eq i64 %.1340427, %32
  br i1 %exitcond456.not, label %.loopexit396, label %.lr.ph430, !llvm.loop !19

.loopexit396:                                     ; preds = %.loopexit397, %.loopexit394
  %.2 = phi float [ %164, %.loopexit394 ], [ %109, %.loopexit397 ]
  %166 = load i64, ptr %1, align 8, !tbaa !5
  %167 = icmp eq i64 %166, 0
  br i1 %167, label %318, label %168

168:                                              ; preds = %.loopexit396
  %169 = fcmp oeq float %.2, 0.000000e+00
  br i1 %169, label %318, label %170

170:                                              ; preds = %168
  store float 0.000000e+00, ptr %19, align 4, !tbaa !12
  store i64 0, ptr %17, align 8, !tbaa !5
  %.str.5..str.4 = select i1 %.not, ptr @.str.5, ptr @.str.4
  %.str.4..str.5 = select i1 %.not, ptr @.str.4, ptr @.str.5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %170
  %171 = phi i64 [ %166, %170 ], [ %.be, %.loopexit.backedge ]
  %172 = getelementptr %struct.complex, ptr %12, i64 %171
  %173 = call i32 @clacn2_(ptr noundef nonnull %1, ptr noundef %172, ptr noundef %12, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %18) #4
  %174 = load i64, ptr %17, align 8, !tbaa !5
  switch i64 %174, label %243 [
    i64 0, label %313
    i64 2, label %175
  ]

175:                                              ; preds = %.loopexit
  %176 = load i64, ptr %1, align 8, !tbaa !5
  %.not379432 = icmp slt i64 %176, 1
  br i1 %.not379432, label %._crit_edge, label %.lr.ph434.preheader

.lr.ph434.preheader:                              ; preds = %175
  %min.iters.check539 = icmp eq i64 %176, 1
  br i1 %min.iters.check539, label %.lr.ph434.preheader562, label %vector.memcheck531

vector.memcheck531:                               ; preds = %.lr.ph434.preheader
  %177 = shl i64 %176, 3
  %scevgep532 = getelementptr i8, ptr %12, i64 %177
  %178 = shl i64 %176, 2
  %scevgep533 = getelementptr i8, ptr %13, i64 %178
  %bound0534 = icmp ugt ptr %scevgep533, %12
  %bound1535 = icmp ugt ptr %scevgep532, %13
  %found.conflict536 = and i1 %bound0534, %bound1535
  br i1 %found.conflict536, label %.lr.ph434.preheader562, label %vector.ph540

vector.ph540:                                     ; preds = %vector.memcheck531
  %n.vec542 = and i64 %176, 9223372036854775806
  %ind.end543 = or i64 %176, 1
  br label %vector.body545

vector.body545:                                   ; preds = %vector.body545, %vector.ph540
  %index546 = phi i64 [ 0, %vector.ph540 ], [ %index.next553, %vector.body545 ]
  %179 = getelementptr float, ptr %13, i64 %index546
  %wide.load548 = load <2 x float>, ptr %179, align 4, !tbaa !12, !alias.scope !20
  %180 = getelementptr %struct.complex, ptr %12, i64 %index546
  %181 = load <4 x float>, ptr %180, align 4, !tbaa !12
  %182 = shufflevector <2 x float> %wide.load548, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec552 = fmul <4 x float> %182, %181
  store <4 x float> %interleaved.vec552, ptr %180, align 4, !tbaa !12
  %index.next553 = add nuw i64 %index546, 2
  %183 = icmp eq i64 %index.next553, %n.vec542
  br i1 %183, label %middle.block537, label %vector.body545, !llvm.loop !23

middle.block537:                                  ; preds = %vector.body545
  %cmp.n554 = icmp eq i64 %176, %n.vec542
  br i1 %cmp.n554, label %._crit_edge, label %.lr.ph434.preheader562

.lr.ph434.preheader562:                           ; preds = %middle.block537, %vector.memcheck531, %.lr.ph434.preheader
  %.2341433.ph = phi i64 [ 1, %vector.memcheck531 ], [ 1, %.lr.ph434.preheader ], [ %ind.end543, %middle.block537 ]
  %xtraiter = and i64 %176, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph434.prol.loopexit, label %.lr.ph434.prol

.lr.ph434.prol:                                   ; preds = %.lr.ph434.preheader562
  %184 = getelementptr inbounds float, ptr %25, i64 %.2341433.ph
  %185 = load float, ptr %184, align 4, !tbaa !12
  %186 = getelementptr inbounds %struct.complex, ptr %24, i64 %.2341433.ph
  %187 = load <2 x float>, ptr %186, align 4, !tbaa !12
  %188 = insertelement <2 x float> poison, float %185, i64 0
  %189 = shufflevector <2 x float> %188, <2 x float> poison, <2 x i32> zeroinitializer
  %190 = fmul <2 x float> %189, %187
  store <2 x float> %190, ptr %186, align 4, !tbaa !12
  %191 = add nuw i64 %.2341433.ph, 1
  br label %.lr.ph434.prol.loopexit

.lr.ph434.prol.loopexit:                          ; preds = %.lr.ph434.prol, %.lr.ph434.preheader562
  %.2341433.unr = phi i64 [ %.2341433.ph, %.lr.ph434.preheader562 ], [ %191, %.lr.ph434.prol ]
  %192 = icmp eq i64 %176, %.2341433.ph
  br i1 %192, label %._crit_edge, label %.lr.ph434

.lr.ph434:                                        ; preds = %.lr.ph434.prol.loopexit, %.lr.ph434
  %.2341433 = phi i64 [ %208, %.lr.ph434 ], [ %.2341433.unr, %.lr.ph434.prol.loopexit ]
  %193 = getelementptr inbounds float, ptr %25, i64 %.2341433
  %194 = load float, ptr %193, align 4, !tbaa !12
  %195 = getelementptr inbounds %struct.complex, ptr %24, i64 %.2341433
  %196 = load <2 x float>, ptr %195, align 4, !tbaa !12
  %197 = insertelement <2 x float> poison, float %194, i64 0
  %198 = shufflevector <2 x float> %197, <2 x float> poison, <2 x i32> zeroinitializer
  %199 = fmul <2 x float> %198, %196
  store <2 x float> %199, ptr %195, align 4, !tbaa !12
  %200 = add nuw i64 %.2341433, 1
  %201 = getelementptr float, ptr %13, i64 %.2341433
  %202 = load float, ptr %201, align 4, !tbaa !12
  %203 = getelementptr %struct.complex, ptr %12, i64 %.2341433
  %204 = load <2 x float>, ptr %203, align 4, !tbaa !12
  %205 = insertelement <2 x float> poison, float %202, i64 0
  %206 = shufflevector <2 x float> %205, <2 x float> poison, <2 x i32> zeroinitializer
  %207 = fmul <2 x float> %206, %204
  store <2 x float> %207, ptr %203, align 4, !tbaa !12
  %208 = add nuw i64 %.2341433, 2
  %exitcond457.not.1 = icmp eq i64 %200, %176
  br i1 %exitcond457.not.1, label %._crit_edge, label %.lr.ph434, !llvm.loop !26

._crit_edge:                                      ; preds = %.lr.ph434.prol.loopexit, %.lr.ph434, %middle.block537, %175
  %209 = call i32 @cgbtrs_(ptr noundef nonnull %.str.5..str.4, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %12, ptr noundef nonnull %1, ptr noundef nonnull %11) #4
  %210 = load i64, ptr %10, align 8, !tbaa !5
  %.not380 = icmp eq i64 %210, 0
  %.pre.pre = load i64, ptr %1, align 8, !tbaa !5
  %.not381435 = icmp slt i64 %.pre.pre, 1
  %or.cond471 = select i1 %.not380, i1 true, i1 %.not381435
  br i1 %or.cond471, label %.loopexit.backedge, label %.lr.ph438.preheader

.lr.ph438.preheader:                              ; preds = %._crit_edge
  %min.iters.check515 = icmp ult i64 %.pre.pre, 2
  br i1 %min.iters.check515, label %.lr.ph438.preheader560, label %vector.memcheck507

vector.memcheck507:                               ; preds = %.lr.ph438.preheader
  %211 = shl i64 %.pre.pre, 3
  %scevgep508 = getelementptr i8, ptr %12, i64 %211
  %212 = shl i64 %.pre.pre, 2
  %scevgep509 = getelementptr i8, ptr %9, i64 %212
  %bound0510 = icmp ugt ptr %scevgep509, %12
  %bound1511 = icmp ugt ptr %scevgep508, %9
  %found.conflict512 = and i1 %bound0510, %bound1511
  br i1 %found.conflict512, label %.lr.ph438.preheader560, label %vector.ph516

vector.ph516:                                     ; preds = %vector.memcheck507
  %n.vec518 = and i64 %.pre.pre, 9223372036854775806
  %ind.end519 = or i64 %.pre.pre, 1
  br label %vector.body521

vector.body521:                                   ; preds = %vector.body521, %vector.ph516
  %index522 = phi i64 [ 0, %vector.ph516 ], [ %index.next529, %vector.body521 ]
  %213 = getelementptr float, ptr %9, i64 %index522
  %wide.load524 = load <2 x float>, ptr %213, align 4, !tbaa !12, !alias.scope !27
  %214 = getelementptr %struct.complex, ptr %12, i64 %index522
  %215 = load <4 x float>, ptr %214, align 4, !tbaa !12
  %216 = shufflevector <2 x float> %wide.load524, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec528 = fmul <4 x float> %216, %215
  store <4 x float> %interleaved.vec528, ptr %214, align 4, !tbaa !12
  %index.next529 = add nuw i64 %index522, 2
  %217 = icmp eq i64 %index.next529, %n.vec518
  br i1 %217, label %middle.block513, label %vector.body521, !llvm.loop !30

middle.block513:                                  ; preds = %vector.body521
  %cmp.n530 = icmp eq i64 %.pre.pre, %n.vec518
  br i1 %cmp.n530, label %.loopexit.backedge, label %.lr.ph438.preheader560

.loopexit.backedge:                               ; preds = %.lr.ph438.prol.loopexit, %.lr.ph438, %.lr.ph446.prol.loopexit, %.lr.ph446, %middle.block513, %middle.block, %.loopexit392, %._crit_edge
  %.be = phi i64 [ %280, %.loopexit392 ], [ %.pre.pre, %._crit_edge ], [ %280, %middle.block ], [ %.pre.pre, %middle.block513 ], [ %280, %.lr.ph446 ], [ %280, %.lr.ph446.prol.loopexit ], [ %.pre.pre, %.lr.ph438 ], [ %.pre.pre, %.lr.ph438.prol.loopexit ]
  br label %.loopexit

.lr.ph438.preheader560:                           ; preds = %middle.block513, %vector.memcheck507, %.lr.ph438.preheader
  %.3342436.ph = phi i64 [ 1, %vector.memcheck507 ], [ 1, %.lr.ph438.preheader ], [ %ind.end519, %middle.block513 ]
  %xtraiter571 = and i64 %.pre.pre, 1
  %lcmp.mod572.not = icmp eq i64 %xtraiter571, 0
  br i1 %lcmp.mod572.not, label %.lr.ph438.prol.loopexit, label %.lr.ph438.prol

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

.lr.ph438.prol.loopexit:                          ; preds = %.lr.ph438.prol, %.lr.ph438.preheader560
  %.3342436.unr = phi i64 [ %.3342436.ph, %.lr.ph438.preheader560 ], [ %225, %.lr.ph438.prol ]
  %226 = icmp eq i64 %.pre.pre, %.3342436.ph
  br i1 %226, label %.loopexit.backedge, label %.lr.ph438

.lr.ph438:                                        ; preds = %.lr.ph438.prol.loopexit, %.lr.ph438
  %.3342436 = phi i64 [ %242, %.lr.ph438 ], [ %.3342436.unr, %.lr.ph438.prol.loopexit ]
  %227 = getelementptr inbounds float, ptr %23, i64 %.3342436
  %228 = load float, ptr %227, align 4, !tbaa !12
  %229 = getelementptr inbounds %struct.complex, ptr %24, i64 %.3342436
  %230 = load <2 x float>, ptr %229, align 4, !tbaa !12
  %231 = insertelement <2 x float> poison, float %228, i64 0
  %232 = shufflevector <2 x float> %231, <2 x float> poison, <2 x i32> zeroinitializer
  %233 = fmul <2 x float> %232, %230
  store <2 x float> %233, ptr %229, align 4, !tbaa !12
  %234 = add nuw i64 %.3342436, 1
  %235 = getelementptr float, ptr %9, i64 %.3342436
  %236 = load float, ptr %235, align 4, !tbaa !12
  %237 = getelementptr %struct.complex, ptr %12, i64 %.3342436
  %238 = load <2 x float>, ptr %237, align 4, !tbaa !12
  %239 = insertelement <2 x float> poison, float %236, i64 0
  %240 = shufflevector <2 x float> %239, <2 x float> poison, <2 x i32> zeroinitializer
  %241 = fmul <2 x float> %240, %238
  store <2 x float> %241, ptr %237, align 4, !tbaa !12
  %242 = add nuw i64 %.3342436, 2
  %exitcond458.not.1 = icmp eq i64 %234, %.pre.pre
  br i1 %exitcond458.not.1, label %.loopexit.backedge, label %.lr.ph438, !llvm.loop !31

243:                                              ; preds = %.loopexit
  %244 = load i64, ptr %10, align 8, !tbaa !5
  %.not376 = icmp eq i64 %244, 0
  br i1 %.not376, label %.loopexit392, label %245

245:                                              ; preds = %243
  %246 = load i64, ptr %1, align 8, !tbaa !5
  %.not377439 = icmp slt i64 %246, 1
  br i1 %.not377439, label %.loopexit392, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %245
  %min.iters.check491 = icmp eq i64 %246, 1
  br i1 %min.iters.check491, label %.lr.ph442.preheader559, label %vector.memcheck483

vector.memcheck483:                               ; preds = %.lr.ph442.preheader
  %247 = shl i64 %246, 3
  %scevgep484 = getelementptr i8, ptr %12, i64 %247
  %248 = shl i64 %246, 2
  %scevgep485 = getelementptr i8, ptr %9, i64 %248
  %bound0486 = icmp ugt ptr %scevgep485, %12
  %bound1487 = icmp ugt ptr %scevgep484, %9
  %found.conflict488 = and i1 %bound0486, %bound1487
  br i1 %found.conflict488, label %.lr.ph442.preheader559, label %vector.ph492

vector.ph492:                                     ; preds = %vector.memcheck483
  %n.vec494 = and i64 %246, 9223372036854775806
  %ind.end495 = or i64 %246, 1
  br label %vector.body497

vector.body497:                                   ; preds = %vector.body497, %vector.ph492
  %index498 = phi i64 [ 0, %vector.ph492 ], [ %index.next505, %vector.body497 ]
  %249 = getelementptr float, ptr %9, i64 %index498
  %wide.load500 = load <2 x float>, ptr %249, align 4, !tbaa !12, !alias.scope !32
  %250 = getelementptr %struct.complex, ptr %12, i64 %index498
  %251 = load <4 x float>, ptr %250, align 4, !tbaa !12
  %252 = shufflevector <2 x float> %wide.load500, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec504 = fmul <4 x float> %252, %251
  store <4 x float> %interleaved.vec504, ptr %250, align 4, !tbaa !12
  %index.next505 = add nuw i64 %index498, 2
  %253 = icmp eq i64 %index.next505, %n.vec494
  br i1 %253, label %middle.block489, label %vector.body497, !llvm.loop !35

middle.block489:                                  ; preds = %vector.body497
  %cmp.n506 = icmp eq i64 %246, %n.vec494
  br i1 %cmp.n506, label %.loopexit392, label %.lr.ph442.preheader559

.lr.ph442.preheader559:                           ; preds = %middle.block489, %vector.memcheck483, %.lr.ph442.preheader
  %.4343440.ph = phi i64 [ 1, %vector.memcheck483 ], [ 1, %.lr.ph442.preheader ], [ %ind.end495, %middle.block489 ]
  %xtraiter573 = and i64 %246, 1
  %lcmp.mod574.not = icmp eq i64 %xtraiter573, 0
  br i1 %lcmp.mod574.not, label %.lr.ph442.prol.loopexit, label %.lr.ph442.prol

.lr.ph442.prol:                                   ; preds = %.lr.ph442.preheader559
  %254 = getelementptr inbounds float, ptr %23, i64 %.4343440.ph
  %255 = load float, ptr %254, align 4, !tbaa !12
  %256 = getelementptr inbounds %struct.complex, ptr %24, i64 %.4343440.ph
  %257 = load <2 x float>, ptr %256, align 4, !tbaa !12
  %258 = insertelement <2 x float> poison, float %255, i64 0
  %259 = shufflevector <2 x float> %258, <2 x float> poison, <2 x i32> zeroinitializer
  %260 = fmul <2 x float> %259, %257
  store <2 x float> %260, ptr %256, align 4, !tbaa !12
  %261 = add nuw i64 %.4343440.ph, 1
  br label %.lr.ph442.prol.loopexit

.lr.ph442.prol.loopexit:                          ; preds = %.lr.ph442.prol, %.lr.ph442.preheader559
  %.4343440.unr = phi i64 [ %.4343440.ph, %.lr.ph442.preheader559 ], [ %261, %.lr.ph442.prol ]
  %262 = icmp eq i64 %246, %.4343440.ph
  br i1 %262, label %.loopexit392, label %.lr.ph442

.lr.ph442:                                        ; preds = %.lr.ph442.prol.loopexit, %.lr.ph442
  %.4343440 = phi i64 [ %278, %.lr.ph442 ], [ %.4343440.unr, %.lr.ph442.prol.loopexit ]
  %263 = getelementptr inbounds float, ptr %23, i64 %.4343440
  %264 = load float, ptr %263, align 4, !tbaa !12
  %265 = getelementptr inbounds %struct.complex, ptr %24, i64 %.4343440
  %266 = load <2 x float>, ptr %265, align 4, !tbaa !12
  %267 = insertelement <2 x float> poison, float %264, i64 0
  %268 = shufflevector <2 x float> %267, <2 x float> poison, <2 x i32> zeroinitializer
  %269 = fmul <2 x float> %268, %266
  store <2 x float> %269, ptr %265, align 4, !tbaa !12
  %270 = add nuw i64 %.4343440, 1
  %271 = getelementptr float, ptr %9, i64 %.4343440
  %272 = load float, ptr %271, align 4, !tbaa !12
  %273 = getelementptr %struct.complex, ptr %12, i64 %.4343440
  %274 = load <2 x float>, ptr %273, align 4, !tbaa !12
  %275 = insertelement <2 x float> poison, float %272, i64 0
  %276 = shufflevector <2 x float> %275, <2 x float> poison, <2 x i32> zeroinitializer
  %277 = fmul <2 x float> %276, %274
  store <2 x float> %277, ptr %273, align 4, !tbaa !12
  %278 = add nuw i64 %.4343440, 2
  %exitcond459.not.1 = icmp eq i64 %270, %246
  br i1 %exitcond459.not.1, label %.loopexit392, label %.lr.ph442, !llvm.loop !36

.loopexit392:                                     ; preds = %.lr.ph442.prol.loopexit, %.lr.ph442, %middle.block489, %245, %243
  %279 = call i32 @cgbtrs_(ptr noundef nonnull %.str.4..str.5, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %12, ptr noundef nonnull %1, ptr noundef nonnull %11) #4
  %280 = load i64, ptr %1, align 8, !tbaa !5
  %.not378443 = icmp slt i64 %280, 1
  br i1 %.not378443, label %.loopexit.backedge, label %.lr.ph446.preheader

.lr.ph446.preheader:                              ; preds = %.loopexit392
  %min.iters.check = icmp eq i64 %280, 1
  br i1 %min.iters.check, label %.lr.ph446.preheader558, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph446.preheader
  %281 = shl i64 %280, 3
  %scevgep = getelementptr i8, ptr %12, i64 %281
  %282 = shl i64 %280, 2
  %scevgep481 = getelementptr i8, ptr %13, i64 %282
  %bound0 = icmp ugt ptr %scevgep481, %12
  %bound1 = icmp ugt ptr %scevgep, %13
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph446.preheader558, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %283 = getelementptr float, ptr %13, i64 %index
  %wide.load = load <2 x float>, ptr %283, align 4, !tbaa !12, !alias.scope !37
  %284 = getelementptr %struct.complex, ptr %12, i64 %index
  %285 = load <4 x float>, ptr %284, align 4, !tbaa !12
  %286 = 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> %286, %285
  store <4 x float> %interleaved.vec, ptr %284, align 4, !tbaa !12
  %index.next = add nuw i64 %index, 2
  %287 = icmp eq i64 %index.next, %n.vec
  br i1 %287, label %middle.block, label %vector.body, !llvm.loop !40

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %280, %n.vec
  br i1 %cmp.n, label %.loopexit.backedge, label %.lr.ph446.preheader558

.lr.ph446.preheader558:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph446.preheader
  %.5344444.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph446.preheader ], [ %ind.end, %middle.block ]
  %xtraiter575 = and i64 %280, 1
  %lcmp.mod576.not = icmp eq i64 %xtraiter575, 0
  br i1 %lcmp.mod576.not, label %.lr.ph446.prol.loopexit, label %.lr.ph446.prol

.lr.ph446.prol:                                   ; preds = %.lr.ph446.preheader558
  %288 = getelementptr inbounds float, ptr %25, i64 %.5344444.ph
  %289 = load float, ptr %288, align 4, !tbaa !12
  %290 = getelementptr inbounds %struct.complex, ptr %24, i64 %.5344444.ph
  %291 = load <2 x float>, ptr %290, align 4, !tbaa !12
  %292 = insertelement <2 x float> poison, float %289, i64 0
  %293 = shufflevector <2 x float> %292, <2 x float> poison, <2 x i32> zeroinitializer
  %294 = fmul <2 x float> %293, %291
  store <2 x float> %294, ptr %290, align 4, !tbaa !12
  %295 = add nuw i64 %.5344444.ph, 1
  br label %.lr.ph446.prol.loopexit

.lr.ph446.prol.loopexit:                          ; preds = %.lr.ph446.prol, %.lr.ph446.preheader558
  %.5344444.unr = phi i64 [ %.5344444.ph, %.lr.ph446.preheader558 ], [ %295, %.lr.ph446.prol ]
  %296 = icmp eq i64 %280, %.5344444.ph
  br i1 %296, label %.loopexit.backedge, label %.lr.ph446

.lr.ph446:                                        ; preds = %.lr.ph446.prol.loopexit, %.lr.ph446
  %.5344444 = phi i64 [ %312, %.lr.ph446 ], [ %.5344444.unr, %.lr.ph446.prol.loopexit ]
  %297 = getelementptr inbounds float, ptr %25, i64 %.5344444
  %298 = load float, ptr %297, align 4, !tbaa !12
  %299 = getelementptr inbounds %struct.complex, ptr %24, i64 %.5344444
  %300 = load <2 x float>, ptr %299, align 4, !tbaa !12
  %301 = insertelement <2 x float> poison, float %298, i64 0
  %302 = shufflevector <2 x float> %301, <2 x float> poison, <2 x i32> zeroinitializer
  %303 = fmul <2 x float> %302, %300
  store <2 x float> %303, ptr %299, align 4, !tbaa !12
  %304 = add nuw i64 %.5344444, 1
  %305 = getelementptr float, ptr %13, i64 %.5344444
  %306 = load float, ptr %305, align 4, !tbaa !12
  %307 = getelementptr %struct.complex, ptr %12, i64 %.5344444
  %308 = load <2 x float>, ptr %307, align 4, !tbaa !12
  %309 = insertelement <2 x float> poison, float %306, i64 0
  %310 = shufflevector <2 x float> %309, <2 x float> poison, <2 x i32> zeroinitializer
  %311 = fmul <2 x float> %310, %308
  store <2 x float> %311, ptr %307, align 4, !tbaa !12
  %312 = add nuw i64 %.5344444, 2
  %exitcond460.not.1 = icmp eq i64 %304, %280
  br i1 %exitcond460.not.1, label %.loopexit.backedge, label %.lr.ph446, !llvm.loop !41

313:                                              ; preds = %.loopexit
  %314 = load float, ptr %19, align 4, !tbaa !12
  %315 = fcmp une float %314, 0.000000e+00
  %316 = fdiv float 1.000000e+00, %314
  %317 = fpext float %316 to double
  %.0345 = select i1 %315, double %317, double 0.000000e+00
  br label %318

318:                                              ; preds = %168, %.loopexit396, %313, %.thread
  %.0 = phi double [ 0.000000e+00, %.thread ], [ %.0345, %313 ], [ 1.000000e+00, %.loopexit396 ], [ 0.000000e+00, %168 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  ret double %.0
}

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

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

declare i32 @xerbla_(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 @cgbtrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = distinct !{!23, !14, !24, !25}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !14, !24}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = distinct !{!30, !14, !24, !25}
!31 = distinct !{!31, !14, !24}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !14, !24, !25}
!36 = distinct !{!36, !14, !24}
!37 = !{!38}
!38 = distinct !{!38, !39}
!39 = distinct !{!39, !"LVerDomain"}
!40 = distinct !{!40, !14, !24, !25}
!41 = distinct !{!41, !14, !24}


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