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

; 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 i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @clansp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, 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
  %23 = load ptr, ptr %10, align 8, !tbaa !5
  %24 = getelementptr inbounds float, ptr %23, i32 -1
  store ptr %24, ptr %10, align 8, !tbaa !5
  %25 = load ptr, ptr %9, align 8, !tbaa !5
  %26 = getelementptr inbounds %struct.complex, ptr %25, i32 -1
  store ptr %26, ptr %9, align 8, !tbaa !5
  %27 = load ptr, ptr %8, align 8, !tbaa !5
  %28 = load i64, ptr %27, align 8, !tbaa !9
  %29 = icmp eq i64 %28, 0
  br i1 %29, label %30, label %31

30:                                               ; preds = %5
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  br label %509

31:                                               ; preds = %5
  %32 = load ptr, ptr %6, align 8, !tbaa !5
  %33 = call i64 @lsame_(ptr noundef %32, ptr noundef @.str)
  %34 = icmp ne i64 %33, 0
  br i1 %34, label %35, label %138

35:                                               ; preds = %31
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = call i64 @lsame_(ptr noundef %36, ptr noundef @.str.1)
  %38 = icmp ne i64 %37, 0
  br i1 %38, label %39, label %85

39:                                               ; preds = %35
  store i64 1, ptr %18, align 8, !tbaa !9
  %40 = load ptr, ptr %8, align 8, !tbaa !5
  %41 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %41, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %17, align 8, !tbaa !9
  br label %42

42:                                               ; preds = %81, %39
  %43 = load i64, ptr %17, align 8, !tbaa !9
  %44 = load i64, ptr %11, align 8, !tbaa !9
  %45 = icmp sle i64 %43, %44
  br i1 %45, label %46, label %84

46:                                               ; preds = %42
  %47 = load i64, ptr %18, align 8, !tbaa !9
  %48 = load i64, ptr %17, align 8, !tbaa !9
  %49 = add nsw i64 %47, %48
  %50 = sub nsw i64 %49, 1
  store i64 %50, ptr %12, align 8, !tbaa !9
  %51 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %51, ptr %16, align 8, !tbaa !9
  br label %52

52:                                               ; preds = %74, %46
  %53 = load i64, ptr %16, align 8, !tbaa !9
  %54 = load i64, ptr %12, align 8, !tbaa !9
  %55 = icmp sle i64 %53, %54
  br i1 %55, label %56, label %77

56:                                               ; preds = %52
  %57 = load float, ptr %22, align 4, !tbaa !11
  store float %57, ptr %14, align 4, !tbaa !11
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load i64, ptr %16, align 8, !tbaa !9
  %60 = getelementptr inbounds %struct.complex, ptr %58, i64 %59
  %61 = call double @c_abs(ptr noundef %60)
  %62 = fptrunc double %61 to float
  store float %62, ptr %15, align 4, !tbaa !11
  %63 = load float, ptr %14, align 4, !tbaa !11
  %64 = load float, ptr %15, align 4, !tbaa !11
  %65 = fcmp oge float %63, %64
  br i1 %65, label %66, label %68

66:                                               ; preds = %56
  %67 = load float, ptr %14, align 4, !tbaa !11
  br label %70

68:                                               ; preds = %56
  %69 = load float, ptr %15, align 4, !tbaa !11
  br label %70

70:                                               ; preds = %68, %66
  %71 = phi float [ %67, %66 ], [ %69, %68 ]
  %72 = fpext float %71 to double
  %73 = fptrunc double %72 to float
  store float %73, ptr %22, align 4, !tbaa !11
  br label %74

74:                                               ; preds = %70
  %75 = load i64, ptr %16, align 8, !tbaa !9
  %76 = add nsw i64 %75, 1
  store i64 %76, ptr %16, align 8, !tbaa !9
  br label %52, !llvm.loop !13

77:                                               ; preds = %52
  %78 = load i64, ptr %17, align 8, !tbaa !9
  %79 = load i64, ptr %18, align 8, !tbaa !9
  %80 = add nsw i64 %79, %78
  store i64 %80, ptr %18, align 8, !tbaa !9
  br label %81

81:                                               ; preds = %77
  %82 = load i64, ptr %17, align 8, !tbaa !9
  %83 = add nsw i64 %82, 1
  store i64 %83, ptr %17, align 8, !tbaa !9
  br label %42, !llvm.loop !15

84:                                               ; preds = %42
  br label %137

85:                                               ; preds = %35
  store i64 1, ptr %18, align 8, !tbaa !9
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %87, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %17, align 8, !tbaa !9
  br label %88

88:                                               ; preds = %133, %85
  %89 = load i64, ptr %17, align 8, !tbaa !9
  %90 = load i64, ptr %11, align 8, !tbaa !9
  %91 = icmp sle i64 %89, %90
  br i1 %91, label %92, label %136

92:                                               ; preds = %88
  %93 = load i64, ptr %18, align 8, !tbaa !9
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  %96 = add nsw i64 %93, %95
  %97 = load i64, ptr %17, align 8, !tbaa !9
  %98 = sub nsw i64 %96, %97
  store i64 %98, ptr %12, align 8, !tbaa !9
  %99 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %99, ptr %16, align 8, !tbaa !9
  br label %100

100:                                              ; preds = %122, %92
  %101 = load i64, ptr %16, align 8, !tbaa !9
  %102 = load i64, ptr %12, align 8, !tbaa !9
  %103 = icmp sle i64 %101, %102
  br i1 %103, label %104, label %125

104:                                              ; preds = %100
  %105 = load float, ptr %22, align 4, !tbaa !11
  store float %105, ptr %14, align 4, !tbaa !11
  %106 = load ptr, ptr %9, align 8, !tbaa !5
  %107 = load i64, ptr %16, align 8, !tbaa !9
  %108 = getelementptr inbounds %struct.complex, ptr %106, i64 %107
  %109 = call double @c_abs(ptr noundef %108)
  %110 = fptrunc double %109 to float
  store float %110, ptr %15, align 4, !tbaa !11
  %111 = load float, ptr %14, align 4, !tbaa !11
  %112 = load float, ptr %15, align 4, !tbaa !11
  %113 = fcmp oge float %111, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %104
  %115 = load float, ptr %14, align 4, !tbaa !11
  br label %118

116:                                              ; preds = %104
  %117 = load float, ptr %15, align 4, !tbaa !11
  br label %118

118:                                              ; preds = %116, %114
  %119 = phi float [ %115, %114 ], [ %117, %116 ]
  %120 = fpext float %119 to double
  %121 = fptrunc double %120 to float
  store float %121, ptr %22, align 4, !tbaa !11
  br label %122

122:                                              ; preds = %118
  %123 = load i64, ptr %16, align 8, !tbaa !9
  %124 = add nsw i64 %123, 1
  store i64 %124, ptr %16, align 8, !tbaa !9
  br label %100, !llvm.loop !16

125:                                              ; preds = %100
  %126 = load i64, ptr %18, align 8, !tbaa !9
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = add nsw i64 %126, %128
  %130 = load i64, ptr %17, align 8, !tbaa !9
  %131 = sub nsw i64 %129, %130
  %132 = add nsw i64 %131, 1
  store i64 %132, ptr %18, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %125
  %134 = load i64, ptr %17, align 8, !tbaa !9
  %135 = add nsw i64 %134, 1
  store i64 %135, ptr %17, align 8, !tbaa !9
  br label %88, !llvm.loop !17

136:                                              ; preds = %88
  br label %137

137:                                              ; preds = %136, %84
  br label %508

138:                                              ; preds = %31
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str.2)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %151, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %6, align 8, !tbaa !5
  %144 = call i64 @lsame_(ptr noundef %143, ptr noundef @.str.3)
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %151, label %146

146:                                              ; preds = %142
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = load i8, ptr %147, align 1, !tbaa !18
  %149 = zext i8 %148 to i32
  %150 = icmp eq i32 %149, 49
  br i1 %150, label %151, label %314

151:                                              ; preds = %146, %142, %138
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  store i64 1, ptr %18, align 8, !tbaa !9
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = call i64 @lsame_(ptr noundef %152, ptr noundef @.str.1)
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %155, label %234

155:                                              ; preds = %151
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  store i64 %157, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %17, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %203, %155
  %159 = load i64, ptr %17, align 8, !tbaa !9
  %160 = load i64, ptr %11, align 8, !tbaa !9
  %161 = icmp sle i64 %159, %160
  br i1 %161, label %162, label %206

162:                                              ; preds = %158
  store float 0.000000e+00, ptr %19, align 4, !tbaa !11
  %163 = load i64, ptr %17, align 8, !tbaa !9
  %164 = sub nsw i64 %163, 1
  store i64 %164, ptr %12, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %186, %162
  %166 = load i64, ptr %16, align 8, !tbaa !9
  %167 = load i64, ptr %12, align 8, !tbaa !9
  %168 = icmp sle i64 %166, %167
  br i1 %168, label %169, label %189

169:                                              ; preds = %165
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = load i64, ptr %18, align 8, !tbaa !9
  %172 = getelementptr inbounds %struct.complex, ptr %170, i64 %171
  %173 = call double @c_abs(ptr noundef %172)
  %174 = fptrunc double %173 to float
  store float %174, ptr %20, align 4, !tbaa !11
  %175 = load float, ptr %20, align 4, !tbaa !11
  %176 = load float, ptr %19, align 4, !tbaa !11
  %177 = fadd float %176, %175
  store float %177, ptr %19, align 4, !tbaa !11
  %178 = load float, ptr %20, align 4, !tbaa !11
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = load i64, ptr %16, align 8, !tbaa !9
  %181 = getelementptr inbounds float, ptr %179, i64 %180
  %182 = load float, ptr %181, align 4, !tbaa !11
  %183 = fadd float %182, %178
  store float %183, ptr %181, align 4, !tbaa !11
  %184 = load i64, ptr %18, align 8, !tbaa !9
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %18, align 8, !tbaa !9
  br label %186

186:                                              ; preds = %169
  %187 = load i64, ptr %16, align 8, !tbaa !9
  %188 = add nsw i64 %187, 1
  store i64 %188, ptr %16, align 8, !tbaa !9
  br label %165, !llvm.loop !19

189:                                              ; preds = %165
  %190 = load float, ptr %19, align 4, !tbaa !11
  %191 = fpext float %190 to double
  %192 = load ptr, ptr %9, align 8, !tbaa !5
  %193 = load i64, ptr %18, align 8, !tbaa !9
  %194 = getelementptr inbounds %struct.complex, ptr %192, i64 %193
  %195 = call double @c_abs(ptr noundef %194)
  %196 = fadd double %191, %195
  %197 = fptrunc double %196 to float
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = load i64, ptr %17, align 8, !tbaa !9
  %200 = getelementptr inbounds float, ptr %198, i64 %199
  store float %197, ptr %200, align 4, !tbaa !11
  %201 = load i64, ptr %18, align 8, !tbaa !9
  %202 = add nsw i64 %201, 1
  store i64 %202, ptr %18, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %189
  %204 = load i64, ptr %17, align 8, !tbaa !9
  %205 = add nsw i64 %204, 1
  store i64 %205, ptr %17, align 8, !tbaa !9
  br label %158, !llvm.loop !20

206:                                              ; preds = %158
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  store i64 %208, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %209

209:                                              ; preds = %230, %206
  %210 = load i64, ptr %16, align 8, !tbaa !9
  %211 = load i64, ptr %11, align 8, !tbaa !9
  %212 = icmp sle i64 %210, %211
  br i1 %212, label %213, label %233

213:                                              ; preds = %209
  %214 = load float, ptr %22, align 4, !tbaa !11
  store float %214, ptr %14, align 4, !tbaa !11
  %215 = load ptr, ptr %10, align 8, !tbaa !5
  %216 = load i64, ptr %16, align 8, !tbaa !9
  %217 = getelementptr inbounds float, ptr %215, i64 %216
  %218 = load float, ptr %217, align 4, !tbaa !11
  store float %218, ptr %15, align 4, !tbaa !11
  %219 = load float, ptr %14, align 4, !tbaa !11
  %220 = load float, ptr %15, align 4, !tbaa !11
  %221 = fcmp oge float %219, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %213
  %223 = load float, ptr %14, align 4, !tbaa !11
  br label %226

224:                                              ; preds = %213
  %225 = load float, ptr %15, align 4, !tbaa !11
  br label %226

226:                                              ; preds = %224, %222
  %227 = phi float [ %223, %222 ], [ %225, %224 ]
  %228 = fpext float %227 to double
  %229 = fptrunc double %228 to float
  store float %229, ptr %22, align 4, !tbaa !11
  br label %230

230:                                              ; preds = %226
  %231 = load i64, ptr %16, align 8, !tbaa !9
  %232 = add nsw i64 %231, 1
  store i64 %232, ptr %16, align 8, !tbaa !9
  br label %209, !llvm.loop !21

233:                                              ; preds = %209
  br label %313

234:                                              ; preds = %151
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  store i64 %236, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %245, %234
  %238 = load i64, ptr %16, align 8, !tbaa !9
  %239 = load i64, ptr %11, align 8, !tbaa !9
  %240 = icmp sle i64 %238, %239
  br i1 %240, label %241, label %248

241:                                              ; preds = %237
  %242 = load ptr, ptr %10, align 8, !tbaa !5
  %243 = load i64, ptr %16, align 8, !tbaa !9
  %244 = getelementptr inbounds float, ptr %242, i64 %243
  store float 0.000000e+00, ptr %244, align 4, !tbaa !11
  br label %245

245:                                              ; preds = %241
  %246 = load i64, ptr %16, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %16, align 8, !tbaa !9
  br label %237, !llvm.loop !22

248:                                              ; preds = %237
  %249 = load ptr, ptr %8, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  store i64 %250, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %17, align 8, !tbaa !9
  br label %251

251:                                              ; preds = %309, %248
  %252 = load i64, ptr %17, align 8, !tbaa !9
  %253 = load i64, ptr %11, align 8, !tbaa !9
  %254 = icmp sle i64 %252, %253
  br i1 %254, label %255, label %312

255:                                              ; preds = %251
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = load i64, ptr %17, align 8, !tbaa !9
  %258 = getelementptr inbounds float, ptr %256, i64 %257
  %259 = load float, ptr %258, align 4, !tbaa !11
  %260 = fpext float %259 to double
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = load i64, ptr %18, align 8, !tbaa !9
  %263 = getelementptr inbounds %struct.complex, ptr %261, i64 %262
  %264 = call double @c_abs(ptr noundef %263)
  %265 = fadd double %260, %264
  %266 = fptrunc double %265 to float
  store float %266, ptr %19, align 4, !tbaa !11
  %267 = load i64, ptr %18, align 8, !tbaa !9
  %268 = add nsw i64 %267, 1
  store i64 %268, ptr %18, align 8, !tbaa !9
  %269 = load ptr, ptr %8, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %12, align 8, !tbaa !9
  %271 = load i64, ptr %17, align 8, !tbaa !9
  %272 = add nsw i64 %271, 1
  store i64 %272, ptr %16, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %294, %255
  %274 = load i64, ptr %16, align 8, !tbaa !9
  %275 = load i64, ptr %12, align 8, !tbaa !9
  %276 = icmp sle i64 %274, %275
  br i1 %276, label %277, label %297

277:                                              ; preds = %273
  %278 = load ptr, ptr %9, align 8, !tbaa !5
  %279 = load i64, ptr %18, align 8, !tbaa !9
  %280 = getelementptr inbounds %struct.complex, ptr %278, i64 %279
  %281 = call double @c_abs(ptr noundef %280)
  %282 = fptrunc double %281 to float
  store float %282, ptr %20, align 4, !tbaa !11
  %283 = load float, ptr %20, align 4, !tbaa !11
  %284 = load float, ptr %19, align 4, !tbaa !11
  %285 = fadd float %284, %283
  store float %285, ptr %19, align 4, !tbaa !11
  %286 = load float, ptr %20, align 4, !tbaa !11
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = load i64, ptr %16, align 8, !tbaa !9
  %289 = getelementptr inbounds float, ptr %287, i64 %288
  %290 = load float, ptr %289, align 4, !tbaa !11
  %291 = fadd float %290, %286
  store float %291, ptr %289, align 4, !tbaa !11
  %292 = load i64, ptr %18, align 8, !tbaa !9
  %293 = add nsw i64 %292, 1
  store i64 %293, ptr %18, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %277
  %295 = load i64, ptr %16, align 8, !tbaa !9
  %296 = add nsw i64 %295, 1
  store i64 %296, ptr %16, align 8, !tbaa !9
  br label %273, !llvm.loop !23

297:                                              ; preds = %273
  %298 = load float, ptr %22, align 4, !tbaa !11
  %299 = load float, ptr %19, align 4, !tbaa !11
  %300 = fcmp oge float %298, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %297
  %302 = load float, ptr %22, align 4, !tbaa !11
  br label %305

303:                                              ; preds = %297
  %304 = load float, ptr %19, align 4, !tbaa !11
  br label %305

305:                                              ; preds = %303, %301
  %306 = phi float [ %302, %301 ], [ %304, %303 ]
  %307 = fpext float %306 to double
  %308 = fptrunc double %307 to float
  store float %308, ptr %22, align 4, !tbaa !11
  br label %309

309:                                              ; preds = %305
  %310 = load i64, ptr %17, align 8, !tbaa !9
  %311 = add nsw i64 %310, 1
  store i64 %311, ptr %17, align 8, !tbaa !9
  br label %251, !llvm.loop !24

312:                                              ; preds = %251
  br label %313

313:                                              ; preds = %312, %233
  br label %507

314:                                              ; preds = %146
  %315 = load ptr, ptr %6, align 8, !tbaa !5
  %316 = call i64 @lsame_(ptr noundef %315, ptr noundef @.str.4)
  %317 = icmp ne i64 %316, 0
  br i1 %317, label %322, label %318

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

322:                                              ; preds = %318, %314
  store float 0.000000e+00, ptr %21, align 4, !tbaa !11
  store float 1.000000e+00, ptr %19, align 4, !tbaa !11
  store i64 2, ptr %18, align 8, !tbaa !9
  %323 = load ptr, ptr %7, align 8, !tbaa !5
  %324 = call i64 @lsame_(ptr noundef %323, ptr noundef @.str.1)
  %325 = icmp ne i64 %324, 0
  br i1 %325, label %326, label %347

326:                                              ; preds = %322
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  store i64 %328, ptr %11, align 8, !tbaa !9
  store i64 2, ptr %17, align 8, !tbaa !9
  br label %329

329:                                              ; preds = %343, %326
  %330 = load i64, ptr %17, align 8, !tbaa !9
  %331 = load i64, ptr %11, align 8, !tbaa !9
  %332 = icmp sle i64 %330, %331
  br i1 %332, label %333, label %346

333:                                              ; preds = %329
  %334 = load i64, ptr %17, align 8, !tbaa !9
  %335 = sub nsw i64 %334, 1
  store i64 %335, ptr %12, align 8, !tbaa !9
  %336 = load ptr, ptr %9, align 8, !tbaa !5
  %337 = load i64, ptr %18, align 8, !tbaa !9
  %338 = getelementptr inbounds %struct.complex, ptr %336, i64 %337
  %339 = call i32 @classq_(ptr noundef %12, ptr noundef %338, ptr noundef @c__1, ptr noundef %21, ptr noundef %19)
  %340 = load i64, ptr %17, align 8, !tbaa !9
  %341 = load i64, ptr %18, align 8, !tbaa !9
  %342 = add nsw i64 %341, %340
  store i64 %342, ptr %18, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %333
  %344 = load i64, ptr %17, align 8, !tbaa !9
  %345 = add nsw i64 %344, 1
  store i64 %345, ptr %17, align 8, !tbaa !9
  br label %329, !llvm.loop !25

346:                                              ; preds = %329
  br label %375

347:                                              ; preds = %322
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = sub nsw i64 %349, 1
  store i64 %350, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %17, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %371, %347
  %352 = load i64, ptr %17, align 8, !tbaa !9
  %353 = load i64, ptr %11, align 8, !tbaa !9
  %354 = icmp sle i64 %352, %353
  br i1 %354, label %355, label %374

355:                                              ; preds = %351
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = load i64, ptr %17, align 8, !tbaa !9
  %359 = sub nsw i64 %357, %358
  store i64 %359, ptr %12, align 8, !tbaa !9
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = load i64, ptr %18, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.complex, ptr %360, i64 %361
  %363 = call i32 @classq_(ptr noundef %12, ptr noundef %362, ptr noundef @c__1, ptr noundef %21, ptr noundef %19)
  %364 = load i64, ptr %18, align 8, !tbaa !9
  %365 = load ptr, ptr %8, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = add nsw i64 %364, %366
  %368 = load i64, ptr %17, align 8, !tbaa !9
  %369 = sub nsw i64 %367, %368
  %370 = add nsw i64 %369, 1
  store i64 %370, ptr %18, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %355
  %372 = load i64, ptr %17, align 8, !tbaa !9
  %373 = add nsw i64 %372, 1
  store i64 %373, ptr %17, align 8, !tbaa !9
  br label %351, !llvm.loop !26

374:                                              ; preds = %351
  br label %375

375:                                              ; preds = %374, %346
  %376 = load float, ptr %19, align 4, !tbaa !11
  %377 = fmul float %376, 2.000000e+00
  store float %377, ptr %19, align 4, !tbaa !11
  store i64 1, ptr %18, align 8, !tbaa !9
  %378 = load ptr, ptr %8, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  store i64 %379, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %16, align 8, !tbaa !9
  br label %380

380:                                              ; preds = %495, %375
  %381 = load i64, ptr %16, align 8, !tbaa !9
  %382 = load i64, ptr %11, align 8, !tbaa !9
  %383 = icmp sle i64 %381, %382
  br i1 %383, label %384, label %498

384:                                              ; preds = %380
  %385 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %385, ptr %12, align 8, !tbaa !9
  %386 = load ptr, ptr %9, align 8, !tbaa !5
  %387 = load i64, ptr %12, align 8, !tbaa !9
  %388 = getelementptr inbounds %struct.complex, ptr %386, i64 %387
  %389 = getelementptr inbounds %struct.complex, ptr %388, i32 0, i32 0
  %390 = load float, ptr %389, align 4, !tbaa !27
  %391 = fcmp une float %390, 0.000000e+00
  br i1 %391, label %392, label %432

392:                                              ; preds = %384
  %393 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %393, ptr %12, align 8, !tbaa !9
  %394 = load ptr, ptr %9, align 8, !tbaa !5
  %395 = load i64, ptr %12, align 8, !tbaa !9
  %396 = getelementptr inbounds %struct.complex, ptr %394, i64 %395
  %397 = getelementptr inbounds %struct.complex, ptr %396, i32 0, i32 0
  %398 = load float, ptr %397, align 4, !tbaa !27
  store float %398, ptr %14, align 4, !tbaa !11
  %399 = load float, ptr %14, align 4, !tbaa !11
  %400 = fcmp oge float %399, 0.000000e+00
  br i1 %400, label %401, label %403

401:                                              ; preds = %392
  %402 = load float, ptr %14, align 4, !tbaa !11
  br label %406

403:                                              ; preds = %392
  %404 = load float, ptr %14, align 4, !tbaa !11
  %405 = fneg float %404
  br label %406

406:                                              ; preds = %403, %401
  %407 = phi float [ %402, %401 ], [ %405, %403 ]
  %408 = fpext float %407 to double
  %409 = fptrunc double %408 to float
  store float %409, ptr %20, align 4, !tbaa !11
  %410 = load float, ptr %21, align 4, !tbaa !11
  %411 = load float, ptr %20, align 4, !tbaa !11
  %412 = fcmp olt float %410, %411
  br i1 %412, label %413, label %423

413:                                              ; preds = %406
  %414 = load float, ptr %21, align 4, !tbaa !11
  %415 = load float, ptr %20, align 4, !tbaa !11
  %416 = fdiv float %414, %415
  store float %416, ptr %14, align 4, !tbaa !11
  %417 = load float, ptr %19, align 4, !tbaa !11
  %418 = load float, ptr %14, align 4, !tbaa !11
  %419 = load float, ptr %14, align 4, !tbaa !11
  %420 = fmul float %418, %419
  %421 = call float @llvm.fmuladd.f32(float %417, float %420, float 1.000000e+00)
  store float %421, ptr %19, align 4, !tbaa !11
  %422 = load float, ptr %20, align 4, !tbaa !11
  store float %422, ptr %21, align 4, !tbaa !11
  br label %431

423:                                              ; preds = %406
  %424 = load float, ptr %20, align 4, !tbaa !11
  %425 = load float, ptr %21, align 4, !tbaa !11
  %426 = fdiv float %424, %425
  store float %426, ptr %14, align 4, !tbaa !11
  %427 = load float, ptr %14, align 4, !tbaa !11
  %428 = load float, ptr %14, align 4, !tbaa !11
  %429 = load float, ptr %19, align 4, !tbaa !11
  %430 = call float @llvm.fmuladd.f32(float %427, float %428, float %429)
  store float %430, ptr %19, align 4, !tbaa !11
  br label %431

431:                                              ; preds = %423, %413
  br label %432

432:                                              ; preds = %431, %384
  %433 = load ptr, ptr %9, align 8, !tbaa !5
  %434 = load i64, ptr %18, align 8, !tbaa !9
  %435 = getelementptr inbounds %struct.complex, ptr %433, i64 %434
  %436 = call double @r_imag(ptr noundef %435)
  %437 = fcmp une double %436, 0.000000e+00
  br i1 %437, label %438, label %477

438:                                              ; preds = %432
  %439 = load ptr, ptr %9, align 8, !tbaa !5
  %440 = load i64, ptr %18, align 8, !tbaa !9
  %441 = getelementptr inbounds %struct.complex, ptr %439, i64 %440
  %442 = call double @r_imag(ptr noundef %441)
  %443 = fptrunc double %442 to float
  store float %443, ptr %14, align 4, !tbaa !11
  %444 = load float, ptr %14, align 4, !tbaa !11
  %445 = fcmp oge float %444, 0.000000e+00
  br i1 %445, label %446, label %448

446:                                              ; preds = %438
  %447 = load float, ptr %14, align 4, !tbaa !11
  br label %451

448:                                              ; preds = %438
  %449 = load float, ptr %14, align 4, !tbaa !11
  %450 = fneg float %449
  br label %451

451:                                              ; preds = %448, %446
  %452 = phi float [ %447, %446 ], [ %450, %448 ]
  %453 = fpext float %452 to double
  %454 = fptrunc double %453 to float
  store float %454, ptr %20, align 4, !tbaa !11
  %455 = load float, ptr %21, align 4, !tbaa !11
  %456 = load float, ptr %20, align 4, !tbaa !11
  %457 = fcmp olt float %455, %456
  br i1 %457, label %458, label %468

458:                                              ; preds = %451
  %459 = load float, ptr %21, align 4, !tbaa !11
  %460 = load float, ptr %20, align 4, !tbaa !11
  %461 = fdiv float %459, %460
  store float %461, ptr %14, align 4, !tbaa !11
  %462 = load float, ptr %19, align 4, !tbaa !11
  %463 = load float, ptr %14, align 4, !tbaa !11
  %464 = load float, ptr %14, align 4, !tbaa !11
  %465 = fmul float %463, %464
  %466 = call float @llvm.fmuladd.f32(float %462, float %465, float 1.000000e+00)
  store float %466, ptr %19, align 4, !tbaa !11
  %467 = load float, ptr %20, align 4, !tbaa !11
  store float %467, ptr %21, align 4, !tbaa !11
  br label %476

468:                                              ; preds = %451
  %469 = load float, ptr %20, align 4, !tbaa !11
  %470 = load float, ptr %21, align 4, !tbaa !11
  %471 = fdiv float %469, %470
  store float %471, ptr %14, align 4, !tbaa !11
  %472 = load float, ptr %14, align 4, !tbaa !11
  %473 = load float, ptr %14, align 4, !tbaa !11
  %474 = load float, ptr %19, align 4, !tbaa !11
  %475 = call float @llvm.fmuladd.f32(float %472, float %473, float %474)
  store float %475, ptr %19, align 4, !tbaa !11
  br label %476

476:                                              ; preds = %468, %458
  br label %477

477:                                              ; preds = %476, %432
  %478 = load ptr, ptr %7, align 8, !tbaa !5
  %479 = call i64 @lsame_(ptr noundef %478, ptr noundef @.str.1)
  %480 = icmp ne i64 %479, 0
  br i1 %480, label %481, label %486

481:                                              ; preds = %477
  %482 = load i64, ptr %18, align 8, !tbaa !9
  %483 = load i64, ptr %16, align 8, !tbaa !9
  %484 = add nsw i64 %482, %483
  %485 = add nsw i64 %484, 1
  store i64 %485, ptr %18, align 8, !tbaa !9
  br label %494

486:                                              ; preds = %477
  %487 = load i64, ptr %18, align 8, !tbaa !9
  %488 = load ptr, ptr %8, align 8, !tbaa !5
  %489 = load i64, ptr %488, align 8, !tbaa !9
  %490 = add nsw i64 %487, %489
  %491 = load i64, ptr %16, align 8, !tbaa !9
  %492 = sub nsw i64 %490, %491
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %18, align 8, !tbaa !9
  br label %494

494:                                              ; preds = %486, %481
  br label %495

495:                                              ; preds = %494
  %496 = load i64, ptr %16, align 8, !tbaa !9
  %497 = add nsw i64 %496, 1
  store i64 %497, ptr %16, align 8, !tbaa !9
  br label %380, !llvm.loop !29

498:                                              ; preds = %380
  %499 = load float, ptr %21, align 4, !tbaa !11
  %500 = fpext float %499 to double
  %501 = load float, ptr %19, align 4, !tbaa !11
  %502 = fpext float %501 to double
  %503 = call double @sqrt(double noundef %502) #5
  %504 = fmul double %500, %503
  %505 = fptrunc double %504 to float
  store float %505, ptr %22, align 4, !tbaa !11
  br label %506

506:                                              ; preds = %498, %318
  br label %507

507:                                              ; preds = %506, %313
  br label %508

508:                                              ; preds = %507, %137
  br label %509

509:                                              ; preds = %508, %30
  %510 = load float, ptr %22, align 4, !tbaa !11
  store float %510, ptr %13, align 4, !tbaa !11
  %511 = load float, ptr %13, align 4, !tbaa !11
  %512 = fpext float %511 to double
  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 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  ret double %512
}

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

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

declare double @c_abs(ptr noundef) #2

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

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

declare double @r_imag(ptr noundef) #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #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 = !{!"long", !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 = !{!7, !7, i64 0}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = !{!28, !12, i64 0}
!28 = !{!"", !12, i64 0, !12, i64 4}
!29 = distinct !{!29, !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 i64, align 8

; Function Attrs: nounwind uwtable
define dso_local double @clansp_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef %4) local_unnamed_addr #0 {
  %6 = alloca i64, align 8
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  %9 = getelementptr inbounds i8, ptr %4, i64 -4
  %10 = getelementptr inbounds i8, ptr %3, i64 -8
  %11 = load i64, ptr %2, align 8, !tbaa !5
  %12 = icmp eq i64 %11, 0
  br i1 %12, label %.loopexit218, label %13

13:                                               ; preds = %5
  %14 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %14, 0
  br i1 %.not, label %43, label %15

15:                                               ; preds = %13
  %16 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not213 = icmp eq i64 %16, 0
  %17 = load i64, ptr %2, align 8, !tbaa !5
  %.not214243 = icmp slt i64 %17, 1
  br i1 %.not213, label %28, label %18

18:                                               ; preds = %15
  br i1 %.not214243, label %.loopexit218, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %18, %._crit_edge
  %.0229 = phi float [ %25, %._crit_edge ], [ 0.000000e+00, %18 ]
  %.0169228 = phi i64 [ %19, %._crit_edge ], [ 1, %18 ]
  %.0176227 = phi i64 [ %27, %._crit_edge ], [ 1, %18 ]
  %19 = add nuw nsw i64 %.0169228, %.0176227
  %20 = add nsw i64 %19, -1
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %.1225 = phi float [ %25, %.lr.ph ], [ %.0229, %.lr.ph.preheader ]
  %.0182224 = phi i64 [ %26, %.lr.ph ], [ %.0169228, %.lr.ph.preheader ]
  %21 = getelementptr inbounds %struct.complex, ptr %10, i64 %.0182224
  %22 = tail call double @c_abs(ptr noundef nonnull %21) #6
  %23 = fptrunc double %22 to float
  %24 = fcmp oge float %.1225, %23
  %25 = select i1 %24, float %.1225, float %23
  %26 = add nuw nsw i64 %.0182224, 1
  %.not217.not = icmp slt i64 %.0182224, %20
  br i1 %.not217.not, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph
  %27 = add nuw i64 %.0176227, 1
  %exitcond.not = icmp eq i64 %.0176227, %17
  br i1 %exitcond.not, label %.loopexit218, label %.lr.ph.preheader, !llvm.loop !11

28:                                               ; preds = %15
  br i1 %.not214243, label %.loopexit218, label %.lr.ph249

.lr.ph249:                                        ; preds = %28, %._crit_edge239
  %29 = phi i64 [ %38, %._crit_edge239 ], [ %17, %28 ]
  %.1177.neg247 = phi i64 [ %.1177.neg, %._crit_edge239 ], [ -1, %28 ]
  %.2246 = phi float [ %.3.lcssa, %._crit_edge239 ], [ 0.000000e+00, %28 ]
  %.1170245 = phi i64 [ %41, %._crit_edge239 ], [ 1, %28 ]
  %.1177244 = phi i64 [ %42, %._crit_edge239 ], [ 1, %28 ]
  %30 = add i64 %.1170245, %.1177.neg247
  %31 = add i64 %30, %29
  %.not215234 = icmp sgt i64 %.1170245, %31
  br i1 %.not215234, label %._crit_edge239, label %.lr.ph238

.lr.ph238:                                        ; preds = %.lr.ph249, %.lr.ph238
  %.3236 = phi float [ %36, %.lr.ph238 ], [ %.2246, %.lr.ph249 ]
  %.1183235 = phi i64 [ %37, %.lr.ph238 ], [ %.1170245, %.lr.ph249 ]
  %32 = getelementptr inbounds %struct.complex, ptr %10, i64 %.1183235
  %33 = tail call double @c_abs(ptr noundef nonnull %32) #6
  %34 = fptrunc double %33 to float
  %35 = fcmp oge float %.3236, %34
  %36 = select i1 %35, float %.3236, float %34
  %37 = add nsw i64 %.1183235, 1
  %.not215.not = icmp slt i64 %.1183235, %31
  br i1 %.not215.not, label %.lr.ph238, label %._crit_edge239.loopexit, !llvm.loop !12

._crit_edge239.loopexit:                          ; preds = %.lr.ph238
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %._crit_edge239

._crit_edge239:                                   ; preds = %._crit_edge239.loopexit, %.lr.ph249
  %38 = phi i64 [ %29, %.lr.ph249 ], [ %.pre, %._crit_edge239.loopexit ]
  %.3.lcssa = phi float [ %.2246, %.lr.ph249 ], [ %36, %._crit_edge239.loopexit ]
  %39 = add nsw i64 %.1177.neg247, 1
  %40 = add i64 %39, %.1170245
  %41 = add i64 %40, %38
  %42 = add nuw i64 %.1177244, 1
  %.1177.neg = xor i64 %.1177244, -1
  %exitcond337.not = icmp eq i64 %.1177244, %17
  br i1 %exitcond337.not, label %.loopexit218, label %.lr.ph249, !llvm.loop !13

43:                                               ; preds = %13
  %44 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not197 = icmp eq i64 %44, 0
  br i1 %.not197, label %45, label %50

45:                                               ; preds = %43
  %46 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not198 = icmp eq i64 %46, 0
  br i1 %.not198, label %47, label %50

47:                                               ; preds = %45
  %48 = load i8, ptr %0, align 1, !tbaa !14
  %49 = icmp eq i8 %48, 49
  br i1 %49, label %50, label %111

50:                                               ; preds = %47, %45, %43
  %51 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not206 = icmp eq i64 %51, 0
  %52 = load i64, ptr %2, align 8, !tbaa !5
  %.not207296 = icmp slt i64 %52, 1
  br i1 %.not206, label %89, label %53

53:                                               ; preds = %50
  br i1 %.not207296, label %.loopexit218, label %.lr.ph286

.lr.ph286:                                        ; preds = %53, %._crit_edge275
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge275 ], [ 0, %53 ]
  %.2171284 = phi i64 [ %71, %._crit_edge275 ], [ 1, %53 ]
  %.2178283 = phi i64 [ %72, %._crit_edge275 ], [ 1, %53 ]
  %.not212270 = icmp ult i64 %.2178283, 2
  br i1 %.not212270, label %._crit_edge275, label %.lr.ph274.preheader

.lr.ph274.preheader:                              ; preds = %.lr.ph286
  %54 = add i64 %.2171284, %indvars.iv
  br label %.lr.ph274

.lr.ph274:                                        ; preds = %.lr.ph274.preheader, %.lr.ph274
  %.3172272 = phi i64 [ %63, %.lr.ph274 ], [ %.2171284, %.lr.ph274.preheader ]
  %.2184271 = phi i64 [ %64, %.lr.ph274 ], [ 1, %.lr.ph274.preheader ]
  %55 = phi float [ %59, %.lr.ph274 ], [ 0.000000e+00, %.lr.ph274.preheader ]
  %56 = getelementptr inbounds %struct.complex, ptr %10, i64 %.3172272
  %57 = tail call double @c_abs(ptr noundef nonnull %56) #6
  %58 = fptrunc double %57 to float
  %59 = fadd float %55, %58
  %60 = getelementptr inbounds float, ptr %9, i64 %.2184271
  %61 = load float, ptr %60, align 4, !tbaa !15
  %62 = fadd float %61, %58
  store float %62, ptr %60, align 4, !tbaa !15
  %63 = add i64 %.3172272, 1
  %64 = add nuw nsw i64 %.2184271, 1
  %exitcond341.not = icmp eq i64 %63, %54
  br i1 %exitcond341.not, label %._crit_edge275, label %.lr.ph274, !llvm.loop !17

._crit_edge275:                                   ; preds = %.lr.ph274, %.lr.ph286
  %.lcssa269 = phi float [ 0.000000e+00, %.lr.ph286 ], [ %59, %.lr.ph274 ]
  %.3172.lcssa = phi i64 [ %.2171284, %.lr.ph286 ], [ %54, %.lr.ph274 ]
  %65 = fpext float %.lcssa269 to double
  %66 = getelementptr inbounds %struct.complex, ptr %10, i64 %.3172.lcssa
  %67 = tail call double @c_abs(ptr noundef nonnull %66) #6
  %68 = fadd double %67, %65
  %69 = fptrunc double %68 to float
  %70 = getelementptr inbounds float, ptr %9, i64 %.2178283
  store float %69, ptr %70, align 4, !tbaa !15
  %71 = add nsw i64 %.3172.lcssa, 1
  %72 = add nuw nsw i64 %.2178283, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond342.not = icmp eq i64 %indvars.iv.next, %52
  br i1 %exitcond342.not, label %._crit_edge287, label %.lr.ph286, !llvm.loop !18

._crit_edge287:                                   ; preds = %._crit_edge275
  %.pre347 = load i64, ptr %2, align 8, !tbaa !5
  %.not211290 = icmp slt i64 %.pre347, 1
  br i1 %.not211290, label %.loopexit218, label %.lr.ph294.preheader

.lr.ph294.preheader:                              ; preds = %._crit_edge287
  %xtraiter = and i64 %.pre347, 3
  %73 = icmp ult i64 %.pre347, 4
  br i1 %73, label %.loopexit218.loopexit370.unr-lcssa, label %.lr.ph294.preheader.new

.lr.ph294.preheader.new:                          ; preds = %.lr.ph294.preheader
  %unroll_iter = and i64 %.pre347, 9223372036854775804
  %invariant.gep = getelementptr i8, ptr %9, i64 8
  %invariant.gep388 = getelementptr i8, ptr %9, i64 12
  br label %.lr.ph294

.lr.ph294:                                        ; preds = %.lr.ph294, %.lr.ph294.preheader.new
  %.4292 = phi float [ 0.000000e+00, %.lr.ph294.preheader.new ], [ %87, %.lr.ph294 ]
  %.3185291 = phi i64 [ 1, %.lr.ph294.preheader.new ], [ %88, %.lr.ph294 ]
  %niter = phi i64 [ 0, %.lr.ph294.preheader.new ], [ %niter.next.3, %.lr.ph294 ]
  %74 = getelementptr inbounds float, ptr %9, i64 %.3185291
  %75 = load float, ptr %74, align 4, !tbaa !15
  %76 = fcmp oge float %.4292, %75
  %77 = select i1 %76, float %.4292, float %75
  %78 = getelementptr float, ptr %4, i64 %.3185291
  %79 = load float, ptr %78, align 4, !tbaa !15
  %80 = fcmp oge float %77, %79
  %81 = select i1 %80, float %77, float %79
  %gep = getelementptr float, ptr %invariant.gep, i64 %.3185291
  %82 = load float, ptr %gep, align 4, !tbaa !15
  %83 = fcmp oge float %81, %82
  %84 = select i1 %83, float %81, float %82
  %gep389 = getelementptr float, ptr %invariant.gep388, i64 %.3185291
  %85 = load float, ptr %gep389, align 4, !tbaa !15
  %86 = fcmp oge float %84, %85
  %87 = select i1 %86, float %84, float %85
  %88 = add nuw i64 %.3185291, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit218.loopexit370.unr-lcssa, label %.lr.ph294, !llvm.loop !19

89:                                               ; preds = %50
  br i1 %.not207296, label %.loopexit218, label %.lr.ph320.preheader

.lr.ph320.preheader:                              ; preds = %89
  %90 = shl nuw i64 %52, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %4, i8 0, i64 %90, i1 false), !tbaa !15
  br label %.lr.ph320

.lr.ph320:                                        ; preds = %.lr.ph320.preheader, %._crit_edge309
  %.5319 = phi float [ %110, %._crit_edge309 ], [ 0.000000e+00, %.lr.ph320.preheader ]
  %.4173318 = phi i64 [ %.5174.lcssa, %._crit_edge309 ], [ 1, %.lr.ph320.preheader ]
  %.3179317 = phi i64 [ %99, %._crit_edge309 ], [ 1, %.lr.ph320.preheader ]
  %91 = getelementptr inbounds float, ptr %9, i64 %.3179317
  %92 = load float, ptr %91, align 4, !tbaa !15
  %93 = fpext float %92 to double
  %94 = getelementptr inbounds %struct.complex, ptr %10, i64 %.4173318
  %95 = tail call double @c_abs(ptr noundef nonnull %94) #6
  %96 = fadd double %95, %93
  %97 = fptrunc double %96 to float
  %98 = load i64, ptr %2, align 8, !tbaa !5
  %99 = add nuw i64 %.3179317, 1
  %.5174302 = add nsw i64 %.4173318, 1
  %.not209303.not = icmp slt i64 %.3179317, %98
  br i1 %.not209303.not, label %.lr.ph308, label %._crit_edge309

.lr.ph308:                                        ; preds = %.lr.ph320, %.lr.ph308
  %.5174306 = phi i64 [ %.5174, %.lr.ph308 ], [ %.5174302, %.lr.ph320 ]
  %.5174.in305 = phi i64 [ %.5174306, %.lr.ph308 ], [ %.4173318, %.lr.ph320 ]
  %.5187304 = phi i64 [ %108, %.lr.ph308 ], [ %99, %.lr.ph320 ]
  %100 = phi float [ %104, %.lr.ph308 ], [ %97, %.lr.ph320 ]
  %101 = getelementptr %struct.complex, ptr %3, i64 %.5174.in305
  %102 = tail call double @c_abs(ptr noundef %101) #6
  %103 = fptrunc double %102 to float
  %104 = fadd float %100, %103
  %105 = getelementptr inbounds float, ptr %9, i64 %.5187304
  %106 = load float, ptr %105, align 4, !tbaa !15
  %107 = fadd float %106, %103
  store float %107, ptr %105, align 4, !tbaa !15
  %108 = add nuw nsw i64 %.5187304, 1
  %.5174 = add nsw i64 %.5174306, 1
  %.not209.not = icmp slt i64 %.5187304, %98
  br i1 %.not209.not, label %.lr.ph308, label %._crit_edge309, !llvm.loop !20

._crit_edge309:                                   ; preds = %.lr.ph308, %.lr.ph320
  %.lcssa301 = phi float [ %97, %.lr.ph320 ], [ %104, %.lr.ph308 ]
  %.5174.lcssa = phi i64 [ %.5174302, %.lr.ph320 ], [ %.5174, %.lr.ph308 ]
  %109 = fcmp oge float %.5319, %.lcssa301
  %110 = select i1 %109, float %.5319, float %.lcssa301
  %exitcond344.not = icmp eq i64 %.3179317, %52
  br i1 %exitcond344.not, label %.loopexit218, label %.lr.ph320, !llvm.loop !21

111:                                              ; preds = %47
  %112 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.4) #6
  %.not199 = icmp eq i64 %112, 0
  br i1 %.not199, label %113, label %115

113:                                              ; preds = %111
  %114 = tail call i64 @lsame_(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #6
  %.not200 = icmp eq i64 %114, 0
  br i1 %.not200, label %.loopexit218, label %115

115:                                              ; preds = %113, %111
  store float 0.000000e+00, ptr %8, align 4, !tbaa !15
  store float 1.000000e+00, ptr %7, align 4, !tbaa !15
  %116 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not201 = icmp eq i64 %116, 0
  %117 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not201, label %124, label %118

118:                                              ; preds = %115
  %.not203252 = icmp slt i64 %117, 2
  br i1 %.not203252, label %.loopexit219, label %.lr.ph256

.lr.ph256:                                        ; preds = %118, %.lr.ph256
  %.6175254 = phi i64 [ %122, %.lr.ph256 ], [ 2, %118 ]
  %.4180253 = phi i64 [ %123, %.lr.ph256 ], [ 2, %118 ]
  %119 = add nsw i64 %.4180253, -1
  store i64 %119, ptr %6, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.complex, ptr %10, i64 %.6175254
  %121 = call i32 @classq_(ptr noundef nonnull %6, ptr noundef nonnull %120, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull %7) #6
  %122 = add nuw nsw i64 %.6175254, %.4180253
  %123 = add nuw i64 %.4180253, 1
  %exitcond338.not = icmp eq i64 %.4180253, %117
  br i1 %exitcond338.not, label %.loopexit219.loopexit324, label %.lr.ph256, !llvm.loop !22

124:                                              ; preds = %115
  %.not202.not257 = icmp sgt i64 %117, 1
  br i1 %.not202.not257, label %.lr.ph261, label %.loopexit219

.lr.ph261:                                        ; preds = %124, %.lr.ph261
  %125 = phi i64 [ %129, %.lr.ph261 ], [ %117, %124 ]
  %.7259 = phi i64 [ %131, %.lr.ph261 ], [ 2, %124 ]
  %.5181258 = phi i64 [ %132, %.lr.ph261 ], [ 1, %124 ]
  %126 = sub nsw i64 %125, %.5181258
  store i64 %126, ptr %6, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.complex, ptr %10, i64 %.7259
  %128 = call i32 @classq_(ptr noundef nonnull %6, ptr noundef nonnull %127, ptr noundef nonnull @c__1, ptr noundef nonnull %8, ptr noundef nonnull %7) #6
  %129 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %.7259, %.5181258
  %130 = add i64 %reass.sub, 1
  %131 = add i64 %130, %129
  %132 = add nuw nsw i64 %.5181258, 1
  %exitcond339.not = icmp eq i64 %132, %117
  br i1 %exitcond339.not, label %.loopexit219, label %.lr.ph261, !llvm.loop !23

.loopexit219.loopexit324:                         ; preds = %.lr.ph256
  %.pre345 = load i64, ptr %2, align 8, !tbaa !5
  br label %.loopexit219

.loopexit219:                                     ; preds = %.lr.ph261, %.loopexit219.loopexit324, %118, %124
  %133 = phi i64 [ %.pre345, %.loopexit219.loopexit324 ], [ %117, %118 ], [ %117, %124 ], [ %129, %.lr.ph261 ]
  %134 = load float, ptr %7, align 4, !tbaa !15
  %135 = fmul float %134, 2.000000e+00
  store float %135, ptr %7, align 4, !tbaa !15
  %.not204262 = icmp slt i64 %133, 1
  br i1 %.not204262, label %._crit_edge267, label %.lr.ph266

.lr.ph266:                                        ; preds = %.loopexit219, %180
  %.8264 = phi i64 [ %.9, %180 ], [ 1, %.loopexit219 ]
  %.6188263 = phi i64 [ %181, %180 ], [ 1, %.loopexit219 ]
  store i64 %.8264, ptr %6, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.complex, ptr %10, i64 %.8264
  %137 = load float, ptr %136, align 4, !tbaa !24
  %138 = fcmp une float %137, 0.000000e+00
  br i1 %138, label %139, label %153

139:                                              ; preds = %.lr.ph266
  %140 = fcmp oge float %137, 0.000000e+00
  %141 = fneg float %137
  %142 = select i1 %140, float %137, float %141
  %143 = load float, ptr %8, align 4, !tbaa !15
  %144 = fcmp olt float %143, %142
  %145 = load float, ptr %7, align 4, !tbaa !15
  br i1 %144, label %146, label %150

146:                                              ; preds = %139
  %147 = fdiv float %143, %142
  %148 = fmul float %147, %147
  %149 = call float @llvm.fmuladd.f32(float %145, float %148, float 1.000000e+00)
  store float %149, ptr %7, align 4, !tbaa !15
  store float %142, ptr %8, align 4, !tbaa !15
  br label %153

150:                                              ; preds = %139
  %151 = fdiv float %142, %143
  %152 = call float @llvm.fmuladd.f32(float %151, float %151, float %145)
  store float %152, ptr %7, align 4, !tbaa !15
  br label %153

153:                                              ; preds = %146, %150, %.lr.ph266
  %154 = call double @r_imag(ptr noundef nonnull %136) #6
  %155 = fcmp une double %154, 0.000000e+00
  br i1 %155, label %156, label %172

156:                                              ; preds = %153
  %157 = call double @r_imag(ptr noundef nonnull %136) #6
  %158 = fptrunc double %157 to float
  %159 = fcmp oge float %158, 0.000000e+00
  %160 = fneg float %158
  %161 = select i1 %159, float %158, float %160
  %162 = load float, ptr %8, align 4, !tbaa !15
  %163 = fcmp olt float %162, %161
  %164 = load float, ptr %7, align 4, !tbaa !15
  br i1 %163, label %165, label %169

165:                                              ; preds = %156
  %166 = fdiv float %162, %161
  %167 = fmul float %166, %166
  %168 = call float @llvm.fmuladd.f32(float %164, float %167, float 1.000000e+00)
  store float %168, ptr %7, align 4, !tbaa !15
  store float %161, ptr %8, align 4, !tbaa !15
  br label %172

169:                                              ; preds = %156
  %170 = fdiv float %161, %162
  %171 = call float @llvm.fmuladd.f32(float %170, float %170, float %164)
  store float %171, ptr %7, align 4, !tbaa !15
  br label %172

172:                                              ; preds = %165, %169, %153
  %173 = call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not205 = icmp eq i64 %173, 0
  br i1 %.not205, label %176, label %174

174:                                              ; preds = %172
  %175 = add nsw i64 %.8264, %.6188263
  br label %180

176:                                              ; preds = %172
  %177 = load i64, ptr %2, align 8, !tbaa !5
  %178 = sub i64 %.8264, %.6188263
  %179 = add i64 %178, %177
  br label %180

180:                                              ; preds = %174, %176
  %.9.in = phi i64 [ %175, %174 ], [ %179, %176 ]
  %.9 = add nsw i64 %.9.in, 1
  %181 = add nuw i64 %.6188263, 1
  %exitcond340.not = icmp eq i64 %.6188263, %133
  br i1 %exitcond340.not, label %._crit_edge267.loopexit, label %.lr.ph266, !llvm.loop !26

._crit_edge267.loopexit:                          ; preds = %180
  %.pre346 = load float, ptr %7, align 4, !tbaa !15
  br label %._crit_edge267

._crit_edge267:                                   ; preds = %._crit_edge267.loopexit, %.loopexit219
  %182 = phi float [ %.pre346, %._crit_edge267.loopexit ], [ %135, %.loopexit219 ]
  %183 = load float, ptr %8, align 4, !tbaa !15
  %184 = fpext float %183 to double
  %185 = fpext float %182 to double
  %186 = call double @sqrt(double noundef %185) #6
  %187 = fmul double %186, %184
  %188 = fptrunc double %187 to float
  br label %.loopexit218

.loopexit218.loopexit370.unr-lcssa:               ; preds = %.lr.ph294, %.lr.ph294.preheader
  %.lcssa371.ph = phi float [ poison, %.lr.ph294.preheader ], [ %87, %.lr.ph294 ]
  %.4292.unr = phi float [ 0.000000e+00, %.lr.ph294.preheader ], [ %87, %.lr.ph294 ]
  %.3185291.unr = phi i64 [ 1, %.lr.ph294.preheader ], [ %88, %.lr.ph294 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit218, label %.lr.ph294.epil

.lr.ph294.epil:                                   ; preds = %.loopexit218.loopexit370.unr-lcssa, %.lr.ph294.epil
  %.4292.epil = phi float [ %192, %.lr.ph294.epil ], [ %.4292.unr, %.loopexit218.loopexit370.unr-lcssa ]
  %.3185291.epil = phi i64 [ %193, %.lr.ph294.epil ], [ %.3185291.unr, %.loopexit218.loopexit370.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph294.epil ], [ 0, %.loopexit218.loopexit370.unr-lcssa ]
  %189 = getelementptr inbounds float, ptr %9, i64 %.3185291.epil
  %190 = load float, ptr %189, align 4, !tbaa !15
  %191 = fcmp oge float %.4292.epil, %190
  %192 = select i1 %191, float %.4292.epil, float %190
  %193 = add nuw i64 %.3185291.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit218, label %.lr.ph294.epil, !llvm.loop !27

.loopexit218:                                     ; preds = %._crit_edge, %._crit_edge239, %.loopexit218.loopexit370.unr-lcssa, %.lr.ph294.epil, %._crit_edge309, %18, %28, %89, %53, %._crit_edge287, %5, %113, %._crit_edge267
  %.6 = phi float [ %188, %._crit_edge267 ], [ undef, %113 ], [ 0.000000e+00, %5 ], [ 0.000000e+00, %._crit_edge287 ], [ 0.000000e+00, %53 ], [ 0.000000e+00, %89 ], [ 0.000000e+00, %28 ], [ 0.000000e+00, %18 ], [ %110, %._crit_edge309 ], [ %.lcssa371.ph, %.loopexit218.loopexit370.unr-lcssa ], [ %192, %.lr.ph294.epil ], [ %.3.lcssa, %._crit_edge239 ], [ %25, %._crit_edge ]
  %194 = fpext float %.6 to double
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  ret double %194
}

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

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

declare double @c_abs(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

; 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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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


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