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

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

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

72:                                               ; preds = %8
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  br label %78

75:                                               ; preds = %8
  %76 = load ptr, ptr %13, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !9
  br label %78

78:                                               ; preds = %75, %72
  %79 = phi i32 [ %74, %72 ], [ %77, %75 ]
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %82

81:                                               ; preds = %78
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  br label %1084

82:                                               ; preds = %78
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = call i32 @lsame_(ptr noundef %83, ptr noundef @.str)
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %320

86:                                               ; preds = %82
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = call i32 @lsame_(ptr noundef %87, ptr noundef @.str.1)
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %206

90:                                               ; preds = %86
  store float 1.000000e+00, ptr %27, align 4, !tbaa !11
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = call i32 @lsame_(ptr noundef %91, ptr noundef @.str.1)
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %94, label %154

94:                                               ; preds = %90
  %95 = load ptr, ptr %13, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %96, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %150, %94
  %98 = load i32, ptr %25, align 4, !tbaa !9
  %99 = load i32, ptr %19, align 4, !tbaa !9
  %100 = icmp sle i32 %98, %99
  br i1 %100, label %101, label %153

101:                                              ; preds = %97
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %103, ptr %21, align 4, !tbaa !9
  %104 = load i32, ptr %25, align 4, !tbaa !9
  %105 = sub nsw i32 %104, 1
  store i32 %105, ptr %22, align 4, !tbaa !9
  %106 = load i32, ptr %21, align 4, !tbaa !9
  %107 = load i32, ptr %22, align 4, !tbaa !9
  %108 = icmp sle i32 %106, %107
  br i1 %108, label %109, label %111

109:                                              ; preds = %101
  %110 = load i32, ptr %21, align 4, !tbaa !9
  br label %113

111:                                              ; preds = %101
  %112 = load i32, ptr %22, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %111, %109
  %114 = phi i32 [ %110, %109 ], [ %112, %111 ]
  store i32 %114, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %146, %113
  %116 = load i32, ptr %24, align 4, !tbaa !9
  %117 = load i32, ptr %20, align 4, !tbaa !9
  %118 = icmp sle i32 %116, %117
  br i1 %118, label %119, label %149

119:                                              ; preds = %115
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = load i32, ptr %24, align 4, !tbaa !9
  %122 = load i32, ptr %25, align 4, !tbaa !9
  %123 = load i32, ptr %17, align 4, !tbaa !9
  %124 = mul nsw i32 %122, %123
  %125 = add nsw i32 %121, %124
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds %struct.complex, ptr %120, i64 %126
  %128 = call <2 x float> @Cf(ptr noundef %127)
  store <2 x float> %128, ptr %31, align 4
  %129 = getelementptr inbounds { float, float }, ptr %31, i32 0, i32 0
  %130 = load float, ptr %129, align 4
  %131 = getelementptr inbounds { float, float }, ptr %31, i32 0, i32 1
  %132 = load float, ptr %131, align 4
  %133 = getelementptr inbounds { float, float }, ptr %32, i32 0, i32 0
  %134 = getelementptr inbounds { float, float }, ptr %32, i32 0, i32 1
  store float %130, ptr %133, align 4
  store float %132, ptr %134, align 4
  %135 = load <2 x float>, ptr %32, align 4
  %136 = call float @cabsf(<2 x float> noundef %135) #5
  store float %136, ptr %29, align 4, !tbaa !11
  %137 = load float, ptr %27, align 4, !tbaa !11
  %138 = load float, ptr %29, align 4, !tbaa !11
  %139 = fcmp olt float %137, %138
  br i1 %139, label %143, label %140

140:                                              ; preds = %119
  %141 = call i32 @sisnan_(ptr noundef %29)
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %140, %119
  %144 = load float, ptr %29, align 4, !tbaa !11
  store float %144, ptr %27, align 4, !tbaa !11
  br label %145

145:                                              ; preds = %143, %140
  br label %146

146:                                              ; preds = %145
  %147 = load i32, ptr %24, align 4, !tbaa !9
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %24, align 4, !tbaa !9
  br label %115, !llvm.loop !13

149:                                              ; preds = %115
  br label %150

150:                                              ; preds = %149
  %151 = load i32, ptr %25, align 4, !tbaa !9
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr %25, align 4, !tbaa !9
  br label %97, !llvm.loop !15

153:                                              ; preds = %97
  br label %205

154:                                              ; preds = %90
  %155 = load ptr, ptr %13, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  store i32 %156, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %201, %154
  %158 = load i32, ptr %25, align 4, !tbaa !9
  %159 = load i32, ptr %19, align 4, !tbaa !9
  %160 = icmp sle i32 %158, %159
  br i1 %160, label %161, label %204

161:                                              ; preds = %157
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  store i32 %163, ptr %20, align 4, !tbaa !9
  %164 = load i32, ptr %25, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %24, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %197, %161
  %167 = load i32, ptr %24, align 4, !tbaa !9
  %168 = load i32, ptr %20, align 4, !tbaa !9
  %169 = icmp sle i32 %167, %168
  br i1 %169, label %170, label %200

170:                                              ; preds = %166
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  %172 = load i32, ptr %24, align 4, !tbaa !9
  %173 = load i32, ptr %25, align 4, !tbaa !9
  %174 = load i32, ptr %17, align 4, !tbaa !9
  %175 = mul nsw i32 %173, %174
  %176 = add nsw i32 %172, %175
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds %struct.complex, ptr %171, i64 %177
  %179 = call <2 x float> @Cf(ptr noundef %178)
  store <2 x float> %179, ptr %33, align 4
  %180 = getelementptr inbounds { float, float }, ptr %33, i32 0, i32 0
  %181 = load float, ptr %180, align 4
  %182 = getelementptr inbounds { float, float }, ptr %33, i32 0, i32 1
  %183 = load float, ptr %182, align 4
  %184 = getelementptr inbounds { float, float }, ptr %34, i32 0, i32 0
  %185 = getelementptr inbounds { float, float }, ptr %34, i32 0, i32 1
  store float %181, ptr %184, align 4
  store float %183, ptr %185, align 4
  %186 = load <2 x float>, ptr %34, align 4
  %187 = call float @cabsf(<2 x float> noundef %186) #5
  store float %187, ptr %29, align 4, !tbaa !11
  %188 = load float, ptr %27, align 4, !tbaa !11
  %189 = load float, ptr %29, align 4, !tbaa !11
  %190 = fcmp olt float %188, %189
  br i1 %190, label %194, label %191

191:                                              ; preds = %170
  %192 = call i32 @sisnan_(ptr noundef %29)
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %191, %170
  %195 = load float, ptr %29, align 4, !tbaa !11
  store float %195, ptr %27, align 4, !tbaa !11
  br label %196

196:                                              ; preds = %194, %191
  br label %197

197:                                              ; preds = %196
  %198 = load i32, ptr %24, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %24, align 4, !tbaa !9
  br label %166, !llvm.loop !16

200:                                              ; preds = %166
  br label %201

201:                                              ; preds = %200
  %202 = load i32, ptr %25, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %25, align 4, !tbaa !9
  br label %157, !llvm.loop !17

204:                                              ; preds = %157
  br label %205

205:                                              ; preds = %204, %153
  br label %319

206:                                              ; preds = %86
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = call i32 @lsame_(ptr noundef %207, ptr noundef @.str.1)
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %268

210:                                              ; preds = %206
  %211 = load ptr, ptr %13, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  store i32 %212, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %264, %210
  %214 = load i32, ptr %25, align 4, !tbaa !9
  %215 = load i32, ptr %19, align 4, !tbaa !9
  %216 = icmp sle i32 %214, %215
  br i1 %216, label %217, label %267

217:                                              ; preds = %213
  %218 = load ptr, ptr %12, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = load i32, ptr %25, align 4, !tbaa !9
  %221 = icmp sle i32 %219, %220
  br i1 %221, label %222, label %225

222:                                              ; preds = %217
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  br label %227

225:                                              ; preds = %217
  %226 = load i32, ptr %25, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %225, %222
  %228 = phi i32 [ %224, %222 ], [ %226, %225 ]
  store i32 %228, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %260, %227
  %230 = load i32, ptr %24, align 4, !tbaa !9
  %231 = load i32, ptr %20, align 4, !tbaa !9
  %232 = icmp sle i32 %230, %231
  br i1 %232, label %233, label %263

233:                                              ; preds = %229
  %234 = load ptr, ptr %14, align 8, !tbaa !5
  %235 = load i32, ptr %24, align 4, !tbaa !9
  %236 = load i32, ptr %25, align 4, !tbaa !9
  %237 = load i32, ptr %17, align 4, !tbaa !9
  %238 = mul nsw i32 %236, %237
  %239 = add nsw i32 %235, %238
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.complex, ptr %234, i64 %240
  %242 = call <2 x float> @Cf(ptr noundef %241)
  store <2 x float> %242, ptr %35, align 4
  %243 = getelementptr inbounds { float, float }, ptr %35, i32 0, i32 0
  %244 = load float, ptr %243, align 4
  %245 = getelementptr inbounds { float, float }, ptr %35, i32 0, i32 1
  %246 = load float, ptr %245, align 4
  %247 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 0
  %248 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 1
  store float %244, ptr %247, align 4
  store float %246, ptr %248, align 4
  %249 = load <2 x float>, ptr %36, align 4
  %250 = call float @cabsf(<2 x float> noundef %249) #5
  store float %250, ptr %29, align 4, !tbaa !11
  %251 = load float, ptr %27, align 4, !tbaa !11
  %252 = load float, ptr %29, align 4, !tbaa !11
  %253 = fcmp olt float %251, %252
  br i1 %253, label %257, label %254

254:                                              ; preds = %233
  %255 = call i32 @sisnan_(ptr noundef %29)
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %259

257:                                              ; preds = %254, %233
  %258 = load float, ptr %29, align 4, !tbaa !11
  store float %258, ptr %27, align 4, !tbaa !11
  br label %259

259:                                              ; preds = %257, %254
  br label %260

260:                                              ; preds = %259
  %261 = load i32, ptr %24, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %24, align 4, !tbaa !9
  br label %229, !llvm.loop !18

263:                                              ; preds = %229
  br label %264

264:                                              ; preds = %263
  %265 = load i32, ptr %25, align 4, !tbaa !9
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %25, align 4, !tbaa !9
  br label %213, !llvm.loop !19

267:                                              ; preds = %213
  br label %318

268:                                              ; preds = %206
  %269 = load ptr, ptr %13, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  store i32 %270, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %314, %268
  %272 = load i32, ptr %25, align 4, !tbaa !9
  %273 = load i32, ptr %19, align 4, !tbaa !9
  %274 = icmp sle i32 %272, %273
  br i1 %274, label %275, label %317

275:                                              ; preds = %271
  %276 = load ptr, ptr %12, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  store i32 %277, ptr %20, align 4, !tbaa !9
  %278 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %278, ptr %24, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %310, %275
  %280 = load i32, ptr %24, align 4, !tbaa !9
  %281 = load i32, ptr %20, align 4, !tbaa !9
  %282 = icmp sle i32 %280, %281
  br i1 %282, label %283, label %313

283:                                              ; preds = %279
  %284 = load ptr, ptr %14, align 8, !tbaa !5
  %285 = load i32, ptr %24, align 4, !tbaa !9
  %286 = load i32, ptr %25, align 4, !tbaa !9
  %287 = load i32, ptr %17, align 4, !tbaa !9
  %288 = mul nsw i32 %286, %287
  %289 = add nsw i32 %285, %288
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds %struct.complex, ptr %284, i64 %290
  %292 = call <2 x float> @Cf(ptr noundef %291)
  store <2 x float> %292, ptr %37, align 4
  %293 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 0
  %294 = load float, ptr %293, align 4
  %295 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 1
  %296 = load float, ptr %295, align 4
  %297 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 0
  %298 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 1
  store float %294, ptr %297, align 4
  store float %296, ptr %298, align 4
  %299 = load <2 x float>, ptr %38, align 4
  %300 = call float @cabsf(<2 x float> noundef %299) #5
  store float %300, ptr %29, align 4, !tbaa !11
  %301 = load float, ptr %27, align 4, !tbaa !11
  %302 = load float, ptr %29, align 4, !tbaa !11
  %303 = fcmp olt float %301, %302
  br i1 %303, label %307, label %304

304:                                              ; preds = %283
  %305 = call i32 @sisnan_(ptr noundef %29)
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %309

307:                                              ; preds = %304, %283
  %308 = load float, ptr %29, align 4, !tbaa !11
  store float %308, ptr %27, align 4, !tbaa !11
  br label %309

309:                                              ; preds = %307, %304
  br label %310

310:                                              ; preds = %309
  %311 = load i32, ptr %24, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %24, align 4, !tbaa !9
  br label %279, !llvm.loop !20

313:                                              ; preds = %279
  br label %314

314:                                              ; preds = %313
  %315 = load i32, ptr %25, align 4, !tbaa !9
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %25, align 4, !tbaa !9
  br label %271, !llvm.loop !21

317:                                              ; preds = %271
  br label %318

318:                                              ; preds = %317, %267
  br label %319

319:                                              ; preds = %318, %205
  br label %1083

320:                                              ; preds = %82
  %321 = load ptr, ptr %9, align 8, !tbaa !5
  %322 = call i32 @lsame_(ptr noundef %321, ptr noundef @.str.2)
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %329, label %324

324:                                              ; preds = %320
  %325 = load ptr, ptr %9, align 8, !tbaa !5
  %326 = load i8, ptr %325, align 1, !tbaa !22
  %327 = zext i8 %326 to i32
  %328 = icmp eq i32 %327, 49
  br i1 %328, label %329, label %525

329:                                              ; preds = %324, %320
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = call i32 @lsame_(ptr noundef %330, ptr noundef @.str.1)
  store i32 %331, ptr %26, align 4, !tbaa !9
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = call i32 @lsame_(ptr noundef %332, ptr noundef @.str.1)
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %435

335:                                              ; preds = %329
  %336 = load ptr, ptr %13, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  store i32 %337, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %431, %335
  %339 = load i32, ptr %25, align 4, !tbaa !9
  %340 = load i32, ptr %19, align 4, !tbaa !9
  %341 = icmp sle i32 %339, %340
  br i1 %341, label %342, label %434

342:                                              ; preds = %338
  %343 = load i32, ptr %26, align 4, !tbaa !9
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %381

345:                                              ; preds = %342
  %346 = load i32, ptr %25, align 4, !tbaa !9
  %347 = load ptr, ptr %12, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = icmp sle i32 %346, %348
  br i1 %349, label %350, label %381

350:                                              ; preds = %345
  store float 1.000000e+00, ptr %29, align 4, !tbaa !11
  %351 = load i32, ptr %25, align 4, !tbaa !9
  %352 = sub nsw i32 %351, 1
  store i32 %352, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %377, %350
  %354 = load i32, ptr %24, align 4, !tbaa !9
  %355 = load i32, ptr %20, align 4, !tbaa !9
  %356 = icmp sle i32 %354, %355
  br i1 %356, label %357, label %380

357:                                              ; preds = %353
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  %359 = load i32, ptr %24, align 4, !tbaa !9
  %360 = load i32, ptr %25, align 4, !tbaa !9
  %361 = load i32, ptr %17, align 4, !tbaa !9
  %362 = mul nsw i32 %360, %361
  %363 = add nsw i32 %359, %362
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.complex, ptr %358, i64 %364
  %366 = call <2 x float> @Cf(ptr noundef %365)
  store <2 x float> %366, ptr %39, align 4
  %367 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %368 = load float, ptr %367, align 4
  %369 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %370 = load float, ptr %369, align 4
  %371 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 0
  %372 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 1
  store float %368, ptr %371, align 4
  store float %370, ptr %372, align 4
  %373 = load <2 x float>, ptr %40, align 4
  %374 = call float @cabsf(<2 x float> noundef %373) #5
  %375 = load float, ptr %29, align 4, !tbaa !11
  %376 = fadd float %375, %374
  store float %376, ptr %29, align 4, !tbaa !11
  br label %377

377:                                              ; preds = %357
  %378 = load i32, ptr %24, align 4, !tbaa !9
  %379 = add nsw i32 %378, 1
  store i32 %379, ptr %24, align 4, !tbaa !9
  br label %353, !llvm.loop !23

380:                                              ; preds = %353
  br label %421

381:                                              ; preds = %345, %342
  store float 0.000000e+00, ptr %29, align 4, !tbaa !11
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = load i32, ptr %25, align 4, !tbaa !9
  %385 = icmp sle i32 %383, %384
  br i1 %385, label %386, label %389

386:                                              ; preds = %381
  %387 = load ptr, ptr %12, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  br label %391

389:                                              ; preds = %381
  %390 = load i32, ptr %25, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %389, %386
  %392 = phi i32 [ %388, %386 ], [ %390, %389 ]
  store i32 %392, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %417, %391
  %394 = load i32, ptr %24, align 4, !tbaa !9
  %395 = load i32, ptr %20, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %420

397:                                              ; preds = %393
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  %399 = load i32, ptr %24, align 4, !tbaa !9
  %400 = load i32, ptr %25, align 4, !tbaa !9
  %401 = load i32, ptr %17, align 4, !tbaa !9
  %402 = mul nsw i32 %400, %401
  %403 = add nsw i32 %399, %402
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct.complex, ptr %398, i64 %404
  %406 = call <2 x float> @Cf(ptr noundef %405)
  store <2 x float> %406, ptr %41, align 4
  %407 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %408 = load float, ptr %407, align 4
  %409 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %410 = load float, ptr %409, align 4
  %411 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %412 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  store float %408, ptr %411, align 4
  store float %410, ptr %412, align 4
  %413 = load <2 x float>, ptr %42, align 4
  %414 = call float @cabsf(<2 x float> noundef %413) #5
  %415 = load float, ptr %29, align 4, !tbaa !11
  %416 = fadd float %415, %414
  store float %416, ptr %29, align 4, !tbaa !11
  br label %417

417:                                              ; preds = %397
  %418 = load i32, ptr %24, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr %24, align 4, !tbaa !9
  br label %393, !llvm.loop !24

420:                                              ; preds = %393
  br label %421

421:                                              ; preds = %420, %380
  %422 = load float, ptr %27, align 4, !tbaa !11
  %423 = load float, ptr %29, align 4, !tbaa !11
  %424 = fcmp olt float %422, %423
  br i1 %424, label %428, label %425

425:                                              ; preds = %421
  %426 = call i32 @sisnan_(ptr noundef %29)
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %430

428:                                              ; preds = %425, %421
  %429 = load float, ptr %29, align 4, !tbaa !11
  store float %429, ptr %27, align 4, !tbaa !11
  br label %430

430:                                              ; preds = %428, %425
  br label %431

431:                                              ; preds = %430
  %432 = load i32, ptr %25, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %25, align 4, !tbaa !9
  br label %338, !llvm.loop !25

434:                                              ; preds = %338
  br label %524

435:                                              ; preds = %329
  %436 = load ptr, ptr %13, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  store i32 %437, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %520, %435
  %439 = load i32, ptr %25, align 4, !tbaa !9
  %440 = load i32, ptr %19, align 4, !tbaa !9
  %441 = icmp sle i32 %439, %440
  br i1 %441, label %442, label %523

442:                                              ; preds = %438
  %443 = load i32, ptr %26, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %478

445:                                              ; preds = %442
  store float 1.000000e+00, ptr %29, align 4, !tbaa !11
  %446 = load ptr, ptr %12, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  store i32 %447, ptr %20, align 4, !tbaa !9
  %448 = load i32, ptr %25, align 4, !tbaa !9
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr %24, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %474, %445
  %451 = load i32, ptr %24, align 4, !tbaa !9
  %452 = load i32, ptr %20, align 4, !tbaa !9
  %453 = icmp sle i32 %451, %452
  br i1 %453, label %454, label %477

454:                                              ; preds = %450
  %455 = load ptr, ptr %14, align 8, !tbaa !5
  %456 = load i32, ptr %24, align 4, !tbaa !9
  %457 = load i32, ptr %25, align 4, !tbaa !9
  %458 = load i32, ptr %17, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %456, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.complex, ptr %455, i64 %461
  %463 = call <2 x float> @Cf(ptr noundef %462)
  store <2 x float> %463, ptr %43, align 4
  %464 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %465 = load float, ptr %464, align 4
  %466 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %467 = load float, ptr %466, align 4
  %468 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %469 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  store float %465, ptr %468, align 4
  store float %467, ptr %469, align 4
  %470 = load <2 x float>, ptr %44, align 4
  %471 = call float @cabsf(<2 x float> noundef %470) #5
  %472 = load float, ptr %29, align 4, !tbaa !11
  %473 = fadd float %472, %471
  store float %473, ptr %29, align 4, !tbaa !11
  br label %474

474:                                              ; preds = %454
  %475 = load i32, ptr %24, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %24, align 4, !tbaa !9
  br label %450, !llvm.loop !26

477:                                              ; preds = %450
  br label %510

478:                                              ; preds = %442
  store float 0.000000e+00, ptr %29, align 4, !tbaa !11
  %479 = load ptr, ptr %12, align 8, !tbaa !5
  %480 = load i32, ptr %479, align 4, !tbaa !9
  store i32 %480, ptr %20, align 4, !tbaa !9
  %481 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %481, ptr %24, align 4, !tbaa !9
  br label %482

482:                                              ; preds = %506, %478
  %483 = load i32, ptr %24, align 4, !tbaa !9
  %484 = load i32, ptr %20, align 4, !tbaa !9
  %485 = icmp sle i32 %483, %484
  br i1 %485, label %486, label %509

486:                                              ; preds = %482
  %487 = load ptr, ptr %14, align 8, !tbaa !5
  %488 = load i32, ptr %24, align 4, !tbaa !9
  %489 = load i32, ptr %25, align 4, !tbaa !9
  %490 = load i32, ptr %17, align 4, !tbaa !9
  %491 = mul nsw i32 %489, %490
  %492 = add nsw i32 %488, %491
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds %struct.complex, ptr %487, i64 %493
  %495 = call <2 x float> @Cf(ptr noundef %494)
  store <2 x float> %495, ptr %45, align 4
  %496 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %497 = load float, ptr %496, align 4
  %498 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  %499 = load float, ptr %498, align 4
  %500 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 0
  %501 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 1
  store float %497, ptr %500, align 4
  store float %499, ptr %501, align 4
  %502 = load <2 x float>, ptr %46, align 4
  %503 = call float @cabsf(<2 x float> noundef %502) #5
  %504 = load float, ptr %29, align 4, !tbaa !11
  %505 = fadd float %504, %503
  store float %505, ptr %29, align 4, !tbaa !11
  br label %506

506:                                              ; preds = %486
  %507 = load i32, ptr %24, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %24, align 4, !tbaa !9
  br label %482, !llvm.loop !27

509:                                              ; preds = %482
  br label %510

510:                                              ; preds = %509, %477
  %511 = load float, ptr %27, align 4, !tbaa !11
  %512 = load float, ptr %29, align 4, !tbaa !11
  %513 = fcmp olt float %511, %512
  br i1 %513, label %517, label %514

514:                                              ; preds = %510
  %515 = call i32 @sisnan_(ptr noundef %29)
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %519

517:                                              ; preds = %514, %510
  %518 = load float, ptr %29, align 4, !tbaa !11
  store float %518, ptr %27, align 4, !tbaa !11
  br label %519

519:                                              ; preds = %517, %514
  br label %520

520:                                              ; preds = %519
  %521 = load i32, ptr %25, align 4, !tbaa !9
  %522 = add nsw i32 %521, 1
  store i32 %522, ptr %25, align 4, !tbaa !9
  br label %438, !llvm.loop !28

523:                                              ; preds = %438
  br label %524

524:                                              ; preds = %523, %434
  br label %1082

525:                                              ; preds = %324
  %526 = load ptr, ptr %9, align 8, !tbaa !5
  %527 = call i32 @lsame_(ptr noundef %526, ptr noundef @.str.3)
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %865

529:                                              ; preds = %525
  %530 = load ptr, ptr %10, align 8, !tbaa !5
  %531 = call i32 @lsame_(ptr noundef %530, ptr noundef @.str.1)
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %533, label %680

533:                                              ; preds = %529
  %534 = load ptr, ptr %11, align 8, !tbaa !5
  %535 = call i32 @lsame_(ptr noundef %534, ptr noundef @.str.1)
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %609

537:                                              ; preds = %533
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  store i32 %539, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %549, %537
  %541 = load i32, ptr %24, align 4, !tbaa !9
  %542 = load i32, ptr %19, align 4, !tbaa !9
  %543 = icmp sle i32 %541, %542
  br i1 %543, label %544, label %552

544:                                              ; preds = %540
  %545 = load ptr, ptr %16, align 8, !tbaa !5
  %546 = load i32, ptr %24, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds float, ptr %545, i64 %547
  store float 1.000000e+00, ptr %548, align 4, !tbaa !11
  br label %549

549:                                              ; preds = %544
  %550 = load i32, ptr %24, align 4, !tbaa !9
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr %24, align 4, !tbaa !9
  br label %540, !llvm.loop !29

552:                                              ; preds = %540
  %553 = load ptr, ptr %13, align 8, !tbaa !5
  %554 = load i32, ptr %553, align 4, !tbaa !9
  store i32 %554, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %555

555:                                              ; preds = %605, %552
  %556 = load i32, ptr %25, align 4, !tbaa !9
  %557 = load i32, ptr %19, align 4, !tbaa !9
  %558 = icmp sle i32 %556, %557
  br i1 %558, label %559, label %608

559:                                              ; preds = %555
  %560 = load ptr, ptr %12, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  store i32 %561, ptr %21, align 4, !tbaa !9
  %562 = load i32, ptr %25, align 4, !tbaa !9
  %563 = sub nsw i32 %562, 1
  store i32 %563, ptr %22, align 4, !tbaa !9
  %564 = load i32, ptr %21, align 4, !tbaa !9
  %565 = load i32, ptr %22, align 4, !tbaa !9
  %566 = icmp sle i32 %564, %565
  br i1 %566, label %567, label %569

567:                                              ; preds = %559
  %568 = load i32, ptr %21, align 4, !tbaa !9
  br label %571

569:                                              ; preds = %559
  %570 = load i32, ptr %22, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %569, %567
  %572 = phi i32 [ %568, %567 ], [ %570, %569 ]
  store i32 %572, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %601, %571
  %574 = load i32, ptr %24, align 4, !tbaa !9
  %575 = load i32, ptr %20, align 4, !tbaa !9
  %576 = icmp sle i32 %574, %575
  br i1 %576, label %577, label %604

577:                                              ; preds = %573
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = load i32, ptr %24, align 4, !tbaa !9
  %580 = load i32, ptr %25, align 4, !tbaa !9
  %581 = load i32, ptr %17, align 4, !tbaa !9
  %582 = mul nsw i32 %580, %581
  %583 = add nsw i32 %579, %582
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds %struct.complex, ptr %578, i64 %584
  %586 = call <2 x float> @Cf(ptr noundef %585)
  store <2 x float> %586, ptr %47, align 4
  %587 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 0
  %588 = load float, ptr %587, align 4
  %589 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 1
  %590 = load float, ptr %589, align 4
  %591 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 0
  %592 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 1
  store float %588, ptr %591, align 4
  store float %590, ptr %592, align 4
  %593 = load <2 x float>, ptr %48, align 4
  %594 = call float @cabsf(<2 x float> noundef %593) #5
  %595 = load ptr, ptr %16, align 8, !tbaa !5
  %596 = load i32, ptr %24, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds float, ptr %595, i64 %597
  %599 = load float, ptr %598, align 4, !tbaa !11
  %600 = fadd float %599, %594
  store float %600, ptr %598, align 4, !tbaa !11
  br label %601

601:                                              ; preds = %577
  %602 = load i32, ptr %24, align 4, !tbaa !9
  %603 = add nsw i32 %602, 1
  store i32 %603, ptr %24, align 4, !tbaa !9
  br label %573, !llvm.loop !30

604:                                              ; preds = %573
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr %25, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %25, align 4, !tbaa !9
  br label %555, !llvm.loop !31

608:                                              ; preds = %555
  br label %679

609:                                              ; preds = %533
  %610 = load ptr, ptr %12, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  store i32 %611, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %621, %609
  %613 = load i32, ptr %24, align 4, !tbaa !9
  %614 = load i32, ptr %19, align 4, !tbaa !9
  %615 = icmp sle i32 %613, %614
  br i1 %615, label %616, label %624

616:                                              ; preds = %612
  %617 = load ptr, ptr %16, align 8, !tbaa !5
  %618 = load i32, ptr %24, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds float, ptr %617, i64 %619
  store float 0.000000e+00, ptr %620, align 4, !tbaa !11
  br label %621

621:                                              ; preds = %616
  %622 = load i32, ptr %24, align 4, !tbaa !9
  %623 = add nsw i32 %622, 1
  store i32 %623, ptr %24, align 4, !tbaa !9
  br label %612, !llvm.loop !32

624:                                              ; preds = %612
  %625 = load ptr, ptr %13, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  store i32 %626, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %675, %624
  %628 = load i32, ptr %25, align 4, !tbaa !9
  %629 = load i32, ptr %19, align 4, !tbaa !9
  %630 = icmp sle i32 %628, %629
  br i1 %630, label %631, label %678

631:                                              ; preds = %627
  %632 = load ptr, ptr %12, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = load i32, ptr %25, align 4, !tbaa !9
  %635 = icmp sle i32 %633, %634
  br i1 %635, label %636, label %639

636:                                              ; preds = %631
  %637 = load ptr, ptr %12, align 8, !tbaa !5
  %638 = load i32, ptr %637, align 4, !tbaa !9
  br label %641

639:                                              ; preds = %631
  %640 = load i32, ptr %25, align 4, !tbaa !9
  br label %641

641:                                              ; preds = %639, %636
  %642 = phi i32 [ %638, %636 ], [ %640, %639 ]
  store i32 %642, ptr %20, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %671, %641
  %644 = load i32, ptr %24, align 4, !tbaa !9
  %645 = load i32, ptr %20, align 4, !tbaa !9
  %646 = icmp sle i32 %644, %645
  br i1 %646, label %647, label %674

647:                                              ; preds = %643
  %648 = load ptr, ptr %14, align 8, !tbaa !5
  %649 = load i32, ptr %24, align 4, !tbaa !9
  %650 = load i32, ptr %25, align 4, !tbaa !9
  %651 = load i32, ptr %17, align 4, !tbaa !9
  %652 = mul nsw i32 %650, %651
  %653 = add nsw i32 %649, %652
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.complex, ptr %648, i64 %654
  %656 = call <2 x float> @Cf(ptr noundef %655)
  store <2 x float> %656, ptr %49, align 4
  %657 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 0
  %658 = load float, ptr %657, align 4
  %659 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 1
  %660 = load float, ptr %659, align 4
  %661 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 0
  %662 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 1
  store float %658, ptr %661, align 4
  store float %660, ptr %662, align 4
  %663 = load <2 x float>, ptr %50, align 4
  %664 = call float @cabsf(<2 x float> noundef %663) #5
  %665 = load ptr, ptr %16, align 8, !tbaa !5
  %666 = load i32, ptr %24, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %665, i64 %667
  %669 = load float, ptr %668, align 4, !tbaa !11
  %670 = fadd float %669, %664
  store float %670, ptr %668, align 4, !tbaa !11
  br label %671

671:                                              ; preds = %647
  %672 = load i32, ptr %24, align 4, !tbaa !9
  %673 = add nsw i32 %672, 1
  store i32 %673, ptr %24, align 4, !tbaa !9
  br label %643, !llvm.loop !33

674:                                              ; preds = %643
  br label %675

675:                                              ; preds = %674
  %676 = load i32, ptr %25, align 4, !tbaa !9
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %25, align 4, !tbaa !9
  br label %627, !llvm.loop !34

678:                                              ; preds = %627
  br label %679

679:                                              ; preds = %678, %608
  br label %839

680:                                              ; preds = %529
  %681 = load ptr, ptr %11, align 8, !tbaa !5
  %682 = call i32 @lsame_(ptr noundef %681, ptr noundef @.str.1)
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %776

684:                                              ; preds = %680
  %685 = load ptr, ptr %12, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = load ptr, ptr %13, align 8, !tbaa !5
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = icmp sle i32 %686, %688
  br i1 %689, label %690, label %693

690:                                              ; preds = %684
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  br label %696

693:                                              ; preds = %684
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  br label %696

696:                                              ; preds = %693, %690
  %697 = phi i32 [ %692, %690 ], [ %695, %693 ]
  store i32 %697, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %707, %696
  %699 = load i32, ptr %24, align 4, !tbaa !9
  %700 = load i32, ptr %19, align 4, !tbaa !9
  %701 = icmp sle i32 %699, %700
  br i1 %701, label %702, label %710

702:                                              ; preds = %698
  %703 = load ptr, ptr %16, align 8, !tbaa !5
  %704 = load i32, ptr %24, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds float, ptr %703, i64 %705
  store float 1.000000e+00, ptr %706, align 4, !tbaa !11
  br label %707

707:                                              ; preds = %702
  %708 = load i32, ptr %24, align 4, !tbaa !9
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr %24, align 4, !tbaa !9
  br label %698, !llvm.loop !35

710:                                              ; preds = %698
  %711 = load ptr, ptr %12, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  store i32 %712, ptr %19, align 4, !tbaa !9
  %713 = load ptr, ptr %13, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = add nsw i32 %714, 1
  store i32 %715, ptr %24, align 4, !tbaa !9
  br label %716

716:                                              ; preds = %725, %710
  %717 = load i32, ptr %24, align 4, !tbaa !9
  %718 = load i32, ptr %19, align 4, !tbaa !9
  %719 = icmp sle i32 %717, %718
  br i1 %719, label %720, label %728

720:                                              ; preds = %716
  %721 = load ptr, ptr %16, align 8, !tbaa !5
  %722 = load i32, ptr %24, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds float, ptr %721, i64 %723
  store float 0.000000e+00, ptr %724, align 4, !tbaa !11
  br label %725

725:                                              ; preds = %720
  %726 = load i32, ptr %24, align 4, !tbaa !9
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %24, align 4, !tbaa !9
  br label %716, !llvm.loop !36

728:                                              ; preds = %716
  %729 = load ptr, ptr %13, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  store i32 %730, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %772, %728
  %732 = load i32, ptr %25, align 4, !tbaa !9
  %733 = load i32, ptr %19, align 4, !tbaa !9
  %734 = icmp sle i32 %732, %733
  br i1 %734, label %735, label %775

735:                                              ; preds = %731
  %736 = load ptr, ptr %12, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  store i32 %737, ptr %20, align 4, !tbaa !9
  %738 = load i32, ptr %25, align 4, !tbaa !9
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %24, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %768, %735
  %741 = load i32, ptr %24, align 4, !tbaa !9
  %742 = load i32, ptr %20, align 4, !tbaa !9
  %743 = icmp sle i32 %741, %742
  br i1 %743, label %744, label %771

744:                                              ; preds = %740
  %745 = load ptr, ptr %14, align 8, !tbaa !5
  %746 = load i32, ptr %24, align 4, !tbaa !9
  %747 = load i32, ptr %25, align 4, !tbaa !9
  %748 = load i32, ptr %17, align 4, !tbaa !9
  %749 = mul nsw i32 %747, %748
  %750 = add nsw i32 %746, %749
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds %struct.complex, ptr %745, i64 %751
  %753 = call <2 x float> @Cf(ptr noundef %752)
  store <2 x float> %753, ptr %51, align 4
  %754 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 0
  %755 = load float, ptr %754, align 4
  %756 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 1
  %757 = load float, ptr %756, align 4
  %758 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 0
  %759 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 1
  store float %755, ptr %758, align 4
  store float %757, ptr %759, align 4
  %760 = load <2 x float>, ptr %52, align 4
  %761 = call float @cabsf(<2 x float> noundef %760) #5
  %762 = load ptr, ptr %16, align 8, !tbaa !5
  %763 = load i32, ptr %24, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds float, ptr %762, i64 %764
  %766 = load float, ptr %765, align 4, !tbaa !11
  %767 = fadd float %766, %761
  store float %767, ptr %765, align 4, !tbaa !11
  br label %768

768:                                              ; preds = %744
  %769 = load i32, ptr %24, align 4, !tbaa !9
  %770 = add nsw i32 %769, 1
  store i32 %770, ptr %24, align 4, !tbaa !9
  br label %740, !llvm.loop !37

771:                                              ; preds = %740
  br label %772

772:                                              ; preds = %771
  %773 = load i32, ptr %25, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  store i32 %774, ptr %25, align 4, !tbaa !9
  br label %731, !llvm.loop !38

775:                                              ; preds = %731
  br label %838

776:                                              ; preds = %680
  %777 = load ptr, ptr %12, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  store i32 %778, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %779

779:                                              ; preds = %788, %776
  %780 = load i32, ptr %24, align 4, !tbaa !9
  %781 = load i32, ptr %19, align 4, !tbaa !9
  %782 = icmp sle i32 %780, %781
  br i1 %782, label %783, label %791

783:                                              ; preds = %779
  %784 = load ptr, ptr %16, align 8, !tbaa !5
  %785 = load i32, ptr %24, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %784, i64 %786
  store float 0.000000e+00, ptr %787, align 4, !tbaa !11
  br label %788

788:                                              ; preds = %783
  %789 = load i32, ptr %24, align 4, !tbaa !9
  %790 = add nsw i32 %789, 1
  store i32 %790, ptr %24, align 4, !tbaa !9
  br label %779, !llvm.loop !39

791:                                              ; preds = %779
  %792 = load ptr, ptr %13, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  store i32 %793, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %794

794:                                              ; preds = %834, %791
  %795 = load i32, ptr %25, align 4, !tbaa !9
  %796 = load i32, ptr %19, align 4, !tbaa !9
  %797 = icmp sle i32 %795, %796
  br i1 %797, label %798, label %837

798:                                              ; preds = %794
  %799 = load ptr, ptr %12, align 8, !tbaa !5
  %800 = load i32, ptr %799, align 4, !tbaa !9
  store i32 %800, ptr %20, align 4, !tbaa !9
  %801 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %801, ptr %24, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %830, %798
  %803 = load i32, ptr %24, align 4, !tbaa !9
  %804 = load i32, ptr %20, align 4, !tbaa !9
  %805 = icmp sle i32 %803, %804
  br i1 %805, label %806, label %833

806:                                              ; preds = %802
  %807 = load ptr, ptr %14, align 8, !tbaa !5
  %808 = load i32, ptr %24, align 4, !tbaa !9
  %809 = load i32, ptr %25, align 4, !tbaa !9
  %810 = load i32, ptr %17, align 4, !tbaa !9
  %811 = mul nsw i32 %809, %810
  %812 = add nsw i32 %808, %811
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds %struct.complex, ptr %807, i64 %813
  %815 = call <2 x float> @Cf(ptr noundef %814)
  store <2 x float> %815, ptr %53, align 4
  %816 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 0
  %817 = load float, ptr %816, align 4
  %818 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 1
  %819 = load float, ptr %818, align 4
  %820 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 0
  %821 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 1
  store float %817, ptr %820, align 4
  store float %819, ptr %821, align 4
  %822 = load <2 x float>, ptr %54, align 4
  %823 = call float @cabsf(<2 x float> noundef %822) #5
  %824 = load ptr, ptr %16, align 8, !tbaa !5
  %825 = load i32, ptr %24, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds float, ptr %824, i64 %826
  %828 = load float, ptr %827, align 4, !tbaa !11
  %829 = fadd float %828, %823
  store float %829, ptr %827, align 4, !tbaa !11
  br label %830

830:                                              ; preds = %806
  %831 = load i32, ptr %24, align 4, !tbaa !9
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr %24, align 4, !tbaa !9
  br label %802, !llvm.loop !40

833:                                              ; preds = %802
  br label %834

834:                                              ; preds = %833
  %835 = load i32, ptr %25, align 4, !tbaa !9
  %836 = add nsw i32 %835, 1
  store i32 %836, ptr %25, align 4, !tbaa !9
  br label %794, !llvm.loop !41

837:                                              ; preds = %794
  br label %838

838:                                              ; preds = %837, %775
  br label %839

839:                                              ; preds = %838, %679
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  %840 = load ptr, ptr %12, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  store i32 %841, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %842

842:                                              ; preds = %861, %839
  %843 = load i32, ptr %24, align 4, !tbaa !9
  %844 = load i32, ptr %19, align 4, !tbaa !9
  %845 = icmp sle i32 %843, %844
  br i1 %845, label %846, label %864

846:                                              ; preds = %842
  %847 = load ptr, ptr %16, align 8, !tbaa !5
  %848 = load i32, ptr %24, align 4, !tbaa !9
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds float, ptr %847, i64 %849
  %851 = load float, ptr %850, align 4, !tbaa !11
  store float %851, ptr %29, align 4, !tbaa !11
  %852 = load float, ptr %27, align 4, !tbaa !11
  %853 = load float, ptr %29, align 4, !tbaa !11
  %854 = fcmp olt float %852, %853
  br i1 %854, label %858, label %855

855:                                              ; preds = %846
  %856 = call i32 @sisnan_(ptr noundef %29)
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %858, label %860

858:                                              ; preds = %855, %846
  %859 = load float, ptr %29, align 4, !tbaa !11
  store float %859, ptr %27, align 4, !tbaa !11
  br label %860

860:                                              ; preds = %858, %855
  br label %861

861:                                              ; preds = %860
  %862 = load i32, ptr %24, align 4, !tbaa !9
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr %24, align 4, !tbaa !9
  br label %842, !llvm.loop !42

864:                                              ; preds = %842
  br label %1081

865:                                              ; preds = %525
  %866 = load ptr, ptr %9, align 8, !tbaa !5
  %867 = call i32 @lsame_(ptr noundef %866, ptr noundef @.str.4)
  %868 = icmp ne i32 %867, 0
  br i1 %868, label %873, label %869

869:                                              ; preds = %865
  %870 = load ptr, ptr %9, align 8, !tbaa !5
  %871 = call i32 @lsame_(ptr noundef %870, ptr noundef @.str.5)
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %1080

873:                                              ; preds = %869, %865
  %874 = load ptr, ptr %10, align 8, !tbaa !5
  %875 = call i32 @lsame_(ptr noundef %874, ptr noundef @.str.1)
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %974

877:                                              ; preds = %873
  %878 = load ptr, ptr %11, align 8, !tbaa !5
  %879 = call i32 @lsame_(ptr noundef %878, ptr noundef @.str.1)
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %935

881:                                              ; preds = %877
  %882 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  store float 1.000000e+00, ptr %882, align 4, !tbaa !11
  %883 = load ptr, ptr %12, align 8, !tbaa !5
  %884 = load i32, ptr %883, align 4, !tbaa !9
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = icmp sle i32 %884, %886
  br i1 %887, label %888, label %891

888:                                              ; preds = %881
  %889 = load ptr, ptr %12, align 8, !tbaa !5
  %890 = load i32, ptr %889, align 4, !tbaa !9
  br label %894

891:                                              ; preds = %881
  %892 = load ptr, ptr %13, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  br label %894

894:                                              ; preds = %891, %888
  %895 = phi i32 [ %890, %888 ], [ %893, %891 ]
  %896 = sitofp i32 %895 to float
  %897 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 1
  store float %896, ptr %897, align 4, !tbaa !11
  %898 = load ptr, ptr %13, align 8, !tbaa !5
  %899 = load i32, ptr %898, align 4, !tbaa !9
  store i32 %899, ptr %19, align 4, !tbaa !9
  store i32 2, ptr %25, align 4, !tbaa !9
  br label %900

900:                                              ; preds = %931, %894
  %901 = load i32, ptr %25, align 4, !tbaa !9
  %902 = load i32, ptr %19, align 4, !tbaa !9
  %903 = icmp sle i32 %901, %902
  br i1 %903, label %904, label %934

904:                                              ; preds = %900
  %905 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  store float 0.000000e+00, ptr %905, align 4, !tbaa !11
  %906 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  store float 1.000000e+00, ptr %906, align 4, !tbaa !11
  %907 = load ptr, ptr %12, align 8, !tbaa !5
  %908 = load i32, ptr %907, align 4, !tbaa !9
  store i32 %908, ptr %21, align 4, !tbaa !9
  %909 = load i32, ptr %25, align 4, !tbaa !9
  %910 = sub nsw i32 %909, 1
  store i32 %910, ptr %22, align 4, !tbaa !9
  %911 = load i32, ptr %21, align 4, !tbaa !9
  %912 = load i32, ptr %22, align 4, !tbaa !9
  %913 = icmp sle i32 %911, %912
  br i1 %913, label %914, label %916

914:                                              ; preds = %904
  %915 = load i32, ptr %21, align 4, !tbaa !9
  br label %918

916:                                              ; preds = %904
  %917 = load i32, ptr %22, align 4, !tbaa !9
  br label %918

918:                                              ; preds = %916, %914
  %919 = phi i32 [ %915, %914 ], [ %917, %916 ]
  store i32 %919, ptr %20, align 4, !tbaa !9
  %920 = load ptr, ptr %14, align 8, !tbaa !5
  %921 = load i32, ptr %25, align 4, !tbaa !9
  %922 = load i32, ptr %17, align 4, !tbaa !9
  %923 = mul nsw i32 %921, %922
  %924 = add nsw i32 %923, 1
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds %struct.complex, ptr %920, i64 %925
  %927 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  %928 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  call void @classq_(ptr noundef %20, ptr noundef %926, ptr noundef @c__1, ptr noundef %927, ptr noundef %928)
  %929 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  %930 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  call void @scombssq_(ptr noundef %929, ptr noundef %930)
  br label %931

931:                                              ; preds = %918
  %932 = load i32, ptr %25, align 4, !tbaa !9
  %933 = add nsw i32 %932, 1
  store i32 %933, ptr %25, align 4, !tbaa !9
  br label %900, !llvm.loop !43

934:                                              ; preds = %900
  br label %973

935:                                              ; preds = %877
  %936 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  store float 0.000000e+00, ptr %936, align 4, !tbaa !11
  %937 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 1
  store float 1.000000e+00, ptr %937, align 4, !tbaa !11
  %938 = load ptr, ptr %13, align 8, !tbaa !5
  %939 = load i32, ptr %938, align 4, !tbaa !9
  store i32 %939, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %940

940:                                              ; preds = %969, %935
  %941 = load i32, ptr %25, align 4, !tbaa !9
  %942 = load i32, ptr %19, align 4, !tbaa !9
  %943 = icmp sle i32 %941, %942
  br i1 %943, label %944, label %972

944:                                              ; preds = %940
  %945 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  store float 0.000000e+00, ptr %945, align 4, !tbaa !11
  %946 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  store float 1.000000e+00, ptr %946, align 4, !tbaa !11
  %947 = load ptr, ptr %12, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  %949 = load i32, ptr %25, align 4, !tbaa !9
  %950 = icmp sle i32 %948, %949
  br i1 %950, label %951, label %954

951:                                              ; preds = %944
  %952 = load ptr, ptr %12, align 8, !tbaa !5
  %953 = load i32, ptr %952, align 4, !tbaa !9
  br label %956

954:                                              ; preds = %944
  %955 = load i32, ptr %25, align 4, !tbaa !9
  br label %956

956:                                              ; preds = %954, %951
  %957 = phi i32 [ %953, %951 ], [ %955, %954 ]
  store i32 %957, ptr %20, align 4, !tbaa !9
  %958 = load ptr, ptr %14, align 8, !tbaa !5
  %959 = load i32, ptr %25, align 4, !tbaa !9
  %960 = load i32, ptr %17, align 4, !tbaa !9
  %961 = mul nsw i32 %959, %960
  %962 = add nsw i32 %961, 1
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds %struct.complex, ptr %958, i64 %963
  %965 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  %966 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  call void @classq_(ptr noundef %20, ptr noundef %964, ptr noundef @c__1, ptr noundef %965, ptr noundef %966)
  %967 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  %968 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  call void @scombssq_(ptr noundef %967, ptr noundef %968)
  br label %969

969:                                              ; preds = %956
  %970 = load i32, ptr %25, align 4, !tbaa !9
  %971 = add nsw i32 %970, 1
  store i32 %971, ptr %25, align 4, !tbaa !9
  br label %940, !llvm.loop !44

972:                                              ; preds = %940
  br label %973

973:                                              ; preds = %972, %934
  br label %1070

974:                                              ; preds = %873
  %975 = load ptr, ptr %11, align 8, !tbaa !5
  %976 = call i32 @lsame_(ptr noundef %975, ptr noundef @.str.1)
  %977 = icmp ne i32 %976, 0
  br i1 %977, label %978, label %1036

978:                                              ; preds = %974
  %979 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  store float 1.000000e+00, ptr %979, align 4, !tbaa !11
  %980 = load ptr, ptr %12, align 8, !tbaa !5
  %981 = load i32, ptr %980, align 4, !tbaa !9
  %982 = load ptr, ptr %13, align 8, !tbaa !5
  %983 = load i32, ptr %982, align 4, !tbaa !9
  %984 = icmp sle i32 %981, %983
  br i1 %984, label %985, label %988

985:                                              ; preds = %978
  %986 = load ptr, ptr %12, align 8, !tbaa !5
  %987 = load i32, ptr %986, align 4, !tbaa !9
  br label %991

988:                                              ; preds = %978
  %989 = load ptr, ptr %13, align 8, !tbaa !5
  %990 = load i32, ptr %989, align 4, !tbaa !9
  br label %991

991:                                              ; preds = %988, %985
  %992 = phi i32 [ %987, %985 ], [ %990, %988 ]
  %993 = sitofp i32 %992 to float
  %994 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 1
  store float %993, ptr %994, align 4, !tbaa !11
  %995 = load ptr, ptr %13, align 8, !tbaa !5
  %996 = load i32, ptr %995, align 4, !tbaa !9
  store i32 %996, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %997

997:                                              ; preds = %1032, %991
  %998 = load i32, ptr %25, align 4, !tbaa !9
  %999 = load i32, ptr %19, align 4, !tbaa !9
  %1000 = icmp sle i32 %998, %999
  br i1 %1000, label %1001, label %1035

1001:                                             ; preds = %997
  %1002 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  store float 0.000000e+00, ptr %1002, align 4, !tbaa !11
  %1003 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  store float 1.000000e+00, ptr %1003, align 4, !tbaa !11
  %1004 = load ptr, ptr %12, align 8, !tbaa !5
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  %1006 = load i32, ptr %25, align 4, !tbaa !9
  %1007 = sub nsw i32 %1005, %1006
  store i32 %1007, ptr %20, align 4, !tbaa !9
  %1008 = load ptr, ptr %12, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  store i32 %1009, ptr %21, align 4, !tbaa !9
  %1010 = load i32, ptr %25, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %22, align 4, !tbaa !9
  %1012 = load ptr, ptr %14, align 8, !tbaa !5
  %1013 = load i32, ptr %21, align 4, !tbaa !9
  %1014 = load i32, ptr %22, align 4, !tbaa !9
  %1015 = icmp sle i32 %1013, %1014
  br i1 %1015, label %1016, label %1018

1016:                                             ; preds = %1001
  %1017 = load i32, ptr %21, align 4, !tbaa !9
  br label %1020

1018:                                             ; preds = %1001
  %1019 = load i32, ptr %22, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1018, %1016
  %1021 = phi i32 [ %1017, %1016 ], [ %1019, %1018 ]
  %1022 = load i32, ptr %25, align 4, !tbaa !9
  %1023 = load i32, ptr %17, align 4, !tbaa !9
  %1024 = mul nsw i32 %1022, %1023
  %1025 = add nsw i32 %1021, %1024
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.complex, ptr %1012, i64 %1026
  %1028 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  %1029 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  call void @classq_(ptr noundef %20, ptr noundef %1027, ptr noundef @c__1, ptr noundef %1028, ptr noundef %1029)
  %1030 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  %1031 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  call void @scombssq_(ptr noundef %1030, ptr noundef %1031)
  br label %1032

1032:                                             ; preds = %1020
  %1033 = load i32, ptr %25, align 4, !tbaa !9
  %1034 = add nsw i32 %1033, 1
  store i32 %1034, ptr %25, align 4, !tbaa !9
  br label %997, !llvm.loop !45

1035:                                             ; preds = %997
  br label %1069

1036:                                             ; preds = %974
  %1037 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  store float 0.000000e+00, ptr %1037, align 4, !tbaa !11
  %1038 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 1
  store float 1.000000e+00, ptr %1038, align 4, !tbaa !11
  %1039 = load ptr, ptr %13, align 8, !tbaa !5
  %1040 = load i32, ptr %1039, align 4, !tbaa !9
  store i32 %1040, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1065, %1036
  %1042 = load i32, ptr %25, align 4, !tbaa !9
  %1043 = load i32, ptr %19, align 4, !tbaa !9
  %1044 = icmp sle i32 %1042, %1043
  br i1 %1044, label %1045, label %1068

1045:                                             ; preds = %1041
  %1046 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  store float 0.000000e+00, ptr %1046, align 4, !tbaa !11
  %1047 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  store float 1.000000e+00, ptr %1047, align 4, !tbaa !11
  %1048 = load ptr, ptr %12, align 8, !tbaa !5
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = load i32, ptr %25, align 4, !tbaa !9
  %1051 = sub nsw i32 %1049, %1050
  %1052 = add nsw i32 %1051, 1
  store i32 %1052, ptr %20, align 4, !tbaa !9
  %1053 = load ptr, ptr %14, align 8, !tbaa !5
  %1054 = load i32, ptr %25, align 4, !tbaa !9
  %1055 = load i32, ptr %25, align 4, !tbaa !9
  %1056 = load i32, ptr %17, align 4, !tbaa !9
  %1057 = mul nsw i32 %1055, %1056
  %1058 = add nsw i32 %1054, %1057
  %1059 = sext i32 %1058 to i64
  %1060 = getelementptr inbounds %struct.complex, ptr %1053, i64 %1059
  %1061 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  %1062 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 1
  call void @classq_(ptr noundef %20, ptr noundef %1060, ptr noundef @c__1, ptr noundef %1061, ptr noundef %1062)
  %1063 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  %1064 = getelementptr inbounds [2 x float], ptr %28, i64 0, i64 0
  call void @scombssq_(ptr noundef %1063, ptr noundef %1064)
  br label %1065

1065:                                             ; preds = %1045
  %1066 = load i32, ptr %25, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %25, align 4, !tbaa !9
  br label %1041, !llvm.loop !46

1068:                                             ; preds = %1041
  br label %1069

1069:                                             ; preds = %1068, %1035
  br label %1070

1070:                                             ; preds = %1069, %973
  %1071 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 0
  %1072 = load float, ptr %1071, align 4, !tbaa !11
  %1073 = fpext float %1072 to double
  %1074 = getelementptr inbounds [2 x float], ptr %30, i64 0, i64 1
  %1075 = load float, ptr %1074, align 4, !tbaa !11
  %1076 = fpext float %1075 to double
  %1077 = call double @sqrt(double noundef %1076) #5
  %1078 = fmul double %1073, %1077
  %1079 = fptrunc double %1078 to float
  store float %1079, ptr %27, align 4, !tbaa !11
  br label %1080

1080:                                             ; preds = %1070, %869
  br label %1081

1081:                                             ; preds = %1080, %864
  br label %1082

1082:                                             ; preds = %1081, %524
  br label %1083

1083:                                             ; preds = %1082, %319
  br label %1084

1084:                                             ; preds = %1083, %81
  %1085 = load float, ptr %27, align 4, !tbaa !11
  store float %1085, ptr %23, align 4, !tbaa !11
  %1086 = load float, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  ret float %1086
}

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) #3

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

declare i32 @sisnan_(ptr noundef) #2

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

20:                                               ; preds = %8
  %21 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #8
  %.not371 = icmp eq i32 %21, 0
  br i1 %.not371, label %85, label %22

22:                                               ; preds = %20
  %23 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #8
  %.not422 = icmp eq i32 %23, 0
  %24 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #8
  %.not423 = icmp eq i32 %24, 0
  %25 = load i32, ptr %4, align 4, !tbaa !5
  %.not424504 = icmp slt i32 %25, 1
  br i1 %.not422, label %57, label %26

26:                                               ; preds = %22
  br i1 %.not423, label %43, label %27

27:                                               ; preds = %26
  br i1 %.not424504, label %.loopexit443, label %.lr.ph470.preheader

.lr.ph470.preheader:                              ; preds = %27
  %28 = sext i32 %13 to i64
  %29 = add nuw i32 %25, 1
  %wide.trip.count = zext i32 %29 to i64
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470.preheader, %._crit_edge
  %indvars.iv657 = phi i64 [ 1, %.lr.ph470.preheader ], [ %indvars.iv.next658, %._crit_edge ]
  %.0341467 = phi float [ 1.000000e+00, %.lr.ph470.preheader ], [ %.1342.lcssa, %._crit_edge ]
  %30 = load i32, ptr %3, align 4, !tbaa !5
  %31 = trunc i64 %indvars.iv657 to i32
  %32 = add i32 %31, -1
  %33 = call i32 @llvm.smin.i32(i32 %30, i32 %32)
  %.not437463 = icmp slt i32 %33, 1
  br i1 %.not437463, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph470
  %34 = mul nsw i64 %indvars.iv657, %28
  %invariant.gep819 = getelementptr %struct.complex, ptr %15, i64 %34
  %35 = zext nneg i32 %33 to i64
  br label %36

36:                                               ; preds = %.lr.ph, %42
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %42 ]
  %.1342464 = phi float [ %.0341467, %.lr.ph ], [ %.2343, %42 ]
  %gep820 = getelementptr %struct.complex, ptr %invariant.gep819, i64 %indvars.iv
  %37 = call <2 x float> @Cf(ptr noundef %gep820)
  %38 = call float @cabsf(<2 x float> noundef %37) #8
  store float %38, ptr %11, align 4, !tbaa !9
  %39 = fcmp olt float %.1342464, %38
  br i1 %39, label %42, label %40

40:                                               ; preds = %36
  %41 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not438 = icmp eq i32 %41, 0
  br i1 %.not438, label %42, label %._crit_edge791

._crit_edge791:                                   ; preds = %40
  %.pre = load float, ptr %11, align 4, !tbaa !9
  br label %42

42:                                               ; preds = %36, %._crit_edge791, %40
  %.2343 = phi float [ %.1342464, %40 ], [ %.pre, %._crit_edge791 ], [ %38, %36 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not437.not = icmp ult i64 %indvars.iv, %35
  br i1 %.not437.not, label %36, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %42, %.lr.ph470
  %.1342.lcssa = phi float [ %.0341467, %.lr.ph470 ], [ %.2343, %42 ]
  %indvars.iv.next658 = add nuw nsw i64 %indvars.iv657, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next658, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit443, label %.lr.ph470, !llvm.loop !13

43:                                               ; preds = %26
  br i1 %.not424504, label %.loopexit443, label %.lr.ph482.preheader

.lr.ph482.preheader:                              ; preds = %43
  %44 = sext i32 %13 to i64
  %45 = add nuw i32 %25, 1
  %wide.trip.count668 = zext i32 %45 to i64
  br label %.lr.ph482

.loopexit460:                                     ; preds = %56, %.lr.ph482
  %.4345.lcssa = phi float [ %.3344479, %.lr.ph482 ], [ %.5346, %56 ]
  %indvars.iv.next661 = add nuw i32 %indvars.iv660, 1
  %exitcond669.not = icmp eq i64 %indvars.iv.next666, %wide.trip.count668
  br i1 %exitcond669.not, label %.loopexit443, label %.lr.ph482, !llvm.loop !14

.lr.ph482:                                        ; preds = %.lr.ph482.preheader, %.loopexit460
  %indvars.iv665 = phi i64 [ 1, %.lr.ph482.preheader ], [ %indvars.iv.next666, %.loopexit460 ]
  %indvars.iv660 = phi i32 [ 2, %.lr.ph482.preheader ], [ %indvars.iv.next661, %.loopexit460 ]
  %.3344479 = phi float [ 1.000000e+00, %.lr.ph482.preheader ], [ %.4345.lcssa, %.loopexit460 ]
  %46 = load i32, ptr %3, align 4, !tbaa !5
  %indvars.iv.next666 = add nuw nsw i64 %indvars.iv665, 1
  %47 = sext i32 %46 to i64
  %.not433472.not = icmp slt i64 %indvars.iv665, %47
  br i1 %.not433472.not, label %.lr.ph476, label %.loopexit460

.lr.ph476:                                        ; preds = %.lr.ph482
  %48 = sext i32 %indvars.iv660 to i64
  %49 = mul nsw i64 %indvars.iv665, %44
  %invariant.gep821 = getelementptr %struct.complex, ptr %15, i64 %49
  br label %50

50:                                               ; preds = %.lr.ph476, %56
  %indvars.iv662 = phi i64 [ %48, %.lr.ph476 ], [ %indvars.iv.next663, %56 ]
  %.4345473 = phi float [ %.3344479, %.lr.ph476 ], [ %.5346, %56 ]
  %gep822 = getelementptr %struct.complex, ptr %invariant.gep821, i64 %indvars.iv662
  %51 = call <2 x float> @Cf(ptr noundef %gep822)
  %52 = call float @cabsf(<2 x float> noundef %51) #8
  store float %52, ptr %11, align 4, !tbaa !9
  %53 = fcmp olt float %.4345473, %52
  br i1 %53, label %56, label %54

54:                                               ; preds = %50
  %55 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not434 = icmp eq i32 %55, 0
  br i1 %.not434, label %56, label %._crit_edge792

._crit_edge792:                                   ; preds = %54
  %.pre793 = load float, ptr %11, align 4, !tbaa !9
  br label %56

56:                                               ; preds = %50, %._crit_edge792, %54
  %.5346 = phi float [ %.4345473, %54 ], [ %.pre793, %._crit_edge792 ], [ %52, %50 ]
  %indvars.iv.next663 = add nuw nsw i64 %indvars.iv662, 1
  %.not433.not = icmp slt i64 %indvars.iv662, %47
  br i1 %.not433.not, label %50, label %.loopexit460, !llvm.loop !15

57:                                               ; preds = %22
  br i1 %.not423, label %72, label %58

58:                                               ; preds = %57
  br i1 %.not424504, label %.loopexit443, label %.lr.ph495.preheader

.lr.ph495.preheader:                              ; preds = %58
  %59 = sext i32 %13 to i64
  %60 = add nuw i32 %25, 1
  %wide.trip.count676 = zext i32 %60 to i64
  br label %.lr.ph495

.lr.ph495:                                        ; preds = %.lr.ph495.preheader, %._crit_edge489
  %indvars.iv673 = phi i64 [ 1, %.lr.ph495.preheader ], [ %indvars.iv.next674, %._crit_edge489 ]
  %.6347492 = phi float [ 0.000000e+00, %.lr.ph495.preheader ], [ %.7348.lcssa, %._crit_edge489 ]
  %61 = load i32, ptr %3, align 4, !tbaa !5
  %.not429484 = icmp slt i32 %61, 1
  br i1 %.not429484, label %._crit_edge489, label %.lr.ph488

.lr.ph488:                                        ; preds = %.lr.ph495
  %62 = trunc nuw nsw i64 %indvars.iv673 to i32
  %.2329. = call i32 @llvm.smin.i32(i32 %61, i32 %62)
  %63 = mul nsw i64 %indvars.iv673, %59
  %invariant.gep823 = getelementptr %struct.complex, ptr %15, i64 %63
  %64 = sext i32 %.2329. to i64
  br label %65

65:                                               ; preds = %.lr.ph488, %71
  %indvars.iv670 = phi i64 [ 1, %.lr.ph488 ], [ %indvars.iv.next671, %71 ]
  %.7348485 = phi float [ %.6347492, %.lr.ph488 ], [ %.8349, %71 ]
  %gep824 = getelementptr %struct.complex, ptr %invariant.gep823, i64 %indvars.iv670
  %66 = call <2 x float> @Cf(ptr noundef %gep824)
  %67 = call float @cabsf(<2 x float> noundef %66) #8
  store float %67, ptr %11, align 4, !tbaa !9
  %68 = fcmp olt float %.7348485, %67
  br i1 %68, label %71, label %69

69:                                               ; preds = %65
  %70 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not430 = icmp eq i32 %70, 0
  br i1 %.not430, label %71, label %._crit_edge794

._crit_edge794:                                   ; preds = %69
  %.pre795 = load float, ptr %11, align 4, !tbaa !9
  br label %71

71:                                               ; preds = %65, %._crit_edge794, %69
  %.8349 = phi float [ %.7348485, %69 ], [ %.pre795, %._crit_edge794 ], [ %67, %65 ]
  %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1
  %.not429.not = icmp slt i64 %indvars.iv670, %64
  br i1 %.not429.not, label %65, label %._crit_edge489, !llvm.loop !16

._crit_edge489:                                   ; preds = %71, %.lr.ph495
  %.7348.lcssa = phi float [ %.6347492, %.lr.ph495 ], [ %.8349, %71 ]
  %indvars.iv.next674 = add nuw nsw i64 %indvars.iv673, 1
  %exitcond677.not = icmp eq i64 %indvars.iv.next674, %wide.trip.count676
  br i1 %exitcond677.not, label %.loopexit443, label %.lr.ph495, !llvm.loop !17

72:                                               ; preds = %57
  br i1 %.not424504, label %.loopexit443, label %.lr.ph508.preheader

.lr.ph508.preheader:                              ; preds = %72
  %73 = sext i32 %13 to i64
  %74 = add nuw i32 %25, 1
  %wide.trip.count684 = zext i32 %74 to i64
  br label %.lr.ph508

.lr.ph508:                                        ; preds = %.lr.ph508.preheader, %._crit_edge502
  %indvars.iv678 = phi i64 [ 1, %.lr.ph508.preheader ], [ %indvars.iv.next679, %._crit_edge502 ]
  %.9350505 = phi float [ 0.000000e+00, %.lr.ph508.preheader ], [ %.10351.lcssa, %._crit_edge502 ]
  %75 = load i32, ptr %3, align 4, !tbaa !5
  %76 = sext i32 %75 to i64
  %.not425497 = icmp sgt i64 %indvars.iv678, %76
  br i1 %.not425497, label %._crit_edge502, label %.lr.ph501

.lr.ph501:                                        ; preds = %.lr.ph508
  %77 = mul nsw i64 %indvars.iv678, %73
  %invariant.gep825 = getelementptr %struct.complex, ptr %15, i64 %77
  br label %78

78:                                               ; preds = %.lr.ph501, %84
  %indvars.iv680 = phi i64 [ %indvars.iv678, %.lr.ph501 ], [ %indvars.iv.next681, %84 ]
  %.10351498 = phi float [ %.9350505, %.lr.ph501 ], [ %.11352, %84 ]
  %gep826 = getelementptr %struct.complex, ptr %invariant.gep825, i64 %indvars.iv680
  %79 = call <2 x float> @Cf(ptr noundef %gep826)
  %80 = call float @cabsf(<2 x float> noundef %79) #8
  store float %80, ptr %11, align 4, !tbaa !9
  %81 = fcmp olt float %.10351498, %80
  br i1 %81, label %84, label %82

82:                                               ; preds = %78
  %83 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not426 = icmp eq i32 %83, 0
  br i1 %.not426, label %84, label %._crit_edge796

._crit_edge796:                                   ; preds = %82
  %.pre797 = load float, ptr %11, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %78, %._crit_edge796, %82
  %.11352 = phi float [ %.10351498, %82 ], [ %.pre797, %._crit_edge796 ], [ %80, %78 ]
  %indvars.iv.next681 = add nuw nsw i64 %indvars.iv680, 1
  %.not425.not = icmp slt i64 %indvars.iv680, %76
  br i1 %.not425.not, label %78, label %._crit_edge502, !llvm.loop !18

._crit_edge502:                                   ; preds = %84, %.lr.ph508
  %.10351.lcssa = phi float [ %.9350505, %.lr.ph508 ], [ %.11352, %84 ]
  %indvars.iv.next679 = add nuw nsw i64 %indvars.iv678, 1
  %exitcond685.not = icmp eq i64 %indvars.iv.next679, %wide.trip.count684
  br i1 %exitcond685.not, label %.loopexit443, label %.lr.ph508, !llvm.loop !19

85:                                               ; preds = %20
  %86 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #8
  %.not372 = icmp eq i32 %86, 0
  br i1 %.not372, label %87, label %90

87:                                               ; preds = %85
  %88 = load i8, ptr %0, align 1, !tbaa !20
  %89 = icmp eq i8 %88, 49
  br i1 %89, label %90, label %149

90:                                               ; preds = %87, %85
  %91 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #8
  %92 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #8
  %.not409 = icmp eq i32 %92, 0
  %93 = load i32, ptr %4, align 4, !tbaa !5
  %.not410629 = icmp slt i32 %93, 1
  br i1 %.not409, label %122, label %94

94:                                               ; preds = %90
  br i1 %.not410629, label %.loopexit443, label %.lr.ph617

.lr.ph617:                                        ; preds = %94
  %.not416 = icmp eq i32 %91, 0
  %95 = sext i32 %13 to i64
  %96 = add nuw i32 %93, 1
  %wide.trip.count778 = zext i32 %96 to i64
  br label %97

97:                                               ; preds = %.lr.ph617, %121
  %indvars.iv775 = phi i64 [ 1, %.lr.ph617 ], [ %indvars.iv.next776, %121 ]
  %.12353611 = phi float [ 0.000000e+00, %.lr.ph617 ], [ %.13354, %121 ]
  %.pre800 = load i32, ptr %3, align 4, !tbaa !5
  %98 = sext i32 %.pre800 to i64
  %.not417 = icmp sgt i64 %indvars.iv775, %98
  %or.cond = select i1 %.not416, i1 true, i1 %.not417
  br i1 %or.cond, label %108, label %99

99:                                               ; preds = %97
  store float 1.000000e+00, ptr %11, align 4, !tbaa !9
  %.not420600 = icmp ult i64 %indvars.iv775, 2
  br i1 %.not420600, label %.loopexit444, label %.lr.ph603

.lr.ph603:                                        ; preds = %99
  %100 = mul nsw i64 %indvars.iv775, %95
  %invariant.gep835 = getelementptr %struct.complex, ptr %15, i64 %100
  %101 = shl i64 %indvars.iv775, 32
  %sext = add i64 %101, -4294967296
  %102 = ashr exact i64 %sext, 32
  br label %103

103:                                              ; preds = %.lr.ph603, %103
  %indvars.iv769 = phi i64 [ 1, %.lr.ph603 ], [ %indvars.iv.next770, %103 ]
  %gep836 = getelementptr %struct.complex, ptr %invariant.gep835, i64 %indvars.iv769
  %104 = call <2 x float> @Cf(ptr noundef %gep836)
  %105 = call float @cabsf(<2 x float> noundef %104) #8
  %106 = load float, ptr %11, align 4, !tbaa !9
  %107 = fadd float %105, %106
  store float %107, ptr %11, align 4, !tbaa !9
  %indvars.iv.next770 = add nuw nsw i64 %indvars.iv769, 1
  %.not420.not = icmp slt i64 %indvars.iv769, %102
  br i1 %.not420.not, label %103, label %.loopexit444, !llvm.loop !21

108:                                              ; preds = %97
  %109 = trunc i64 %indvars.iv775 to i32
  store float 0.000000e+00, ptr %11, align 4, !tbaa !9
  %.4331. = call i32 @llvm.smin.i32(i32 %.pre800, i32 %109)
  %.not419605 = icmp slt i32 %.4331., 1
  br i1 %.not419605, label %.loopexit444, label %.lr.ph608

.lr.ph608:                                        ; preds = %108
  %110 = mul nsw i64 %indvars.iv775, %95
  %invariant.gep837 = getelementptr %struct.complex, ptr %15, i64 %110
  %111 = zext nneg i32 %.4331. to i64
  br label %112

112:                                              ; preds = %.lr.ph608, %112
  %indvars.iv772 = phi i64 [ 1, %.lr.ph608 ], [ %indvars.iv.next773, %112 ]
  %gep838 = getelementptr %struct.complex, ptr %invariant.gep837, i64 %indvars.iv772
  %113 = call <2 x float> @Cf(ptr noundef %gep838)
  %114 = call float @cabsf(<2 x float> noundef %113) #8
  %115 = load float, ptr %11, align 4, !tbaa !9
  %116 = fadd float %114, %115
  store float %116, ptr %11, align 4, !tbaa !9
  %indvars.iv.next773 = add nuw nsw i64 %indvars.iv772, 1
  %.not419.not = icmp ult i64 %indvars.iv772, %111
  br i1 %.not419.not, label %112, label %.loopexit444, !llvm.loop !22

.loopexit444:                                     ; preds = %103, %112, %99, %108
  %117 = phi float [ 1.000000e+00, %99 ], [ 0.000000e+00, %108 ], [ %116, %112 ], [ %107, %103 ]
  %118 = fcmp olt float %.12353611, %117
  br i1 %118, label %121, label %119

119:                                              ; preds = %.loopexit444
  %120 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not421 = icmp eq i32 %120, 0
  br i1 %.not421, label %121, label %._crit_edge801

._crit_edge801:                                   ; preds = %119
  %.pre802 = load float, ptr %11, align 4, !tbaa !9
  br label %121

121:                                              ; preds = %.loopexit444, %._crit_edge801, %119
  %.13354 = phi float [ %.12353611, %119 ], [ %.pre802, %._crit_edge801 ], [ %117, %.loopexit444 ]
  %indvars.iv.next776 = add nuw nsw i64 %indvars.iv775, 1
  %exitcond779.not = icmp eq i64 %indvars.iv.next776, %wide.trip.count778
  br i1 %exitcond779.not, label %.loopexit443, label %97, !llvm.loop !23

122:                                              ; preds = %90
  br i1 %.not410629, label %.loopexit443, label %.lr.ph636

.lr.ph636:                                        ; preds = %122
  %.not411 = icmp eq i32 %91, 0
  %123 = sext i32 %13 to i64
  %124 = add nuw i32 %93, 1
  %wide.trip.count789 = zext i32 %124 to i64
  br label %125

125:                                              ; preds = %.lr.ph636, %148
  %indvars.iv780 = phi i64 [ 1, %.lr.ph636 ], [ %indvars.iv.next781, %148 ]
  %.14355630 = phi float [ 0.000000e+00, %.lr.ph636 ], [ %.15356, %148 ]
  br i1 %.not411, label %135, label %126

126:                                              ; preds = %125
  store float 1.000000e+00, ptr %11, align 4, !tbaa !9
  %127 = load i32, ptr %3, align 4, !tbaa !5
  %128 = sext i32 %127 to i64
  %.not413.not619 = icmp slt i64 %indvars.iv780, %128
  br i1 %.not413.not619, label %.lr.ph622, label %.loopexit

.lr.ph622:                                        ; preds = %126
  %129 = mul nsw i64 %indvars.iv780, %123
  %invariant.gep839 = getelementptr %struct.complex, ptr %15, i64 %129
  br label %130

130:                                              ; preds = %.lr.ph622, %130
  %indvars.iv782 = phi i64 [ %indvars.iv780, %.lr.ph622 ], [ %indvars.iv.next783, %130 ]
  %indvars.iv.next783 = add nuw nsw i64 %indvars.iv782, 1
  %gep840 = getelementptr %struct.complex, ptr %invariant.gep839, i64 %indvars.iv.next783
  %131 = call <2 x float> @Cf(ptr noundef %gep840)
  %132 = call float @cabsf(<2 x float> noundef %131) #8
  %133 = load float, ptr %11, align 4, !tbaa !9
  %134 = fadd float %132, %133
  store float %134, ptr %11, align 4, !tbaa !9
  %.not413.not = icmp slt i64 %indvars.iv.next783, %128
  br i1 %.not413.not, label %130, label %.loopexit, !llvm.loop !24

135:                                              ; preds = %125
  store float 0.000000e+00, ptr %11, align 4, !tbaa !9
  %136 = load i32, ptr %3, align 4, !tbaa !5
  %137 = sext i32 %136 to i64
  %.not412624 = icmp sgt i64 %indvars.iv780, %137
  br i1 %.not412624, label %.loopexit, label %.lr.ph627

.lr.ph627:                                        ; preds = %135
  %138 = mul nsw i64 %indvars.iv780, %123
  %invariant.gep841 = getelementptr %struct.complex, ptr %15, i64 %138
  br label %139

139:                                              ; preds = %.lr.ph627, %139
  %indvars.iv785 = phi i64 [ %indvars.iv780, %.lr.ph627 ], [ %indvars.iv.next786, %139 ]
  %gep842 = getelementptr %struct.complex, ptr %invariant.gep841, i64 %indvars.iv785
  %140 = call <2 x float> @Cf(ptr noundef %gep842)
  %141 = call float @cabsf(<2 x float> noundef %140) #8
  %142 = load float, ptr %11, align 4, !tbaa !9
  %143 = fadd float %141, %142
  store float %143, ptr %11, align 4, !tbaa !9
  %indvars.iv.next786 = add nuw nsw i64 %indvars.iv785, 1
  %.not412.not = icmp slt i64 %indvars.iv785, %137
  br i1 %.not412.not, label %139, label %.loopexit, !llvm.loop !25

.loopexit:                                        ; preds = %130, %139, %126, %135
  %144 = phi float [ 1.000000e+00, %126 ], [ 0.000000e+00, %135 ], [ %143, %139 ], [ %134, %130 ]
  %145 = fcmp olt float %.14355630, %144
  br i1 %145, label %148, label %146

146:                                              ; preds = %.loopexit
  %147 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not414 = icmp eq i32 %147, 0
  br i1 %.not414, label %148, label %._crit_edge803

._crit_edge803:                                   ; preds = %146
  %.pre804 = load float, ptr %11, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %.loopexit, %._crit_edge803, %146
  %.15356 = phi float [ %.14355630, %146 ], [ %.pre804, %._crit_edge803 ], [ %144, %.loopexit ]
  %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1
  %exitcond790.not = icmp eq i64 %indvars.iv.next781, %wide.trip.count789
  br i1 %exitcond790.not, label %.loopexit443, label %125, !llvm.loop !26

149:                                              ; preds = %87
  %150 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.3) #8
  %.not373 = icmp eq i32 %150, 0
  br i1 %.not373, label %246, label %151

151:                                              ; preds = %149
  %152 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #8
  %.not388 = icmp eq i32 %152, 0
  %153 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #8
  %.not389 = icmp eq i32 %153, 0
  %154 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not388, label %193, label %155

155:                                              ; preds = %151
  %.not399525 = icmp slt i32 %154, 1
  br i1 %.not389, label %177, label %156

156:                                              ; preds = %155
  br i1 %.not399525, label %._crit_edge514, label %.lr.ph513.preheader

.lr.ph513.preheader:                              ; preds = %156
  %157 = add nuw i32 %154, 1
  %wide.trip.count689 = zext i32 %157 to i64
  %158 = zext nneg i32 %154 to i64
  %min.iters.check = icmp ult i32 %154, 8
  br i1 %min.iters.check, label %.lr.ph513.preheader887, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph513.preheader
  %n.vec = and i64 %158, 2147483640
  %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 ]
  %159 = getelementptr float, ptr %7, i64 %index
  %160 = getelementptr inbounds i8, ptr %159, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %159, 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 %160, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %161 = icmp eq i64 %index.next, %n.vec
  br i1 %161, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %158
  br i1 %cmp.n, label %._crit_edge514, label %.lr.ph513.preheader887

.lr.ph513.preheader887:                           ; preds = %middle.block, %.lr.ph513.preheader
  %indvars.iv686.ph = phi i64 [ 1, %.lr.ph513.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph513

.lr.ph513:                                        ; preds = %.lr.ph513.preheader887, %.lr.ph513
  %indvars.iv686 = phi i64 [ %indvars.iv.next687, %.lr.ph513 ], [ %indvars.iv686.ph, %.lr.ph513.preheader887 ]
  %162 = getelementptr inbounds float, ptr %16, i64 %indvars.iv686
  store float 1.000000e+00, ptr %162, align 4, !tbaa !9
  %indvars.iv.next687 = add nuw nsw i64 %indvars.iv686, 1
  %exitcond690.not = icmp eq i64 %indvars.iv.next687, %wide.trip.count689
  br i1 %exitcond690.not, label %._crit_edge514, label %.lr.ph513, !llvm.loop !30

._crit_edge514:                                   ; preds = %.lr.ph513, %middle.block, %156
  %163 = load i32, ptr %4, align 4, !tbaa !5
  %.not404520 = icmp slt i32 %163, 1
  br i1 %.not404520, label %.loopexit452, label %.lr.ph523.preheader

.lr.ph523.preheader:                              ; preds = %._crit_edge514
  %164 = sext i32 %13 to i64
  br label %.lr.ph523

.lr.ph523:                                        ; preds = %.lr.ph523.preheader, %._crit_edge519
  %indvars.iv698 = phi i64 [ 1, %.lr.ph523.preheader ], [ %indvars.iv.next699, %._crit_edge519 ]
  %indvars.iv694 = phi i32 [ 0, %.lr.ph523.preheader ], [ %indvars.iv.next695, %._crit_edge519 ]
  %165 = load i32, ptr %3, align 4, !tbaa !5
  %166 = trunc i64 %indvars.iv698 to i32
  %167 = add i32 %166, -1
  %168 = tail call i32 @llvm.smin.i32(i32 %165, i32 %167)
  %.not408515 = icmp slt i32 %168, 1
  br i1 %.not408515, label %._crit_edge519, label %.lr.ph518

.lr.ph518:                                        ; preds = %.lr.ph523
  %169 = mul nsw i64 %indvars.iv698, %164
  %smin = tail call i32 @llvm.smin.i32(i32 %165, i32 %indvars.iv694)
  %170 = add nsw i32 %smin, 1
  %wide.trip.count696 = zext i32 %170 to i64
  %invariant.gep827 = getelementptr %struct.complex, ptr %15, i64 %169
  br label %171

171:                                              ; preds = %.lr.ph518, %171
  %indvars.iv691 = phi i64 [ 1, %.lr.ph518 ], [ %indvars.iv.next692, %171 ]
  %gep828 = getelementptr %struct.complex, ptr %invariant.gep827, i64 %indvars.iv691
  %172 = tail call <2 x float> @Cf(ptr noundef %gep828)
  %173 = tail call float @cabsf(<2 x float> noundef %172) #8
  %174 = getelementptr inbounds float, ptr %16, i64 %indvars.iv691
  %175 = load float, ptr %174, align 4, !tbaa !9
  %176 = fadd float %173, %175
  store float %176, ptr %174, align 4, !tbaa !9
  %indvars.iv.next692 = add nuw nsw i64 %indvars.iv691, 1
  %exitcond697.not = icmp eq i64 %indvars.iv.next692, %wide.trip.count696
  br i1 %exitcond697.not, label %._crit_edge519, label %171, !llvm.loop !31

._crit_edge519:                                   ; preds = %171, %.lr.ph523
  %indvars.iv.next699 = add nuw nsw i64 %indvars.iv698, 1
  %indvars.iv.next695 = add nuw nsw i32 %indvars.iv694, 1
  %exitcond701.not = icmp eq i32 %indvars.iv.next695, %163
  br i1 %exitcond701.not, label %.loopexit452, label %.lr.ph523, !llvm.loop !32

177:                                              ; preds = %155
  br i1 %.not399525, label %._crit_edge529, label %.lr.ph528.preheader

.lr.ph528.preheader:                              ; preds = %177
  %178 = zext nneg i32 %154 to i64
  %179 = shl nuw nsw i64 %178, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 %179, i1 false), !tbaa !9
  br label %._crit_edge529

._crit_edge529:                                   ; preds = %.lr.ph528.preheader, %177
  %180 = load i32, ptr %4, align 4, !tbaa !5
  %.not400537 = icmp slt i32 %180, 1
  br i1 %.not400537, label %.loopexit452, label %.lr.ph540.preheader

.lr.ph540.preheader:                              ; preds = %._crit_edge529
  %181 = sext i32 %13 to i64
  %182 = add nuw i32 %180, 1
  %wide.trip.count714 = zext i32 %182 to i64
  br label %.lr.ph540

.lr.ph540:                                        ; preds = %.lr.ph540.preheader, %._crit_edge534
  %indvars.iv711 = phi i64 [ 1, %.lr.ph540.preheader ], [ %indvars.iv.next712, %._crit_edge534 ]
  %183 = load i32, ptr %3, align 4, !tbaa !5
  %.not402530 = icmp slt i32 %183, 1
  br i1 %.not402530, label %._crit_edge534, label %.lr.ph533

.lr.ph533:                                        ; preds = %.lr.ph540
  %184 = trunc nuw nsw i64 %indvars.iv711 to i32
  %.7334. = tail call i32 @llvm.smin.i32(i32 %183, i32 %184)
  %185 = mul nsw i64 %indvars.iv711, %181
  %186 = add i32 %.7334., 1
  %wide.trip.count709 = zext i32 %186 to i64
  %invariant.gep829 = getelementptr %struct.complex, ptr %15, i64 %185
  br label %187

187:                                              ; preds = %.lr.ph533, %187
  %indvars.iv705 = phi i64 [ 1, %.lr.ph533 ], [ %indvars.iv.next706, %187 ]
  %gep830 = getelementptr %struct.complex, ptr %invariant.gep829, i64 %indvars.iv705
  %188 = tail call <2 x float> @Cf(ptr noundef %gep830)
  %189 = tail call float @cabsf(<2 x float> noundef %188) #8
  %190 = getelementptr inbounds float, ptr %16, i64 %indvars.iv705
  %191 = load float, ptr %190, align 4, !tbaa !9
  %192 = fadd float %189, %191
  store float %192, ptr %190, align 4, !tbaa !9
  %indvars.iv.next706 = add nuw nsw i64 %indvars.iv705, 1
  %exitcond710.not = icmp eq i64 %indvars.iv.next706, %wide.trip.count709
  br i1 %exitcond710.not, label %._crit_edge534, label %187, !llvm.loop !33

._crit_edge534:                                   ; preds = %187, %.lr.ph540
  %indvars.iv.next712 = add nuw nsw i64 %indvars.iv711, 1
  %exitcond715.not = icmp eq i64 %indvars.iv.next712, %wide.trip.count714
  br i1 %exitcond715.not, label %.loopexit452, label %.lr.ph540, !llvm.loop !34

193:                                              ; preds = %151
  br i1 %.not389, label %222, label %194

194:                                              ; preds = %193
  %195 = load i32, ptr %4, align 4, !tbaa !5
  %.439 = tail call i32 @llvm.smin.i32(i32 %154, i32 %195)
  %.not394542 = icmp slt i32 %.439, 1
  br i1 %.not394542, label %.preheader455, label %.lr.ph545.preheader

.lr.ph545.preheader:                              ; preds = %194
  %196 = add nuw i32 %.439, 1
  %wide.trip.count719 = zext i32 %196 to i64
  %197 = zext nneg i32 %.439 to i64
  %min.iters.check862 = icmp ult i32 %.439, 8
  br i1 %min.iters.check862, label %.lr.ph545.preheader884, label %vector.ph863

.lr.ph545.preheader884:                           ; preds = %middle.block860, %.lr.ph545.preheader
  %indvars.iv716.ph = phi i64 [ 1, %.lr.ph545.preheader ], [ %ind.end866, %middle.block860 ]
  br label %.lr.ph545

vector.ph863:                                     ; preds = %.lr.ph545.preheader
  %n.vec865 = and i64 %197, 2147483640
  %ind.end866 = or disjoint i64 %n.vec865, 1
  br label %vector.body868

vector.body868:                                   ; preds = %vector.body868, %vector.ph863
  %index869 = phi i64 [ 0, %vector.ph863 ], [ %index.next871, %vector.body868 ]
  %198 = getelementptr float, ptr %7, i64 %index869
  %199 = getelementptr inbounds i8, ptr %198, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %198, 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 %199, align 4, !tbaa !9
  %index.next871 = add nuw i64 %index869, 8
  %200 = icmp eq i64 %index.next871, %n.vec865
  br i1 %200, label %middle.block860, label %vector.body868, !llvm.loop !35

middle.block860:                                  ; preds = %vector.body868
  %cmp.n872 = icmp eq i64 %n.vec865, %197
  br i1 %cmp.n872, label %.preheader455, label %.lr.ph545.preheader884

.preheader455:                                    ; preds = %.lr.ph545, %middle.block860, %194
  %.not395.not546 = icmp slt i32 %195, %154
  br i1 %.not395.not546, label %.lr.ph548.preheader, label %.preheader

.lr.ph548.preheader:                              ; preds = %.preheader455
  %201 = sext i32 %195 to i64
  %202 = shl nsw i64 %201, 2
  %scevgep = getelementptr i8, ptr %7, i64 %202
  %203 = xor i32 %195, -1
  %204 = add i32 %154, %203
  %205 = zext i32 %204 to i64
  %206 = shl nuw nsw i64 %205, 2
  %207 = add nuw nsw i64 %206, 4
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %207, i1 false), !tbaa !9
  br label %.preheader

.lr.ph545:                                        ; preds = %.lr.ph545.preheader884, %.lr.ph545
  %indvars.iv716 = phi i64 [ %indvars.iv.next717, %.lr.ph545 ], [ %indvars.iv716.ph, %.lr.ph545.preheader884 ]
  %208 = getelementptr inbounds float, ptr %16, i64 %indvars.iv716
  store float 1.000000e+00, ptr %208, align 4, !tbaa !9
  %indvars.iv.next717 = add nuw nsw i64 %indvars.iv716, 1
  %exitcond720.not = icmp eq i64 %indvars.iv.next717, %wide.trip.count719
  br i1 %exitcond720.not, label %.preheader455, label %.lr.ph545, !llvm.loop !36

.preheader:                                       ; preds = %.lr.ph548.preheader, %.preheader455
  %.not396555 = icmp slt i32 %195, 1
  br i1 %.not396555, label %.loopexit452, label %.lr.ph557.preheader

.lr.ph557.preheader:                              ; preds = %.preheader
  %209 = sext i32 %13 to i64
  %210 = add nuw i32 %195, 1
  %wide.trip.count733 = zext i32 %210 to i64
  br label %.lr.ph557

.loopexit453:                                     ; preds = %216, %.lr.ph557
  %indvars.iv.next725 = add nuw i32 %indvars.iv724, 1
  %exitcond734.not = icmp eq i64 %indvars.iv.next731, %wide.trip.count733
  br i1 %exitcond734.not, label %.loopexit452, label %.lr.ph557, !llvm.loop !37

.lr.ph557:                                        ; preds = %.lr.ph557.preheader, %.loopexit453
  %indvars.iv730 = phi i64 [ 1, %.lr.ph557.preheader ], [ %indvars.iv.next731, %.loopexit453 ]
  %indvars.iv724 = phi i32 [ 2, %.lr.ph557.preheader ], [ %indvars.iv.next725, %.loopexit453 ]
  %211 = load i32, ptr %3, align 4, !tbaa !5
  %indvars.iv.next731 = add nuw nsw i64 %indvars.iv730, 1
  %212 = sext i32 %211 to i64
  %.not397549.not = icmp slt i64 %indvars.iv730, %212
  br i1 %.not397549.not, label %.lr.ph552, label %.loopexit453

.lr.ph552:                                        ; preds = %.lr.ph557
  %213 = sext i32 %indvars.iv724 to i64
  %214 = mul nsw i64 %indvars.iv730, %209
  %215 = add i32 %211, 1
  %invariant.gep831 = getelementptr %struct.complex, ptr %15, i64 %214
  br label %216

216:                                              ; preds = %.lr.ph552, %216
  %indvars.iv726 = phi i64 [ %213, %.lr.ph552 ], [ %indvars.iv.next727, %216 ]
  %gep832 = getelementptr %struct.complex, ptr %invariant.gep831, i64 %indvars.iv726
  %217 = tail call <2 x float> @Cf(ptr noundef %gep832)
  %218 = tail call float @cabsf(<2 x float> noundef %217) #8
  %219 = getelementptr inbounds float, ptr %16, i64 %indvars.iv726
  %220 = load float, ptr %219, align 4, !tbaa !9
  %221 = fadd float %218, %220
  store float %221, ptr %219, align 4, !tbaa !9
  %indvars.iv.next727 = add nsw i64 %indvars.iv726, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next727 to i32
  %exitcond729.not = icmp eq i32 %215, %lftr.wideiv
  br i1 %exitcond729.not, label %.loopexit453, label %216, !llvm.loop !38

222:                                              ; preds = %193
  %.not390559 = icmp slt i32 %154, 1
  br i1 %.not390559, label %._crit_edge563, label %.lr.ph562.preheader

.lr.ph562.preheader:                              ; preds = %222
  %223 = zext nneg i32 %154 to i64
  %224 = shl nuw nsw i64 %223, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 %224, i1 false), !tbaa !9
  br label %._crit_edge563

._crit_edge563:                                   ; preds = %.lr.ph562.preheader, %222
  %225 = load i32, ptr %4, align 4, !tbaa !5
  %.not391571 = icmp slt i32 %225, 1
  br i1 %.not391571, label %.loopexit452, label %.lr.ph574.preheader

.lr.ph574.preheader:                              ; preds = %._crit_edge563
  %226 = sext i32 %13 to i64
  %227 = add nuw i32 %225, 1
  %wide.trip.count746 = zext i32 %227 to i64
  br label %.lr.ph574

.lr.ph574:                                        ; preds = %.lr.ph574.preheader, %._crit_edge568
  %indvars.iv738 = phi i64 [ 1, %.lr.ph574.preheader ], [ %indvars.iv.next739, %._crit_edge568 ]
  %228 = load i32, ptr %3, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %.not392564 = icmp sgt i64 %indvars.iv738, %229
  br i1 %.not392564, label %._crit_edge568, label %.lr.ph567

.lr.ph567:                                        ; preds = %.lr.ph574
  %230 = mul nsw i64 %indvars.iv738, %226
  %231 = add i32 %228, 1
  %wide.trip.count743 = zext i32 %231 to i64
  %invariant.gep833 = getelementptr %struct.complex, ptr %15, i64 %230
  br label %232

232:                                              ; preds = %.lr.ph567, %232
  %indvars.iv740 = phi i64 [ %indvars.iv738, %.lr.ph567 ], [ %indvars.iv.next741, %232 ]
  %gep834 = getelementptr %struct.complex, ptr %invariant.gep833, i64 %indvars.iv740
  %233 = tail call <2 x float> @Cf(ptr noundef %gep834)
  %234 = tail call float @cabsf(<2 x float> noundef %233) #8
  %235 = getelementptr inbounds float, ptr %16, i64 %indvars.iv740
  %236 = load float, ptr %235, align 4, !tbaa !9
  %237 = fadd float %234, %236
  store float %237, ptr %235, align 4, !tbaa !9
  %indvars.iv.next741 = add nuw nsw i64 %indvars.iv740, 1
  %exitcond744.not = icmp eq i64 %indvars.iv.next741, %wide.trip.count743
  br i1 %exitcond744.not, label %._crit_edge568, label %232, !llvm.loop !39

._crit_edge568:                                   ; preds = %232, %.lr.ph574
  %indvars.iv.next739 = add nuw nsw i64 %indvars.iv738, 1
  %exitcond747.not = icmp eq i64 %indvars.iv.next739, %wide.trip.count746
  br i1 %exitcond747.not, label %.loopexit452, label %.lr.ph574, !llvm.loop !40

.loopexit452:                                     ; preds = %._crit_edge519, %._crit_edge534, %.loopexit453, %._crit_edge568, %._crit_edge514, %._crit_edge529, %.preheader, %._crit_edge563
  %238 = load i32, ptr %3, align 4, !tbaa !5
  %.not405576 = icmp slt i32 %238, 1
  br i1 %.not405576, label %.loopexit443, label %.lr.ph580.preheader

.lr.ph580.preheader:                              ; preds = %.loopexit452
  %239 = add nuw i32 %238, 1
  %wide.trip.count751 = zext i32 %239 to i64
  br label %.lr.ph580

.lr.ph580:                                        ; preds = %.lr.ph580.preheader, %245
  %indvars.iv748 = phi i64 [ 1, %.lr.ph580.preheader ], [ %indvars.iv.next749, %245 ]
  %.16357577 = phi float [ 0.000000e+00, %.lr.ph580.preheader ], [ %.17358, %245 ]
  %240 = getelementptr inbounds float, ptr %16, i64 %indvars.iv748
  %241 = load float, ptr %240, align 4, !tbaa !9
  store float %241, ptr %11, align 4, !tbaa !9
  %242 = fcmp olt float %.16357577, %241
  br i1 %242, label %245, label %243

243:                                              ; preds = %.lr.ph580
  %244 = call i32 @sisnan_(ptr noundef nonnull %11) #8
  %.not406 = icmp eq i32 %244, 0
  br i1 %.not406, label %245, label %._crit_edge798

._crit_edge798:                                   ; preds = %243
  %.pre799 = load float, ptr %11, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %.lr.ph580, %._crit_edge798, %243
  %.17358 = phi float [ %.16357577, %243 ], [ %.pre799, %._crit_edge798 ], [ %241, %.lr.ph580 ]
  %indvars.iv.next749 = add nuw nsw i64 %indvars.iv748, 1
  %exitcond752.not = icmp eq i64 %indvars.iv.next749, %wide.trip.count751
  br i1 %exitcond752.not, label %.loopexit443, label %.lr.ph580, !llvm.loop !41

246:                                              ; preds = %149
  %247 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #8
  %.not374 = icmp eq i32 %247, 0
  br i1 %.not374, label %248, label %250

248:                                              ; preds = %246
  %249 = tail call i32 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #8
  %.not375 = icmp eq i32 %249, 0
  br i1 %.not375, label %.loopexit443, label %250

250:                                              ; preds = %248, %246
  %251 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #8
  %.not376 = icmp eq i32 %251, 0
  %252 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #8
  %.not377 = icmp eq i32 %252, 0
  br i1 %.not376, label %277, label %253

253:                                              ; preds = %250
  br i1 %.not377, label %268, label %254

254:                                              ; preds = %253
  store float 1.000000e+00, ptr %12, align 8, !tbaa !9
  %255 = load i32, ptr %3, align 4, !tbaa !5
  %256 = load i32, ptr %4, align 4, !tbaa !5
  %.440 = tail call i32 @llvm.smin.i32(i32 %255, i32 %256)
  %257 = sitofp i32 %.440 to float
  %258 = getelementptr inbounds i8, ptr %12, i64 4
  store float %257, ptr %258, align 4, !tbaa !9
  %invariant.gep = getelementptr i8, ptr %15, i64 8
  %.not386582 = icmp slt i32 %256, 2
  br i1 %.not386582, label %.loopexit447, label %.lr.ph585

.lr.ph585:                                        ; preds = %254
  %259 = getelementptr inbounds i8, ptr %10, i64 4
  %260 = sext i32 %13 to i64
  %261 = add nuw i32 %256, 1
  %wide.trip.count756 = zext i32 %261 to i64
  br label %262

262:                                              ; preds = %.lr.ph585, %262
  %indvars.iv753 = phi i64 [ 2, %.lr.ph585 ], [ %indvars.iv.next754, %262 ]
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %10, align 8, !tbaa !9
  %263 = load i32, ptr %3, align 4, !tbaa !5
  %264 = trunc i64 %indvars.iv753 to i32
  %265 = add i32 %264, -1
  %266 = call i32 @llvm.smin.i32(i32 %263, i32 %265)
  store i32 %266, ptr %9, align 4, !tbaa !5
  %267 = mul nsw i64 %indvars.iv753, %260
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %267
  call void @classq_(ptr noundef nonnull %9, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %259) #8
  call void @scombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #8
  %indvars.iv.next754 = add nuw nsw i64 %indvars.iv753, 1
  %exitcond757.not = icmp eq i64 %indvars.iv.next754, %wide.trip.count756
  br i1 %exitcond757.not, label %.loopexit447, label %262, !llvm.loop !42

268:                                              ; preds = %253
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %12, align 8, !tbaa !9
  %269 = load i32, ptr %4, align 4, !tbaa !5
  %invariant.gep586 = getelementptr i8, ptr %15, i64 8
  %.not383588 = icmp slt i32 %269, 1
  br i1 %.not383588, label %.loopexit447, label %.lr.ph591

.lr.ph591:                                        ; preds = %268
  %270 = getelementptr inbounds i8, ptr %10, i64 4
  %271 = sext i32 %13 to i64
  %272 = add nuw i32 %269, 1
  %wide.trip.count761 = zext i32 %272 to i64
  br label %273

273:                                              ; preds = %.lr.ph591, %273
  %indvars.iv758 = phi i64 [ 1, %.lr.ph591 ], [ %indvars.iv.next759, %273 ]
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %10, align 8, !tbaa !9
  %274 = load i32, ptr %3, align 4, !tbaa !5
  %275 = trunc nuw nsw i64 %indvars.iv758 to i32
  %.11338. = call i32 @llvm.smin.i32(i32 %274, i32 %275)
  store i32 %.11338., ptr %9, align 4, !tbaa !5
  %276 = mul nsw i64 %indvars.iv758, %271
  %gep587 = getelementptr %struct.complex, ptr %invariant.gep586, i64 %276
  call void @classq_(ptr noundef nonnull %9, ptr noundef %gep587, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %270) #8
  call void @scombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #8
  %indvars.iv.next759 = add nuw nsw i64 %indvars.iv758, 1
  %exitcond762.not = icmp eq i64 %indvars.iv.next759, %wide.trip.count761
  br i1 %exitcond762.not, label %.loopexit447, label %273, !llvm.loop !43

277:                                              ; preds = %250
  br i1 %.not377, label %293, label %278

278:                                              ; preds = %277
  store float 1.000000e+00, ptr %12, align 8, !tbaa !9
  %279 = load i32, ptr %3, align 4, !tbaa !5
  %280 = load i32, ptr %4, align 4, !tbaa !5
  %.441 = tail call i32 @llvm.smin.i32(i32 %279, i32 %280)
  %281 = sitofp i32 %.441 to float
  %282 = getelementptr inbounds i8, ptr %12, i64 4
  store float %281, ptr %282, align 4, !tbaa !9
  %.not380592 = icmp slt i32 %280, 1
  br i1 %.not380592, label %.loopexit447, label %.lr.ph595

.lr.ph595:                                        ; preds = %278
  %283 = getelementptr inbounds i8, ptr %10, i64 4
  br label %284

284:                                              ; preds = %.lr.ph595, %284
  %.12339593 = phi i32 [ 1, %.lr.ph595 ], [ %287, %284 ]
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %10, align 8, !tbaa !9
  %285 = load i32, ptr %3, align 4, !tbaa !5
  %286 = sub nsw i32 %285, %.12339593
  store i32 %286, ptr %9, align 4, !tbaa !5
  %287 = add nuw nsw i32 %.12339593, 1
  %288 = call i32 @llvm.smin.i32(i32 %285, i32 %287)
  %289 = mul nsw i32 %.12339593, %13
  %290 = add nsw i32 %288, %289
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.complex, ptr %15, i64 %291
  call void @classq_(ptr noundef nonnull %9, ptr noundef %292, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %283) #8
  call void @scombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #8
  %exitcond763.not = icmp eq i32 %.12339593, %280
  br i1 %exitcond763.not, label %.loopexit447, label %284, !llvm.loop !44

293:                                              ; preds = %277
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %12, align 8, !tbaa !9
  %294 = load i32, ptr %4, align 4, !tbaa !5
  %.not378596 = icmp slt i32 %294, 1
  br i1 %.not378596, label %.loopexit447, label %.lr.ph599

.lr.ph599:                                        ; preds = %293
  %295 = getelementptr inbounds i8, ptr %10, i64 4
  %296 = add i32 %13, 1
  %297 = add nuw i32 %294, 1
  %wide.trip.count767 = zext i32 %297 to i64
  br label %298

298:                                              ; preds = %.lr.ph599, %298
  %indvars.iv764 = phi i64 [ 1, %.lr.ph599 ], [ %indvars.iv.next765, %298 ]
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %10, align 8, !tbaa !9
  %299 = load i32, ptr %3, align 4, !tbaa !5
  %300 = trunc nuw nsw i64 %indvars.iv764 to i32
  %reass.sub = sub i32 %299, %300
  %301 = add i32 %reass.sub, 1
  store i32 %301, ptr %9, align 4, !tbaa !5
  %302 = mul i32 %296, %300
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.complex, ptr %15, i64 %303
  call void @classq_(ptr noundef nonnull %9, ptr noundef %304, ptr noundef nonnull @c__1, ptr noundef nonnull %10, ptr noundef nonnull %295) #8
  call void @scombssq_(ptr noundef nonnull %12, ptr noundef nonnull %10) #8
  %indvars.iv.next765 = add nuw nsw i64 %indvars.iv764, 1
  %exitcond768.not = icmp eq i64 %indvars.iv.next765, %wide.trip.count767
  br i1 %exitcond768.not, label %.loopexit447, label %298, !llvm.loop !45

.loopexit447:                                     ; preds = %262, %273, %284, %298, %254, %268, %278, %293
  %305 = load float, ptr %12, align 8, !tbaa !9
  %306 = fpext float %305 to double
  %307 = getelementptr inbounds i8, ptr %12, i64 4
  %308 = load float, ptr %307, align 4, !tbaa !9
  %309 = fpext float %308 to double
  %310 = call double @sqrt(double noundef %309) #8
  %311 = fmul double %310, %306
  %312 = fptrunc double %311 to float
  br label %.loopexit443

.loopexit443:                                     ; preds = %._crit_edge, %.loopexit460, %._crit_edge489, %._crit_edge502, %245, %121, %148, %27, %43, %58, %72, %.loopexit452, %94, %122, %8, %.loopexit447, %248
  %.18 = phi float [ %312, %.loopexit447 ], [ undef, %248 ], [ 0.000000e+00, %8 ], [ 0.000000e+00, %122 ], [ 0.000000e+00, %94 ], [ 0.000000e+00, %.loopexit452 ], [ 0.000000e+00, %72 ], [ 0.000000e+00, %58 ], [ 1.000000e+00, %43 ], [ 1.000000e+00, %27 ], [ %.15356, %148 ], [ %.13354, %121 ], [ %.17358, %245 ], [ %.10351.lcssa, %._crit_edge502 ], [ %.7348.lcssa, %._crit_edge489 ], [ %.4345.lcssa, %.loopexit460 ], [ %.1342.lcssa, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  ret float %.18
}

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) local_unnamed_addr #3

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

declare i32 @sisnan_(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #5

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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

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

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


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