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

; 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @cgebal_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %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 float, align 4
  %44 = alloca i64, align 8
  %45 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  %46 = load ptr, ptr %13, align 8, !tbaa !5
  %47 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %47, ptr %18, align 8, !tbaa !9
  %48 = load i64, ptr %18, align 8, !tbaa !9
  %49 = add nsw i64 1, %48
  store i64 %49, ptr %19, align 8, !tbaa !9
  %50 = load i64, ptr %19, align 8, !tbaa !9
  %51 = load ptr, ptr %12, align 8, !tbaa !5
  %52 = sub i64 0, %50
  %53 = getelementptr inbounds %struct.complex, ptr %51, i64 %52
  store ptr %53, ptr %12, align 8, !tbaa !5
  %54 = load ptr, ptr %16, align 8, !tbaa !5
  %55 = getelementptr inbounds float, ptr %54, i32 -1
  store ptr %55, ptr %16, align 8, !tbaa !5
  %56 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %56, align 8, !tbaa !9
  %57 = load ptr, ptr %10, align 8, !tbaa !5
  %58 = call i64 @lsame_(ptr noundef %57, ptr noundef @.str)
  %59 = icmp ne i64 %58, 0
  br i1 %59, label %74, label %60

60:                                               ; preds = %8
  %61 = load ptr, ptr %10, align 8, !tbaa !5
  %62 = call i64 @lsame_(ptr noundef %61, ptr noundef @.str.1)
  %63 = icmp ne i64 %62, 0
  br i1 %63, label %74, label %64

64:                                               ; preds = %60
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  %66 = call i64 @lsame_(ptr noundef %65, ptr noundef @.str.2)
  %67 = icmp ne i64 %66, 0
  br i1 %67, label %74, label %68

68:                                               ; preds = %64
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = call i64 @lsame_(ptr noundef %69, ptr noundef @.str.3)
  %71 = icmp ne i64 %70, 0
  br i1 %71, label %74, label %72

72:                                               ; preds = %68
  %73 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %73, align 8, !tbaa !9
  br label %97

74:                                               ; preds = %68, %64, %60, %8
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  %77 = icmp slt i64 %76, 0
  br i1 %77, label %78, label %80

78:                                               ; preds = %74
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %79, align 8, !tbaa !9
  br label %96

80:                                               ; preds = %74
  %81 = load ptr, ptr %13, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  %83 = load ptr, ptr %11, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp sge i64 1, %84
  br i1 %85, label %86, label %87

86:                                               ; preds = %80
  br label %90

87:                                               ; preds = %80
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %87, %86
  %91 = phi i64 [ 1, %86 ], [ %89, %87 ]
  %92 = icmp slt i64 %82, %91
  br i1 %92, label %93, label %95

93:                                               ; preds = %90
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %94, align 8, !tbaa !9
  br label %95

95:                                               ; preds = %93, %90
  br label %96

96:                                               ; preds = %95, %78
  br label %97

97:                                               ; preds = %96, %72
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp ne i64 %99, 0
  br i1 %100, label %101, label %106

101:                                              ; preds = %97
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = sub nsw i64 0, %103
  store i64 %104, ptr %20, align 8, !tbaa !9
  %105 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %45, align 4
  br label %724

106:                                              ; preds = %97
  store i64 1, ptr %30, align 8, !tbaa !9
  %107 = load ptr, ptr %11, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %31, align 8, !tbaa !9
  %109 = load ptr, ptr %11, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  %111 = icmp eq i64 %110, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %106
  br label %719

113:                                              ; preds = %106
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = call i64 @lsame_(ptr noundef %114, ptr noundef @.str)
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %117, label %132

117:                                              ; preds = %113
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  store i64 %119, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %128, %117
  %121 = load i64, ptr %28, align 8, !tbaa !9
  %122 = load i64, ptr %20, align 8, !tbaa !9
  %123 = icmp sle i64 %121, %122
  br i1 %123, label %124, label %131

124:                                              ; preds = %120
  %125 = load ptr, ptr %16, align 8, !tbaa !5
  %126 = load i64, ptr %28, align 8, !tbaa !9
  %127 = getelementptr inbounds float, ptr %125, i64 %126
  store float 1.000000e+00, ptr %127, align 4, !tbaa !11
  br label %128

128:                                              ; preds = %124
  %129 = load i64, ptr %28, align 8, !tbaa !9
  %130 = add nsw i64 %129, 1
  store i64 %130, ptr %28, align 8, !tbaa !9
  br label %120, !llvm.loop !13

131:                                              ; preds = %120
  br label %719

132:                                              ; preds = %113
  %133 = load ptr, ptr %10, align 8, !tbaa !5
  %134 = call i64 @lsame_(ptr noundef %133, ptr noundef @.str.2)
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %136, label %137

136:                                              ; preds = %132
  br label %304

137:                                              ; preds = %132
  br label %196

138:                                              ; preds = %297, %240
  %139 = load i64, ptr %29, align 8, !tbaa !9
  %140 = sitofp i64 %139 to float
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = load i64, ptr %32, align 8, !tbaa !9
  %143 = getelementptr inbounds float, ptr %141, i64 %142
  store float %140, ptr %143, align 4, !tbaa !11
  %144 = load i64, ptr %29, align 8, !tbaa !9
  %145 = load i64, ptr %32, align 8, !tbaa !9
  %146 = icmp eq i64 %144, %145
  br i1 %146, label %147, label %148

147:                                              ; preds = %138
  br label %184

148:                                              ; preds = %138
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = load i64, ptr %29, align 8, !tbaa !9
  %151 = load i64, ptr %18, align 8, !tbaa !9
  %152 = mul nsw i64 %150, %151
  %153 = add nsw i64 %152, 1
  %154 = getelementptr inbounds %struct.complex, ptr %149, i64 %153
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = load i64, ptr %32, align 8, !tbaa !9
  %157 = load i64, ptr %18, align 8, !tbaa !9
  %158 = mul nsw i64 %156, %157
  %159 = add nsw i64 %158, 1
  %160 = getelementptr inbounds %struct.complex, ptr %155, i64 %159
  %161 = call i32 @f2c_cswap(ptr noundef %31, ptr noundef %154, ptr noundef @c__1, ptr noundef %160, ptr noundef @c__1)
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = load i64, ptr %30, align 8, !tbaa !9
  %165 = sub nsw i64 %163, %164
  %166 = add nsw i64 %165, 1
  store i64 %166, ptr %20, align 8, !tbaa !9
  %167 = load ptr, ptr %12, align 8, !tbaa !5
  %168 = load i64, ptr %29, align 8, !tbaa !9
  %169 = load i64, ptr %30, align 8, !tbaa !9
  %170 = load i64, ptr %18, align 8, !tbaa !9
  %171 = mul nsw i64 %169, %170
  %172 = add nsw i64 %168, %171
  %173 = getelementptr inbounds %struct.complex, ptr %167, i64 %172
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = load ptr, ptr %12, align 8, !tbaa !5
  %176 = load i64, ptr %32, align 8, !tbaa !9
  %177 = load i64, ptr %30, align 8, !tbaa !9
  %178 = load i64, ptr %18, align 8, !tbaa !9
  %179 = mul nsw i64 %177, %178
  %180 = add nsw i64 %176, %179
  %181 = getelementptr inbounds %struct.complex, ptr %175, i64 %180
  %182 = load ptr, ptr %13, align 8, !tbaa !5
  %183 = call i32 @f2c_cswap(ptr noundef %20, ptr noundef %173, ptr noundef %174, ptr noundef %181, ptr noundef %182)
  br label %184

184:                                              ; preds = %148, %147
  %185 = load i64, ptr %39, align 8, !tbaa !9
  switch i64 %185, label %188 [
    i64 1, label %186
    i64 2, label %187
  ]

186:                                              ; preds = %184
  br label %189

187:                                              ; preds = %184
  br label %247

188:                                              ; preds = %184
  br label %189

189:                                              ; preds = %188, %186
  %190 = load i64, ptr %31, align 8, !tbaa !9
  %191 = icmp eq i64 %190, 1
  br i1 %191, label %192, label %193

192:                                              ; preds = %189
  br label %719

193:                                              ; preds = %189
  %194 = load i64, ptr %31, align 8, !tbaa !9
  %195 = add nsw i64 %194, -1
  store i64 %195, ptr %31, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %193, %137
  %197 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %197, ptr %29, align 8, !tbaa !9
  br label %198

198:                                              ; preds = %243, %196
  %199 = load i64, ptr %29, align 8, !tbaa !9
  %200 = icmp sge i64 %199, 1
  br i1 %200, label %201, label %246

201:                                              ; preds = %198
  %202 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %202, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %237, %201
  %204 = load i64, ptr %28, align 8, !tbaa !9
  %205 = load i64, ptr %20, align 8, !tbaa !9
  %206 = icmp sle i64 %204, %205
  br i1 %206, label %207, label %240

207:                                              ; preds = %203
  %208 = load i64, ptr %28, align 8, !tbaa !9
  %209 = load i64, ptr %29, align 8, !tbaa !9
  %210 = icmp eq i64 %208, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %207
  br label %236

212:                                              ; preds = %207
  %213 = load i64, ptr %29, align 8, !tbaa !9
  %214 = load i64, ptr %28, align 8, !tbaa !9
  %215 = load i64, ptr %18, align 8, !tbaa !9
  %216 = mul nsw i64 %214, %215
  %217 = add nsw i64 %213, %216
  store i64 %217, ptr %21, align 8, !tbaa !9
  %218 = load ptr, ptr %12, align 8, !tbaa !5
  %219 = load i64, ptr %21, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.complex, ptr %218, i64 %219
  %221 = getelementptr inbounds %struct.complex, ptr %220, i32 0, i32 0
  %222 = load float, ptr %221, align 4, !tbaa !15
  %223 = fcmp une float %222, 0.000000e+00
  br i1 %223, label %234, label %224

224:                                              ; preds = %212
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = load i64, ptr %29, align 8, !tbaa !9
  %227 = load i64, ptr %28, align 8, !tbaa !9
  %228 = load i64, ptr %18, align 8, !tbaa !9
  %229 = mul nsw i64 %227, %228
  %230 = add nsw i64 %226, %229
  %231 = getelementptr inbounds %struct.complex, ptr %225, i64 %230
  %232 = call double @r_imag(ptr noundef %231)
  %233 = fcmp une double %232, 0.000000e+00
  br i1 %233, label %234, label %235

234:                                              ; preds = %224, %212
  br label %242

235:                                              ; preds = %224
  br label %236

236:                                              ; preds = %235, %211
  br label %237

237:                                              ; preds = %236
  %238 = load i64, ptr %28, align 8, !tbaa !9
  %239 = add nsw i64 %238, 1
  store i64 %239, ptr %28, align 8, !tbaa !9
  br label %203, !llvm.loop !17

240:                                              ; preds = %203
  %241 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %241, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %39, align 8, !tbaa !9
  br label %138

242:                                              ; preds = %234
  br label %243

243:                                              ; preds = %242
  %244 = load i64, ptr %29, align 8, !tbaa !9
  %245 = add nsw i64 %244, -1
  store i64 %245, ptr %29, align 8, !tbaa !9
  br label %198, !llvm.loop !18

246:                                              ; preds = %198
  br label %250

247:                                              ; preds = %187
  %248 = load i64, ptr %30, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %30, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %247, %246
  %251 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %251, ptr %20, align 8, !tbaa !9
  %252 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %252, ptr %29, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %300, %250
  %254 = load i64, ptr %29, align 8, !tbaa !9
  %255 = load i64, ptr %20, align 8, !tbaa !9
  %256 = icmp sle i64 %254, %255
  br i1 %256, label %257, label %303

257:                                              ; preds = %253
  %258 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %258, ptr %21, align 8, !tbaa !9
  %259 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %259, ptr %28, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %294, %257
  %261 = load i64, ptr %28, align 8, !tbaa !9
  %262 = load i64, ptr %21, align 8, !tbaa !9
  %263 = icmp sle i64 %261, %262
  br i1 %263, label %264, label %297

264:                                              ; preds = %260
  %265 = load i64, ptr %28, align 8, !tbaa !9
  %266 = load i64, ptr %29, align 8, !tbaa !9
  %267 = icmp eq i64 %265, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %264
  br label %293

269:                                              ; preds = %264
  %270 = load i64, ptr %28, align 8, !tbaa !9
  %271 = load i64, ptr %29, align 8, !tbaa !9
  %272 = load i64, ptr %18, align 8, !tbaa !9
  %273 = mul nsw i64 %271, %272
  %274 = add nsw i64 %270, %273
  store i64 %274, ptr %22, align 8, !tbaa !9
  %275 = load ptr, ptr %12, align 8, !tbaa !5
  %276 = load i64, ptr %22, align 8, !tbaa !9
  %277 = getelementptr inbounds %struct.complex, ptr %275, i64 %276
  %278 = getelementptr inbounds %struct.complex, ptr %277, i32 0, i32 0
  %279 = load float, ptr %278, align 4, !tbaa !15
  %280 = fcmp une float %279, 0.000000e+00
  br i1 %280, label %291, label %281

281:                                              ; preds = %269
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  %283 = load i64, ptr %28, align 8, !tbaa !9
  %284 = load i64, ptr %29, align 8, !tbaa !9
  %285 = load i64, ptr %18, align 8, !tbaa !9
  %286 = mul nsw i64 %284, %285
  %287 = add nsw i64 %283, %286
  %288 = getelementptr inbounds %struct.complex, ptr %282, i64 %287
  %289 = call double @r_imag(ptr noundef %288)
  %290 = fcmp une double %289, 0.000000e+00
  br i1 %290, label %291, label %292

291:                                              ; preds = %281, %269
  br label %299

292:                                              ; preds = %281
  br label %293

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

294:                                              ; preds = %293
  %295 = load i64, ptr %28, align 8, !tbaa !9
  %296 = add nsw i64 %295, 1
  store i64 %296, ptr %28, align 8, !tbaa !9
  br label %260, !llvm.loop !19

297:                                              ; preds = %260
  %298 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %298, ptr %32, align 8, !tbaa !9
  store i64 2, ptr %39, align 8, !tbaa !9
  br label %138

299:                                              ; preds = %291
  br label %300

300:                                              ; preds = %299
  %301 = load i64, ptr %29, align 8, !tbaa !9
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %29, align 8, !tbaa !9
  br label %253, !llvm.loop !20

303:                                              ; preds = %253
  br label %304

304:                                              ; preds = %303, %136
  %305 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %305, ptr %20, align 8, !tbaa !9
  %306 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %306, ptr %28, align 8, !tbaa !9
  br label %307

307:                                              ; preds = %315, %304
  %308 = load i64, ptr %28, align 8, !tbaa !9
  %309 = load i64, ptr %20, align 8, !tbaa !9
  %310 = icmp sle i64 %308, %309
  br i1 %310, label %311, label %318

311:                                              ; preds = %307
  %312 = load ptr, ptr %16, align 8, !tbaa !5
  %313 = load i64, ptr %28, align 8, !tbaa !9
  %314 = getelementptr inbounds float, ptr %312, i64 %313
  store float 1.000000e+00, ptr %314, align 4, !tbaa !11
  br label %315

315:                                              ; preds = %311
  %316 = load i64, ptr %28, align 8, !tbaa !9
  %317 = add nsw i64 %316, 1
  store i64 %317, ptr %28, align 8, !tbaa !9
  br label %307, !llvm.loop !21

318:                                              ; preds = %307
  %319 = load ptr, ptr %10, align 8, !tbaa !5
  %320 = call i64 @lsame_(ptr noundef %319, ptr noundef @.str.1)
  %321 = icmp ne i64 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %318
  br label %719

323:                                              ; preds = %318
  %324 = call double @slamch_(ptr noundef @.str.2)
  %325 = call double @slamch_(ptr noundef @.str.1)
  %326 = fdiv double %324, %325
  %327 = fptrunc double %326 to float
  store float %327, ptr %40, align 4, !tbaa !11
  %328 = load float, ptr %40, align 4, !tbaa !11
  %329 = fdiv float 1.000000e+00, %328
  store float %329, ptr %42, align 4, !tbaa !11
  %330 = load float, ptr %40, align 4, !tbaa !11
  %331 = fmul float %330, 2.000000e+00
  store float %331, ptr %41, align 4, !tbaa !11
  %332 = load float, ptr %41, align 4, !tbaa !11
  %333 = fdiv float 1.000000e+00, %332
  store float %333, ptr %43, align 4, !tbaa !11
  br label %334

334:                                              ; preds = %717, %323
  store i64 0, ptr %44, align 8, !tbaa !9
  %335 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %335, ptr %20, align 8, !tbaa !9
  %336 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %336, ptr %28, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %711, %334
  %338 = load i64, ptr %28, align 8, !tbaa !9
  %339 = load i64, ptr %20, align 8, !tbaa !9
  %340 = icmp sle i64 %338, %339
  br i1 %340, label %341, label %714

341:                                              ; preds = %337
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  store float 0.000000e+00, ptr %33, align 4, !tbaa !11
  %342 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %342, ptr %21, align 8, !tbaa !9
  %343 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %343, ptr %29, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %443, %341
  %345 = load i64, ptr %29, align 8, !tbaa !9
  %346 = load i64, ptr %21, align 8, !tbaa !9
  %347 = icmp sle i64 %345, %346
  br i1 %347, label %348, label %446

348:                                              ; preds = %344
  %349 = load i64, ptr %29, align 8, !tbaa !9
  %350 = load i64, ptr %28, align 8, !tbaa !9
  %351 = icmp eq i64 %349, %350
  br i1 %351, label %352, label %353

352:                                              ; preds = %348
  br label %442

353:                                              ; preds = %348
  %354 = load i64, ptr %29, align 8, !tbaa !9
  %355 = load i64, ptr %28, align 8, !tbaa !9
  %356 = load i64, ptr %18, align 8, !tbaa !9
  %357 = mul nsw i64 %355, %356
  %358 = add nsw i64 %354, %357
  store i64 %358, ptr %22, align 8, !tbaa !9
  %359 = load ptr, ptr %12, align 8, !tbaa !5
  %360 = load i64, ptr %22, align 8, !tbaa !9
  %361 = getelementptr inbounds %struct.complex, ptr %359, i64 %360
  %362 = getelementptr inbounds %struct.complex, ptr %361, i32 0, i32 0
  %363 = load float, ptr %362, align 4, !tbaa !15
  store float %363, ptr %23, align 4, !tbaa !11
  %364 = load float, ptr %23, align 4, !tbaa !11
  %365 = fcmp oge float %364, 0.000000e+00
  br i1 %365, label %366, label %368

366:                                              ; preds = %353
  %367 = load float, ptr %23, align 4, !tbaa !11
  br label %371

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

371:                                              ; preds = %368, %366
  %372 = phi float [ %367, %366 ], [ %370, %368 ]
  %373 = fpext float %372 to double
  %374 = load ptr, ptr %12, align 8, !tbaa !5
  %375 = load i64, ptr %29, align 8, !tbaa !9
  %376 = load i64, ptr %28, align 8, !tbaa !9
  %377 = load i64, ptr %18, align 8, !tbaa !9
  %378 = mul nsw i64 %376, %377
  %379 = add nsw i64 %375, %378
  %380 = getelementptr inbounds %struct.complex, ptr %374, i64 %379
  %381 = call double @r_imag(ptr noundef %380)
  %382 = fptrunc double %381 to float
  store float %382, ptr %24, align 4, !tbaa !11
  %383 = load float, ptr %24, align 4, !tbaa !11
  %384 = fcmp oge float %383, 0.000000e+00
  br i1 %384, label %385, label %387

385:                                              ; preds = %371
  %386 = load float, ptr %24, align 4, !tbaa !11
  br label %390

387:                                              ; preds = %371
  %388 = load float, ptr %24, align 4, !tbaa !11
  %389 = fneg float %388
  br label %390

390:                                              ; preds = %387, %385
  %391 = phi float [ %386, %385 ], [ %389, %387 ]
  %392 = fpext float %391 to double
  %393 = fadd double %373, %392
  %394 = load float, ptr %25, align 4, !tbaa !11
  %395 = fpext float %394 to double
  %396 = fadd double %395, %393
  %397 = fptrunc double %396 to float
  store float %397, ptr %25, align 4, !tbaa !11
  %398 = load i64, ptr %28, align 8, !tbaa !9
  %399 = load i64, ptr %29, align 8, !tbaa !9
  %400 = load i64, ptr %18, align 8, !tbaa !9
  %401 = mul nsw i64 %399, %400
  %402 = add nsw i64 %398, %401
  store i64 %402, ptr %22, align 8, !tbaa !9
  %403 = load ptr, ptr %12, align 8, !tbaa !5
  %404 = load i64, ptr %22, align 8, !tbaa !9
  %405 = getelementptr inbounds %struct.complex, ptr %403, i64 %404
  %406 = getelementptr inbounds %struct.complex, ptr %405, i32 0, i32 0
  %407 = load float, ptr %406, align 4, !tbaa !15
  store float %407, ptr %23, align 4, !tbaa !11
  %408 = load float, ptr %23, align 4, !tbaa !11
  %409 = fcmp oge float %408, 0.000000e+00
  br i1 %409, label %410, label %412

410:                                              ; preds = %390
  %411 = load float, ptr %23, align 4, !tbaa !11
  br label %415

412:                                              ; preds = %390
  %413 = load float, ptr %23, align 4, !tbaa !11
  %414 = fneg float %413
  br label %415

415:                                              ; preds = %412, %410
  %416 = phi float [ %411, %410 ], [ %414, %412 ]
  %417 = fpext float %416 to double
  %418 = load ptr, ptr %12, align 8, !tbaa !5
  %419 = load i64, ptr %28, align 8, !tbaa !9
  %420 = load i64, ptr %29, align 8, !tbaa !9
  %421 = load i64, ptr %18, align 8, !tbaa !9
  %422 = mul nsw i64 %420, %421
  %423 = add nsw i64 %419, %422
  %424 = getelementptr inbounds %struct.complex, ptr %418, i64 %423
  %425 = call double @r_imag(ptr noundef %424)
  %426 = fptrunc double %425 to float
  store float %426, ptr %24, align 4, !tbaa !11
  %427 = load float, ptr %24, align 4, !tbaa !11
  %428 = fcmp oge float %427, 0.000000e+00
  br i1 %428, label %429, label %431

429:                                              ; preds = %415
  %430 = load float, ptr %24, align 4, !tbaa !11
  br label %434

431:                                              ; preds = %415
  %432 = load float, ptr %24, align 4, !tbaa !11
  %433 = fneg float %432
  br label %434

434:                                              ; preds = %431, %429
  %435 = phi float [ %430, %429 ], [ %433, %431 ]
  %436 = fpext float %435 to double
  %437 = fadd double %417, %436
  %438 = load float, ptr %33, align 4, !tbaa !11
  %439 = fpext float %438 to double
  %440 = fadd double %439, %437
  %441 = fptrunc double %440 to float
  store float %441, ptr %33, align 4, !tbaa !11
  br label %442

442:                                              ; preds = %434, %352
  br label %443

443:                                              ; preds = %442
  %444 = load i64, ptr %29, align 8, !tbaa !9
  %445 = add nsw i64 %444, 1
  store i64 %445, ptr %29, align 8, !tbaa !9
  br label %344, !llvm.loop !22

446:                                              ; preds = %344
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  %448 = load i64, ptr %28, align 8, !tbaa !9
  %449 = load i64, ptr %18, align 8, !tbaa !9
  %450 = mul nsw i64 %448, %449
  %451 = add nsw i64 %450, 1
  %452 = getelementptr inbounds %struct.complex, ptr %447, i64 %451
  %453 = call i64 @f2c_icamax(ptr noundef %31, ptr noundef %452, ptr noundef @c__1)
  store i64 %453, ptr %37, align 8, !tbaa !9
  %454 = load ptr, ptr %12, align 8, !tbaa !5
  %455 = load i64, ptr %37, align 8, !tbaa !9
  %456 = load i64, ptr %28, align 8, !tbaa !9
  %457 = load i64, ptr %18, align 8, !tbaa !9
  %458 = mul nsw i64 %456, %457
  %459 = add nsw i64 %455, %458
  %460 = getelementptr inbounds %struct.complex, ptr %454, i64 %459
  %461 = call double @c_abs(ptr noundef %460)
  %462 = fptrunc double %461 to float
  store float %462, ptr %35, align 4, !tbaa !11
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = load i64, ptr %30, align 8, !tbaa !9
  %466 = sub nsw i64 %464, %465
  %467 = add nsw i64 %466, 1
  store i64 %467, ptr %21, align 8, !tbaa !9
  %468 = load ptr, ptr %12, align 8, !tbaa !5
  %469 = load i64, ptr %28, align 8, !tbaa !9
  %470 = load i64, ptr %30, align 8, !tbaa !9
  %471 = load i64, ptr %18, align 8, !tbaa !9
  %472 = mul nsw i64 %470, %471
  %473 = add nsw i64 %469, %472
  %474 = getelementptr inbounds %struct.complex, ptr %468, i64 %473
  %475 = load ptr, ptr %13, align 8, !tbaa !5
  %476 = call i64 @f2c_icamax(ptr noundef %21, ptr noundef %474, ptr noundef %475)
  store i64 %476, ptr %38, align 8, !tbaa !9
  %477 = load ptr, ptr %12, align 8, !tbaa !5
  %478 = load i64, ptr %28, align 8, !tbaa !9
  %479 = load i64, ptr %38, align 8, !tbaa !9
  %480 = load i64, ptr %30, align 8, !tbaa !9
  %481 = add nsw i64 %479, %480
  %482 = sub nsw i64 %481, 1
  %483 = load i64, ptr %18, align 8, !tbaa !9
  %484 = mul nsw i64 %482, %483
  %485 = add nsw i64 %478, %484
  %486 = getelementptr inbounds %struct.complex, ptr %477, i64 %485
  %487 = call double @c_abs(ptr noundef %486)
  %488 = fptrunc double %487 to float
  store float %488, ptr %36, align 4, !tbaa !11
  %489 = load float, ptr %25, align 4, !tbaa !11
  %490 = fcmp oeq float %489, 0.000000e+00
  br i1 %490, label %494, label %491

491:                                              ; preds = %446
  %492 = load float, ptr %33, align 4, !tbaa !11
  %493 = fcmp oeq float %492, 0.000000e+00
  br i1 %493, label %494, label %495

494:                                              ; preds = %491, %446
  br label %710

495:                                              ; preds = %491
  %496 = load float, ptr %33, align 4, !tbaa !11
  %497 = fdiv float %496, 2.000000e+00
  store float %497, ptr %27, align 4, !tbaa !11
  store float 1.000000e+00, ptr %26, align 4, !tbaa !11
  %498 = load float, ptr %25, align 4, !tbaa !11
  %499 = load float, ptr %33, align 4, !tbaa !11
  %500 = fadd float %498, %499
  store float %500, ptr %34, align 4, !tbaa !11
  br label %501

501:                                              ; preds = %552, %495
  %502 = load float, ptr %26, align 4, !tbaa !11
  %503 = load float, ptr %25, align 4, !tbaa !11
  %504 = fcmp oge float %502, %503
  br i1 %504, label %505, label %507

505:                                              ; preds = %501
  %506 = load float, ptr %26, align 4, !tbaa !11
  br label %509

507:                                              ; preds = %501
  %508 = load float, ptr %25, align 4, !tbaa !11
  br label %509

509:                                              ; preds = %507, %505
  %510 = phi float [ %506, %505 ], [ %508, %507 ]
  store float %510, ptr %23, align 4, !tbaa !11
  %511 = load float, ptr %33, align 4, !tbaa !11
  %512 = load float, ptr %27, align 4, !tbaa !11
  %513 = fcmp ole float %511, %512
  br i1 %513, label %514, label %516

514:                                              ; preds = %509
  %515 = load float, ptr %33, align 4, !tbaa !11
  br label %518

516:                                              ; preds = %509
  %517 = load float, ptr %27, align 4, !tbaa !11
  br label %518

518:                                              ; preds = %516, %514
  %519 = phi float [ %515, %514 ], [ %517, %516 ]
  store float %519, ptr %24, align 4, !tbaa !11
  %520 = load float, ptr %25, align 4, !tbaa !11
  %521 = load float, ptr %27, align 4, !tbaa !11
  %522 = fcmp oge float %520, %521
  br i1 %522, label %551, label %523

523:                                              ; preds = %518
  %524 = load float, ptr %23, align 4, !tbaa !11
  %525 = load float, ptr %35, align 4, !tbaa !11
  %526 = fcmp oge float %524, %525
  br i1 %526, label %527, label %529

527:                                              ; preds = %523
  %528 = load float, ptr %23, align 4, !tbaa !11
  br label %531

529:                                              ; preds = %523
  %530 = load float, ptr %35, align 4, !tbaa !11
  br label %531

531:                                              ; preds = %529, %527
  %532 = phi float [ %528, %527 ], [ %530, %529 ]
  %533 = fpext float %532 to double
  %534 = load float, ptr %43, align 4, !tbaa !11
  %535 = fpext float %534 to double
  %536 = fcmp oge double %533, %535
  br i1 %536, label %551, label %537

537:                                              ; preds = %531
  %538 = load float, ptr %24, align 4, !tbaa !11
  %539 = load float, ptr %36, align 4, !tbaa !11
  %540 = fcmp ole float %538, %539
  br i1 %540, label %541, label %543

541:                                              ; preds = %537
  %542 = load float, ptr %24, align 4, !tbaa !11
  br label %545

543:                                              ; preds = %537
  %544 = load float, ptr %36, align 4, !tbaa !11
  br label %545

545:                                              ; preds = %543, %541
  %546 = phi float [ %542, %541 ], [ %544, %543 ]
  %547 = fpext float %546 to double
  %548 = load float, ptr %41, align 4, !tbaa !11
  %549 = fpext float %548 to double
  %550 = fcmp ole double %547, %549
  br i1 %550, label %551, label %552

551:                                              ; preds = %545, %531, %518
  br label %565

552:                                              ; preds = %545
  %553 = load float, ptr %26, align 4, !tbaa !11
  %554 = fmul float %553, 2.000000e+00
  store float %554, ptr %26, align 4, !tbaa !11
  %555 = load float, ptr %25, align 4, !tbaa !11
  %556 = fmul float %555, 2.000000e+00
  store float %556, ptr %25, align 4, !tbaa !11
  %557 = load float, ptr %35, align 4, !tbaa !11
  %558 = fmul float %557, 2.000000e+00
  store float %558, ptr %35, align 4, !tbaa !11
  %559 = load float, ptr %33, align 4, !tbaa !11
  %560 = fdiv float %559, 2.000000e+00
  store float %560, ptr %33, align 4, !tbaa !11
  %561 = load float, ptr %27, align 4, !tbaa !11
  %562 = fdiv float %561, 2.000000e+00
  store float %562, ptr %27, align 4, !tbaa !11
  %563 = load float, ptr %36, align 4, !tbaa !11
  %564 = fdiv float %563, 2.000000e+00
  store float %564, ptr %36, align 4, !tbaa !11
  br label %501

565:                                              ; preds = %551
  %566 = load float, ptr %25, align 4, !tbaa !11
  %567 = fdiv float %566, 2.000000e+00
  store float %567, ptr %27, align 4, !tbaa !11
  br label %568

568:                                              ; preds = %619, %565
  %569 = load float, ptr %26, align 4, !tbaa !11
  %570 = load float, ptr %25, align 4, !tbaa !11
  %571 = fcmp ole float %569, %570
  br i1 %571, label %572, label %574

572:                                              ; preds = %568
  %573 = load float, ptr %26, align 4, !tbaa !11
  br label %576

574:                                              ; preds = %568
  %575 = load float, ptr %25, align 4, !tbaa !11
  br label %576

576:                                              ; preds = %574, %572
  %577 = phi float [ %573, %572 ], [ %575, %574 ]
  store float %577, ptr %23, align 4, !tbaa !11
  %578 = load float, ptr %23, align 4, !tbaa !11
  %579 = load float, ptr %27, align 4, !tbaa !11
  %580 = fcmp ole float %578, %579
  br i1 %580, label %581, label %583

581:                                              ; preds = %576
  %582 = load float, ptr %23, align 4, !tbaa !11
  br label %585

583:                                              ; preds = %576
  %584 = load float, ptr %27, align 4, !tbaa !11
  br label %585

585:                                              ; preds = %583, %581
  %586 = phi float [ %582, %581 ], [ %584, %583 ]
  store float %586, ptr %23, align 4, !tbaa !11
  %587 = load float, ptr %27, align 4, !tbaa !11
  %588 = load float, ptr %33, align 4, !tbaa !11
  %589 = fcmp olt float %587, %588
  br i1 %589, label %618, label %590

590:                                              ; preds = %585
  %591 = load float, ptr %33, align 4, !tbaa !11
  %592 = load float, ptr %36, align 4, !tbaa !11
  %593 = fcmp oge float %591, %592
  br i1 %593, label %594, label %596

594:                                              ; preds = %590
  %595 = load float, ptr %33, align 4, !tbaa !11
  br label %598

596:                                              ; preds = %590
  %597 = load float, ptr %36, align 4, !tbaa !11
  br label %598

598:                                              ; preds = %596, %594
  %599 = phi float [ %595, %594 ], [ %597, %596 ]
  %600 = fpext float %599 to double
  %601 = load float, ptr %43, align 4, !tbaa !11
  %602 = fpext float %601 to double
  %603 = fcmp oge double %600, %602
  br i1 %603, label %618, label %604

604:                                              ; preds = %598
  %605 = load float, ptr %23, align 4, !tbaa !11
  %606 = load float, ptr %35, align 4, !tbaa !11
  %607 = fcmp ole float %605, %606
  br i1 %607, label %608, label %610

608:                                              ; preds = %604
  %609 = load float, ptr %23, align 4, !tbaa !11
  br label %612

610:                                              ; preds = %604
  %611 = load float, ptr %35, align 4, !tbaa !11
  br label %612

612:                                              ; preds = %610, %608
  %613 = phi float [ %609, %608 ], [ %611, %610 ]
  %614 = fpext float %613 to double
  %615 = load float, ptr %41, align 4, !tbaa !11
  %616 = fpext float %615 to double
  %617 = fcmp ole double %614, %616
  br i1 %617, label %618, label %619

618:                                              ; preds = %612, %598, %585
  br label %632

619:                                              ; preds = %612
  %620 = load float, ptr %26, align 4, !tbaa !11
  %621 = fdiv float %620, 2.000000e+00
  store float %621, ptr %26, align 4, !tbaa !11
  %622 = load float, ptr %25, align 4, !tbaa !11
  %623 = fdiv float %622, 2.000000e+00
  store float %623, ptr %25, align 4, !tbaa !11
  %624 = load float, ptr %27, align 4, !tbaa !11
  %625 = fdiv float %624, 2.000000e+00
  store float %625, ptr %27, align 4, !tbaa !11
  %626 = load float, ptr %35, align 4, !tbaa !11
  %627 = fdiv float %626, 2.000000e+00
  store float %627, ptr %35, align 4, !tbaa !11
  %628 = load float, ptr %33, align 4, !tbaa !11
  %629 = fmul float %628, 2.000000e+00
  store float %629, ptr %33, align 4, !tbaa !11
  %630 = load float, ptr %36, align 4, !tbaa !11
  %631 = fmul float %630, 2.000000e+00
  store float %631, ptr %36, align 4, !tbaa !11
  br label %568

632:                                              ; preds = %618
  %633 = load float, ptr %25, align 4, !tbaa !11
  %634 = load float, ptr %33, align 4, !tbaa !11
  %635 = fadd float %633, %634
  %636 = load float, ptr %34, align 4, !tbaa !11
  %637 = fmul float %636, 0x3FEE666660000000
  %638 = fcmp oge float %635, %637
  br i1 %638, label %639, label %640

639:                                              ; preds = %632
  br label %710

640:                                              ; preds = %632
  %641 = load float, ptr %26, align 4, !tbaa !11
  %642 = fcmp olt float %641, 1.000000e+00
  br i1 %642, label %643, label %660

643:                                              ; preds = %640
  %644 = load ptr, ptr %16, align 8, !tbaa !5
  %645 = load i64, ptr %28, align 8, !tbaa !9
  %646 = getelementptr inbounds float, ptr %644, i64 %645
  %647 = load float, ptr %646, align 4, !tbaa !11
  %648 = fcmp olt float %647, 1.000000e+00
  br i1 %648, label %649, label %660

649:                                              ; preds = %643
  %650 = load float, ptr %26, align 4, !tbaa !11
  %651 = load ptr, ptr %16, align 8, !tbaa !5
  %652 = load i64, ptr %28, align 8, !tbaa !9
  %653 = getelementptr inbounds float, ptr %651, i64 %652
  %654 = load float, ptr %653, align 4, !tbaa !11
  %655 = fmul float %650, %654
  %656 = load float, ptr %40, align 4, !tbaa !11
  %657 = fcmp ole float %655, %656
  br i1 %657, label %658, label %659

658:                                              ; preds = %649
  br label %710

659:                                              ; preds = %649
  br label %660

660:                                              ; preds = %659, %643, %640
  %661 = load float, ptr %26, align 4, !tbaa !11
  %662 = fcmp ogt float %661, 1.000000e+00
  br i1 %662, label %663, label %680

663:                                              ; preds = %660
  %664 = load ptr, ptr %16, align 8, !tbaa !5
  %665 = load i64, ptr %28, align 8, !tbaa !9
  %666 = getelementptr inbounds float, ptr %664, i64 %665
  %667 = load float, ptr %666, align 4, !tbaa !11
  %668 = fcmp ogt float %667, 1.000000e+00
  br i1 %668, label %669, label %680

669:                                              ; preds = %663
  %670 = load ptr, ptr %16, align 8, !tbaa !5
  %671 = load i64, ptr %28, align 8, !tbaa !9
  %672 = getelementptr inbounds float, ptr %670, i64 %671
  %673 = load float, ptr %672, align 4, !tbaa !11
  %674 = load float, ptr %42, align 4, !tbaa !11
  %675 = load float, ptr %26, align 4, !tbaa !11
  %676 = fdiv float %674, %675
  %677 = fcmp oge float %673, %676
  br i1 %677, label %678, label %679

678:                                              ; preds = %669
  br label %710

679:                                              ; preds = %669
  br label %680

680:                                              ; preds = %679, %663, %660
  %681 = load float, ptr %26, align 4, !tbaa !11
  %682 = fdiv float 1.000000e+00, %681
  store float %682, ptr %27, align 4, !tbaa !11
  %683 = load float, ptr %26, align 4, !tbaa !11
  %684 = load ptr, ptr %16, align 8, !tbaa !5
  %685 = load i64, ptr %28, align 8, !tbaa !9
  %686 = getelementptr inbounds float, ptr %684, i64 %685
  %687 = load float, ptr %686, align 4, !tbaa !11
  %688 = fmul float %687, %683
  store float %688, ptr %686, align 4, !tbaa !11
  store i64 1, ptr %44, align 8, !tbaa !9
  %689 = load ptr, ptr %11, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = load i64, ptr %30, align 8, !tbaa !9
  %692 = sub nsw i64 %690, %691
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %21, align 8, !tbaa !9
  %694 = load ptr, ptr %12, align 8, !tbaa !5
  %695 = load i64, ptr %28, align 8, !tbaa !9
  %696 = load i64, ptr %30, align 8, !tbaa !9
  %697 = load i64, ptr %18, align 8, !tbaa !9
  %698 = mul nsw i64 %696, %697
  %699 = add nsw i64 %695, %698
  %700 = getelementptr inbounds %struct.complex, ptr %694, i64 %699
  %701 = load ptr, ptr %13, align 8, !tbaa !5
  %702 = call i32 @f2c_csscal(ptr noundef %21, ptr noundef %27, ptr noundef %700, ptr noundef %701)
  %703 = load ptr, ptr %12, align 8, !tbaa !5
  %704 = load i64, ptr %28, align 8, !tbaa !9
  %705 = load i64, ptr %18, align 8, !tbaa !9
  %706 = mul nsw i64 %704, %705
  %707 = add nsw i64 %706, 1
  %708 = getelementptr inbounds %struct.complex, ptr %703, i64 %707
  %709 = call i32 @f2c_csscal(ptr noundef %31, ptr noundef %26, ptr noundef %708, ptr noundef @c__1)
  br label %710

710:                                              ; preds = %680, %678, %658, %639, %494
  br label %711

711:                                              ; preds = %710
  %712 = load i64, ptr %28, align 8, !tbaa !9
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %28, align 8, !tbaa !9
  br label %337, !llvm.loop !23

714:                                              ; preds = %337
  %715 = load i64, ptr %44, align 8, !tbaa !9
  %716 = icmp ne i64 %715, 0
  br i1 %716, label %717, label %718

717:                                              ; preds = %714
  br label %334

718:                                              ; preds = %714
  br label %719

719:                                              ; preds = %718, %322, %192, %131, %112
  %720 = load i64, ptr %30, align 8, !tbaa !9
  %721 = load ptr, ptr %14, align 8, !tbaa !5
  store i64 %720, ptr %721, align 8, !tbaa !9
  %722 = load i64, ptr %31, align 8, !tbaa !9
  %723 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 %722, ptr %723, align 8, !tbaa !9
  store i32 0, ptr %9, align 4
  store i32 1, ptr %45, align 4
  br label %724

724:                                              ; preds = %719, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  %725 = load i32, ptr %9, align 4
  ret i32 %725
}

; 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 i32 @f2c_cswap(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @r_imag(ptr noundef) #2

declare double @slamch_(ptr noundef) #2

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

declare double @c_abs(ptr noundef) #2

declare i32 @f2c_csscal(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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !12, i64 0}
!16 = !{!"", !12, i64 0, !12, i64 4}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}


; 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8

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

19:                                               ; preds = %8
  %20 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not260 = icmp eq i64 %20, 0
  br i1 %.not260, label %21, label %25

21:                                               ; preds = %19
  %22 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not261 = icmp eq i64 %22, 0
  br i1 %.not261, label %23, label %25

23:                                               ; preds = %21
  %24 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %.not262 = icmp eq i64 %24, 0
  br i1 %.not262, label %.thread.sink.split, label %25

25:                                               ; preds = %23, %21, %19, %8
  %26 = load i64, ptr %1, align 8, !tbaa !5
  %27 = icmp slt i64 %26, 0
  br i1 %27, label %.thread.sink.split, label %28

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

31:                                               ; preds = %28
  %.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not263 = icmp eq i64 %.pr, 0
  br i1 %.not263, label %35, label %.thread

.thread.sink.split:                               ; preds = %28, %25, %23
  %.sink = phi i64 [ -1, %23 ], [ -2, %25 ], [ -4, %28 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %31
  %32 = phi i64 [ %.pr, %31 ], [ %.sink, %.thread.sink.split ]
  %33 = sub nsw i64 0, %32
  store i64 %33, ptr %9, align 8, !tbaa !5
  %34 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %9) #4
  br label %286

35:                                               ; preds = %31
  store i64 %26, ptr %13, align 8, !tbaa !5
  %36 = icmp eq i64 %26, 0
  br i1 %36, label %.loopexit, label %37

37:                                               ; preds = %35
  %38 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %.not264 = icmp eq i64 %38, 0
  br i1 %.not264, label %46, label %39

39:                                               ; preds = %37
  %40 = load i64, ptr %1, align 8, !tbaa !5
  %.not274287 = icmp slt i64 %40, 1
  br i1 %.not274287, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %39
  %min.iters.check = icmp ult i64 %40, 8
  br i1 %min.iters.check, label %.lr.ph.preheader475, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %40, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %41 = getelementptr float, ptr %6, i64 %index
  %42 = getelementptr inbounds i8, ptr %41, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %41, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %42, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %43 = icmp eq i64 %index.next, %n.vec
  br i1 %43, label %middle.block, label %vector.body, !llvm.loop !11

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %40, %n.vec
  br i1 %cmp.n, label %.loopexit, label %.lr.ph.preheader475

.lr.ph.preheader475:                              ; preds = %middle.block, %.lr.ph.preheader
  %.0248288.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader475, %.lr.ph
  %.0248288 = phi i64 [ %45, %.lr.ph ], [ %.0248288.ph, %.lr.ph.preheader475 ]
  %44 = getelementptr inbounds float, ptr %17, i64 %.0248288
  store float 1.000000e+00, ptr %44, align 4, !tbaa !9
  %45 = add nuw i64 %.0248288, 1
  %exitcond.not = icmp eq i64 %.0248288, %40
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !15

46:                                               ; preds = %37
  %47 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not265 = icmp eq i64 %47, 0
  br i1 %.not265, label %.preheader, label %.loopexit281

.preheader:                                       ; preds = %46
  %invariant.gep311 = getelementptr i8, ptr %16, i64 8
  br label %69

.loopexit280:                                     ; preds = %.lr.ph296, %.lr.ph307, %102, %._crit_edge.loopexit
  %.0244 = phi i64 [ %.1245294, %._crit_edge.loopexit ], [ %.2246305, %102 ], [ %.2246305, %.lr.ph307 ], [ %.1245294, %.lr.ph296 ]
  %.0240 = phi i64 [ %.1241, %._crit_edge.loopexit ], [ %.2242, %102 ], [ %.2242, %.lr.ph307 ], [ %.1241, %.lr.ph296 ]
  %.0239 = phi i64 [ %.pre398, %._crit_edge.loopexit ], [ %.2242, %102 ], [ %.2242, %.lr.ph307 ], [ %72, %.lr.ph296 ]
  %cond = phi i1 [ false, %._crit_edge.loopexit ], [ true, %102 ], [ true, %.lr.ph307 ], [ false, %.lr.ph296 ]
  %48 = sitofp i64 %.0244 to float
  %49 = getelementptr inbounds float, ptr %17, i64 %.0239
  store float %48, ptr %49, align 4, !tbaa !9
  %50 = icmp eq i64 %.0244, %.0239
  br i1 %50, label %63, label %51

51:                                               ; preds = %.loopexit280
  %52 = mul nsw i64 %.0244, %14
  %gep312 = getelementptr %struct.complex, ptr %invariant.gep311, i64 %52
  %53 = mul nsw i64 %.0239, %14
  %gep314 = getelementptr %struct.complex, ptr %invariant.gep311, i64 %53
  %54 = call i32 @f2c_cswap(ptr noundef nonnull %13, ptr noundef %gep312, ptr noundef nonnull @c__1, ptr noundef %gep314, ptr noundef nonnull @c__1) #4
  %55 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub = sub i64 %55, %.0240
  %56 = add i64 %reass.sub, 1
  store i64 %56, ptr %9, align 8, !tbaa !5
  %57 = mul nsw i64 %.0240, %14
  %58 = getelementptr %struct.complex, ptr %16, i64 %.0244
  %59 = getelementptr %struct.complex, ptr %58, i64 %57
  %60 = getelementptr %struct.complex, ptr %16, i64 %.0239
  %61 = getelementptr %struct.complex, ptr %60, i64 %57
  %62 = call i32 @f2c_cswap(ptr noundef nonnull %9, ptr noundef %59, ptr noundef nonnull %3, ptr noundef %61, ptr noundef nonnull %3) #4
  br label %63

63:                                               ; preds = %.loopexit280, %51
  br i1 %cond, label %88, label %64

64:                                               ; preds = %63
  %65 = load i64, ptr %13, align 8, !tbaa !5
  %66 = icmp eq i64 %65, 1
  br i1 %66, label %.loopexit, label %67

67:                                               ; preds = %64
  %68 = add nsw i64 %65, -1
  store i64 %68, ptr %13, align 8, !tbaa !5
  br label %69

69:                                               ; preds = %.preheader, %67
  %70 = phi i64 [ %68, %67 ], [ %26, %.preheader ]
  %.1241 = phi i64 [ %.0240, %67 ], [ 1, %.preheader ]
  %71 = icmp sgt i64 %70, 0
  br i1 %71, label %.lr.ph296, label %.loopexit282

.lr.ph296:                                        ; preds = %69, %85
  %.1245294 = phi i64 [ %86, %85 ], [ %70, %69 ]
  %72 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %72, ptr %9, align 8, !tbaa !5
  %.not266289 = icmp slt i64 %72, 1
  br i1 %.not266289, label %.loopexit280, label %.lr.ph291.preheader

.lr.ph291.preheader:                              ; preds = %.lr.ph296
  %invariant.gep488 = getelementptr %struct.complex, ptr %16, i64 %.1245294
  br label %.lr.ph291

.lr.ph291:                                        ; preds = %.lr.ph291.preheader, %82
  %73 = phi i64 [ %83, %82 ], [ %72, %.lr.ph291.preheader ]
  %.1249290 = phi i64 [ %84, %82 ], [ 1, %.lr.ph291.preheader ]
  %74 = icmp eq i64 %.1249290, %.1245294
  br i1 %74, label %82, label %75

75:                                               ; preds = %.lr.ph291
  %76 = mul nsw i64 %.1249290, %14
  %gep489 = getelementptr %struct.complex, ptr %invariant.gep488, i64 %76
  %77 = load float, ptr %gep489, align 4, !tbaa !16
  %78 = fcmp une float %77, 0.000000e+00
  br i1 %78, label %85, label %79

79:                                               ; preds = %75
  %80 = call double @r_imag(ptr noundef nonnull %gep489) #4
  %81 = fcmp une double %80, 0.000000e+00
  br i1 %81, label %85, label %._crit_edge397

._crit_edge397:                                   ; preds = %79
  %.pre = load i64, ptr %9, align 8, !tbaa !5
  br label %82

82:                                               ; preds = %._crit_edge397, %.lr.ph291
  %83 = phi i64 [ %.pre, %._crit_edge397 ], [ %73, %.lr.ph291 ]
  %84 = add nuw nsw i64 %.1249290, 1
  %.not266.not = icmp slt i64 %.1249290, %83
  br i1 %.not266.not, label %.lr.ph291, label %._crit_edge.loopexit, !llvm.loop !18

._crit_edge.loopexit:                             ; preds = %82
  %.pre398 = load i64, ptr %13, align 8, !tbaa !5
  br label %.loopexit280

85:                                               ; preds = %79, %75
  %86 = add nsw i64 %.1245294, -1
  %87 = icmp sgt i64 %.1245294, 1
  br i1 %87, label %.lr.ph296, label %.loopexit282, !llvm.loop !19

88:                                               ; preds = %63
  %89 = add nsw i64 %.0240, 1
  br label %.loopexit282

.loopexit282:                                     ; preds = %85, %69, %88
  %.2242 = phi i64 [ %89, %88 ], [ %.1241, %69 ], [ %.1241, %85 ]
  %90 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %90, ptr %9, align 8, !tbaa !5
  %.not267304 = icmp sgt i64 %.2242, %90
  br i1 %.not267304, label %.loopexit281, label %.lr.ph307

.lr.ph307:                                        ; preds = %.loopexit282, %105
  %.2246305 = phi i64 [ %106, %105 ], [ %.2242, %.loopexit282 ]
  %91 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %91, ptr %10, align 8, !tbaa !5
  %.not268297 = icmp sgt i64 %.2242, %91
  br i1 %.not268297, label %.loopexit280, label %.lr.ph300

.lr.ph300:                                        ; preds = %.lr.ph307
  %92 = mul nsw i64 %.2246305, %14
  %invariant.gep = getelementptr %struct.complex, ptr %16, i64 %92
  br label %93

93:                                               ; preds = %.lr.ph300, %102
  %94 = phi i64 [ %91, %.lr.ph300 ], [ %103, %102 ]
  %.2250298 = phi i64 [ %.2242, %.lr.ph300 ], [ %104, %102 ]
  %95 = icmp eq i64 %.2250298, %.2246305
  br i1 %95, label %102, label %96

96:                                               ; preds = %93
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.2250298
  %97 = load float, ptr %gep, align 4, !tbaa !16
  %98 = fcmp une float %97, 0.000000e+00
  br i1 %98, label %105, label %99

99:                                               ; preds = %96
  %100 = call double @r_imag(ptr noundef nonnull %gep) #4
  %101 = fcmp une double %100, 0.000000e+00
  br i1 %101, label %105, label %._crit_edge399

._crit_edge399:                                   ; preds = %99
  %.pre400 = load i64, ptr %10, align 8, !tbaa !5
  br label %102

102:                                              ; preds = %._crit_edge399, %93
  %103 = phi i64 [ %.pre400, %._crit_edge399 ], [ %94, %93 ]
  %104 = add nsw i64 %.2250298, 1
  %.not268.not = icmp slt i64 %.2250298, %103
  br i1 %.not268.not, label %93, label %.loopexit280, !llvm.loop !20

105:                                              ; preds = %99, %96
  %106 = add nsw i64 %.2246305, 1
  %107 = load i64, ptr %9, align 8, !tbaa !5
  %.not267.not = icmp slt i64 %.2246305, %107
  br i1 %.not267.not, label %.lr.ph307, label %.loopexit281.loopexit, !llvm.loop !21

.loopexit281.loopexit:                            ; preds = %105
  %.pre401 = load i64, ptr %13, align 8, !tbaa !5
  br label %.loopexit281

.loopexit281:                                     ; preds = %.loopexit282, %.loopexit281.loopexit, %46
  %108 = phi i64 [ %26, %46 ], [ %.pre401, %.loopexit281.loopexit ], [ %90, %.loopexit282 ]
  %.3243 = phi i64 [ 1, %46 ], [ %.2242, %.loopexit281.loopexit ], [ %.2242, %.loopexit282 ]
  store i64 %108, ptr %9, align 8, !tbaa !5
  %.not269315 = icmp sgt i64 %.3243, %108
  br i1 %.not269315, label %._crit_edge319, label %.lr.ph318.preheader

.lr.ph318.preheader:                              ; preds = %.loopexit281
  %109 = add i64 %108, 1
  %110 = sub i64 %109, %.3243
  %min.iters.check446 = icmp ult i64 %110, 8
  br i1 %min.iters.check446, label %.lr.ph318.preheader460, label %vector.ph447

vector.ph447:                                     ; preds = %.lr.ph318.preheader
  %n.vec449 = and i64 %110, -8
  %ind.end450 = add i64 %.3243, %n.vec449
  %111 = getelementptr float, ptr %17, i64 %.3243
  br label %vector.body452

vector.body452:                                   ; preds = %vector.body452, %vector.ph447
  %index453 = phi i64 [ 0, %vector.ph447 ], [ %index.next455, %vector.body452 ]
  %112 = getelementptr float, ptr %111, i64 %index453
  %113 = getelementptr inbounds i8, ptr %112, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %112, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %113, align 4, !tbaa !9
  %index.next455 = add nuw i64 %index453, 8
  %114 = icmp eq i64 %index.next455, %n.vec449
  br i1 %114, label %middle.block444, label %vector.body452, !llvm.loop !22

middle.block444:                                  ; preds = %vector.body452
  %cmp.n456 = icmp eq i64 %110, %n.vec449
  br i1 %cmp.n456, label %._crit_edge319, label %.lr.ph318.preheader460

.lr.ph318.preheader460:                           ; preds = %middle.block444, %.lr.ph318.preheader
  %.3251316.ph = phi i64 [ %.3243, %.lr.ph318.preheader ], [ %ind.end450, %middle.block444 ]
  br label %.lr.ph318

.lr.ph318:                                        ; preds = %.lr.ph318.preheader460, %.lr.ph318
  %.3251316 = phi i64 [ %116, %.lr.ph318 ], [ %.3251316.ph, %.lr.ph318.preheader460 ]
  %115 = getelementptr inbounds float, ptr %17, i64 %.3251316
  store float 1.000000e+00, ptr %115, align 4, !tbaa !9
  %116 = add i64 %.3251316, 1
  %exitcond396.not = icmp eq i64 %.3251316, %108
  br i1 %exitcond396.not, label %._crit_edge319, label %.lr.ph318, !llvm.loop !23

._crit_edge319:                                   ; preds = %.lr.ph318, %middle.block444, %.loopexit281
  %117 = call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not270 = icmp eq i64 %117, 0
  br i1 %.not270, label %118, label %.loopexit

118:                                              ; preds = %._crit_edge319
  %119 = call double @slamch_(ptr noundef nonnull @.str.2) #4
  %120 = call double @slamch_(ptr noundef nonnull @.str.1) #4
  %121 = fdiv double %119, %120
  %122 = fptrunc double %121 to float
  %123 = fdiv float 1.000000e+00, %122
  %124 = fmul float %122, 2.000000e+00
  %125 = fdiv float 1.000000e+00, %124
  %invariant.gep373 = getelementptr i8, ptr %16, i64 8
  %126 = mul nsw i64 %.3243, %14
  %127 = add i64 %.3243, -1
  br label %128

128:                                              ; preds = %._crit_edge380, %118
  %129 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %129, ptr %9, align 8, !tbaa !5
  %.not271375 = icmp sgt i64 %.3243, %129
  br i1 %.not271375, label %.loopexit, label %.lr.ph379

.lr.ph379:                                        ; preds = %128, %282
  %.0377 = phi i64 [ %.1, %282 ], [ 0, %128 ]
  %.4252376 = phi i64 [ %283, %282 ], [ %.3243, %128 ]
  %130 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %130, ptr %10, align 8, !tbaa !5
  %.not273320 = icmp sgt i64 %.3243, %130
  %.pre407 = mul nsw i64 %.4252376, %14
  br i1 %.not273320, label %._crit_edge326, label %.lr.ph325

.lr.ph325:                                        ; preds = %.lr.ph379
  %invariant.gep329 = getelementptr %struct.complex, ptr %16, i64 %.pre407
  %131 = getelementptr %struct.complex, ptr %16, i64 %.4252376
  br label %132

132:                                              ; preds = %.lr.ph325, %160
  %133 = phi i64 [ %130, %.lr.ph325 ], [ %161, %160 ]
  %.3247321 = phi i64 [ %.3243, %.lr.ph325 ], [ %163, %160 ]
  %134 = phi <2 x float> [ zeroinitializer, %.lr.ph325 ], [ %162, %160 ]
  %135 = icmp eq i64 %.3247321, %.4252376
  br i1 %135, label %160, label %136

136:                                              ; preds = %132
  %gep330 = getelementptr %struct.complex, ptr %invariant.gep329, i64 %.3247321
  %137 = load float, ptr %gep330, align 4, !tbaa !16
  %138 = call double @r_imag(ptr noundef nonnull %gep330) #4
  %139 = fpext <2 x float> %134 to <2 x double>
  %140 = mul nsw i64 %.3247321, %14
  %141 = getelementptr %struct.complex, ptr %131, i64 %140
  %142 = load float, ptr %141, align 4, !tbaa !16
  %143 = call double @r_imag(ptr noundef nonnull %141) #4
  %144 = insertelement <2 x float> poison, float %137, i64 0
  %145 = insertelement <2 x float> %144, float %142, i64 1
  %146 = fcmp oge <2 x float> %145, zeroinitializer
  %147 = fneg <2 x float> %145
  %148 = select <2 x i1> %146, <2 x float> %145, <2 x float> %147
  %149 = fpext <2 x float> %148 to <2 x double>
  %150 = insertelement <2 x double> poison, double %138, i64 0
  %151 = insertelement <2 x double> %150, double %143, i64 1
  %152 = fptrunc <2 x double> %151 to <2 x float>
  %153 = fcmp oge <2 x float> %152, zeroinitializer
  %154 = fneg <2 x float> %152
  %155 = select <2 x i1> %153, <2 x float> %152, <2 x float> %154
  %156 = fpext <2 x float> %155 to <2 x double>
  %157 = fadd <2 x double> %149, %156
  %158 = fadd <2 x double> %157, %139
  %159 = fptrunc <2 x double> %158 to <2 x float>
  %.pre402 = load i64, ptr %10, align 8, !tbaa !5
  br label %160

160:                                              ; preds = %136, %132
  %161 = phi i64 [ %133, %132 ], [ %.pre402, %136 ]
  %162 = phi <2 x float> [ %134, %132 ], [ %159, %136 ]
  %163 = add nsw i64 %.3247321, 1
  %.not273.not = icmp slt i64 %.3247321, %161
  br i1 %.not273.not, label %132, label %._crit_edge326, !llvm.loop !24

._crit_edge326:                                   ; preds = %160, %.lr.ph379
  %164 = phi <2 x float> [ zeroinitializer, %.lr.ph379 ], [ %162, %160 ]
  %gep374 = getelementptr %struct.complex, ptr %invariant.gep373, i64 %.pre407
  %165 = call i64 @f2c_icamax(ptr noundef nonnull %13, ptr noundef %gep374, ptr noundef nonnull @c__1) #4
  %166 = getelementptr %struct.complex, ptr %16, i64 %165
  %167 = getelementptr %struct.complex, ptr %166, i64 %.pre407
  %168 = call double @c_abs(ptr noundef %167) #4
  %169 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub382 = sub i64 %169, %.3243
  %170 = add i64 %reass.sub382, 1
  store i64 %170, ptr %10, align 8, !tbaa !5
  %171 = getelementptr %struct.complex, ptr %16, i64 %.4252376
  %172 = getelementptr %struct.complex, ptr %171, i64 %126
  %173 = call i64 @f2c_icamax(ptr noundef nonnull %10, ptr noundef %172, ptr noundef nonnull %3) #4
  %174 = add i64 %127, %173
  %175 = mul nsw i64 %174, %14
  %176 = getelementptr %struct.complex, ptr %171, i64 %175
  %177 = call double @c_abs(ptr noundef %176) #4
  %178 = extractelement <2 x float> %164, i64 0
  %179 = fcmp oeq float %178, 0.000000e+00
  %180 = extractelement <2 x float> %164, i64 1
  %181 = fcmp oeq float %180, 0.000000e+00
  %or.cond = select i1 %179, i1 true, i1 %181
  br i1 %or.cond, label %282, label %182

182:                                              ; preds = %._crit_edge326
  %183 = insertelement <2 x double> poison, double %177, i64 0
  %184 = insertelement <2 x double> %183, double %168, i64 1
  %185 = fptrunc <2 x double> %184 to <2 x float>
  %186 = fmul float %180, 5.000000e-01
  store float 1.000000e+00, ptr %11, align 4, !tbaa !9
  %187 = fadd float %180, %178
  %188 = fcmp ult float %178, %186
  br i1 %188, label %.lr.ph337.preheader, label %._crit_edge338

.lr.ph337.preheader:                              ; preds = %182
  %189 = fcmp ole float %180, %186
  %190 = select i1 %189, float %180, float %186
  br label %.lr.ph337

.lr.ph337:                                        ; preds = %.lr.ph337.preheader, %207
  %191 = phi float [ %214, %207 ], [ %190, %.lr.ph337.preheader ]
  %192 = phi float [ %208, %207 ], [ 1.000000e+00, %.lr.ph337.preheader ]
  %193 = phi float [ %210, %207 ], [ %186, %.lr.ph337.preheader ]
  %194 = phi <2 x float> [ %209, %207 ], [ %164, %.lr.ph337.preheader ]
  %195 = phi <2 x float> [ %211, %207 ], [ %185, %.lr.ph337.preheader ]
  %196 = extractelement <2 x float> %194, i64 0
  %197 = fcmp oge float %192, %196
  %198 = select i1 %197, float %192, float %196
  %199 = extractelement <2 x float> %195, i64 1
  %200 = fcmp oge float %198, %199
  %201 = select i1 %200, float %198, float %199
  %202 = fcmp ult float %201, %125
  %203 = extractelement <2 x float> %195, i64 0
  %204 = fcmp ole float %191, %203
  %205 = select i1 %204, float %191, float %203
  %206 = fcmp ugt float %205, %124
  %or.cond493 = select i1 %202, i1 %206, i1 false
  br i1 %or.cond493, label %207, label %._crit_edge338

207:                                              ; preds = %.lr.ph337
  %208 = fmul float %192, 2.000000e+00
  store float %208, ptr %11, align 4, !tbaa !9
  %209 = fmul <2 x float> %194, <float 2.000000e+00, float 5.000000e-01>
  %210 = fmul float %193, 5.000000e-01
  %211 = fmul <2 x float> %195, <float 5.000000e-01, float 2.000000e+00>
  %212 = extractelement <2 x float> %209, i64 1
  %213 = fcmp ole float %212, %210
  %214 = select i1 %213, float %212, float %210
  %215 = extractelement <2 x float> %209, i64 0
  %216 = fcmp ult float %215, %210
  br i1 %216, label %.lr.ph337, label %._crit_edge338

._crit_edge338:                                   ; preds = %.lr.ph337, %207, %182
  %.promoted353 = phi float [ 1.000000e+00, %182 ], [ %208, %207 ], [ %192, %.lr.ph337 ]
  %217 = phi <2 x float> [ %164, %182 ], [ %209, %207 ], [ %194, %.lr.ph337 ]
  %218 = phi <2 x float> [ %185, %182 ], [ %211, %207 ], [ %195, %.lr.ph337 ]
  %219 = extractelement <2 x float> %217, i64 0
  %220 = fmul float %219, 5.000000e-01
  store float %220, ptr %12, align 4, !tbaa !9
  %221 = extractelement <2 x float> %217, i64 1
  %222 = fcmp olt float %220, %221
  br i1 %222, label %._crit_edge361, label %.lr.ph360.preheader

.lr.ph360.preheader:                              ; preds = %._crit_edge338
  %223 = fcmp ole float %.promoted353, %219
  %224 = select i1 %223, float %.promoted353, float %219
  %225 = fcmp ole float %224, %220
  %226 = select i1 %225, float %224, float %220
  br label %.lr.ph360

.lr.ph360:                                        ; preds = %.lr.ph360.preheader, %242
  %227 = phi float [ %251, %242 ], [ %226, %.lr.ph360.preheader ]
  %228 = phi float [ %243, %242 ], [ %.promoted353, %.lr.ph360.preheader ]
  %229 = phi float [ %245, %242 ], [ %220, %.lr.ph360.preheader ]
  %230 = phi <2 x float> [ %244, %242 ], [ %217, %.lr.ph360.preheader ]
  %231 = phi <2 x float> [ %246, %242 ], [ %218, %.lr.ph360.preheader ]
  %232 = extractelement <2 x float> %230, i64 1
  %233 = extractelement <2 x float> %231, i64 0
  %234 = fcmp oge float %232, %233
  %235 = select i1 %234, float %232, float %233
  %236 = fcmp ult float %235, %125
  br i1 %236, label %237, label %._crit_edge361

237:                                              ; preds = %.lr.ph360
  %238 = extractelement <2 x float> %231, i64 1
  %239 = fcmp ole float %227, %238
  %240 = select i1 %239, float %227, float %238
  %241 = fcmp ugt float %240, %124
  br i1 %241, label %242, label %._crit_edge361

242:                                              ; preds = %237
  %243 = fmul float %228, 5.000000e-01
  store float %243, ptr %11, align 4, !tbaa !9
  %244 = fmul <2 x float> %230, <float 5.000000e-01, float 2.000000e+00>
  %245 = fmul float %229, 5.000000e-01
  store float %245, ptr %12, align 4, !tbaa !9
  %246 = fmul <2 x float> %231, <float 2.000000e+00, float 5.000000e-01>
  %247 = extractelement <2 x float> %244, i64 0
  %248 = fcmp ole float %243, %247
  %249 = select i1 %248, float %243, float %247
  %250 = fcmp ole float %249, %245
  %251 = select i1 %250, float %249, float %245
  %252 = extractelement <2 x float> %244, i64 1
  %253 = fcmp olt float %245, %252
  br i1 %253, label %._crit_edge361, label %.lr.ph360

._crit_edge361:                                   ; preds = %237, %.lr.ph360, %242, %._crit_edge338
  %.lcssa = phi float [ %.promoted353, %._crit_edge338 ], [ %243, %242 ], [ %228, %.lr.ph360 ], [ %228, %237 ]
  %254 = phi <2 x float> [ %217, %._crit_edge338 ], [ %244, %242 ], [ %230, %.lr.ph360 ], [ %230, %237 ]
  %shift = shufflevector <2 x float> %254, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %255 = fadd <2 x float> %shift, %254
  %256 = extractelement <2 x float> %255, i64 0
  %257 = fmul float %187, 0x3FEE666660000000
  %258 = fcmp ult float %256, %257
  br i1 %258, label %259, label %282

259:                                              ; preds = %._crit_edge361
  %260 = fcmp olt float %.lcssa, 1.000000e+00
  br i1 %260, label %261, label %267

261:                                              ; preds = %259
  %262 = getelementptr inbounds float, ptr %17, i64 %.4252376
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = fcmp uge float %263, 1.000000e+00
  %265 = fmul float %.lcssa, %263
  %266 = fcmp ugt float %265, %122
  %or.cond276 = select i1 %264, i1 true, i1 %266
  br i1 %or.cond276, label %267, label %282

267:                                              ; preds = %261, %259
  %268 = fcmp ogt float %.lcssa, 1.000000e+00
  %269 = getelementptr inbounds float, ptr %17, i64 %.4252376
  %270 = load float, ptr %269, align 4, !tbaa !9
  br i1 %268, label %271, label %._crit_edge405

271:                                              ; preds = %267
  %272 = fcmp ule float %270, 1.000000e+00
  %273 = fdiv float %123, %.lcssa
  %274 = fcmp ult float %270, %273
  %or.cond278 = select i1 %272, i1 true, i1 %274
  br i1 %or.cond278, label %._crit_edge405, label %282

._crit_edge405:                                   ; preds = %267, %271
  %275 = fdiv float 1.000000e+00, %.lcssa
  store float %275, ptr %12, align 4, !tbaa !9
  %276 = getelementptr inbounds float, ptr %17, i64 %.4252376
  %277 = fmul float %.lcssa, %270
  store float %277, ptr %276, align 4, !tbaa !9
  %278 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub383 = sub i64 %278, %.3243
  %279 = add i64 %reass.sub383, 1
  store i64 %279, ptr %10, align 8, !tbaa !5
  %280 = call i32 @f2c_csscal(ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef %172, ptr noundef nonnull %3) #4
  %281 = call i32 @f2c_csscal(ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef %gep374, ptr noundef nonnull @c__1) #4
  br label %282

282:                                              ; preds = %271, %261, %._crit_edge405, %._crit_edge326, %._crit_edge361
  %.1 = phi i64 [ %.0377, %._crit_edge326 ], [ %.0377, %._crit_edge361 ], [ 1, %._crit_edge405 ], [ %.0377, %261 ], [ %.0377, %271 ]
  %283 = add nsw i64 %.4252376, 1
  %284 = load i64, ptr %9, align 8, !tbaa !5
  %.not271.not = icmp slt i64 %.4252376, %284
  br i1 %.not271.not, label %.lr.ph379, label %._crit_edge380, !llvm.loop !25

._crit_edge380:                                   ; preds = %282
  %.not272 = icmp eq i64 %.1, 0
  br i1 %.not272, label %.loopexit, label %128

.loopexit:                                        ; preds = %.lr.ph, %64, %128, %._crit_edge380, %middle.block, %39, %._crit_edge319, %35
  %.4 = phi i64 [ 1, %35 ], [ %.3243, %._crit_edge319 ], [ 1, %39 ], [ 1, %middle.block ], [ %.3243, %._crit_edge380 ], [ %.3243, %128 ], [ %.0240, %64 ], [ 1, %.lr.ph ]
  store i64 %.4, ptr %4, align 8, !tbaa !5
  %285 = load i64, ptr %13, align 8, !tbaa !5
  store i64 %285, ptr %5, align 8, !tbaa !5
  br label %286

286:                                              ; preds = %.loopexit, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  ret i32 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 i32 @f2c_cswap(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @r_imag(ptr noundef) local_unnamed_addr #2

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare double @c_abs(ptr noundef) local_unnamed_addr #2

declare i32 @f2c_csscal(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.umax.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, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !14, !13}
!16 = !{!17, !10, i64 0}
!17 = !{!"", !10, i64 0, !10, i64 4}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12, !13, !14}
!23 = distinct !{!23, !12, !14, !13}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}


; 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