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

; 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"

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

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

65:                                               ; preds = %9
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = call i64 @lsame_(ptr noundef %66, ptr noundef @.str.1)
  %68 = icmp ne i64 %67, 0
  br i1 %68, label %71, label %69

69:                                               ; preds = %65
  %70 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %70, align 8, !tbaa !9
  br label %94

71:                                               ; preds = %65, %9
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  %74 = icmp slt i64 %73, 0
  br i1 %74, label %75, label %77

75:                                               ; preds = %71
  %76 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -2, ptr %76, align 8, !tbaa !9
  br label %93

77:                                               ; preds = %71
  %78 = load ptr, ptr %14, align 8, !tbaa !5
  %79 = load i64, ptr %78, align 8, !tbaa !9
  %80 = load ptr, ptr %12, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = icmp sge i64 1, %81
  br i1 %82, label %83, label %84

83:                                               ; preds = %77
  br label %87

84:                                               ; preds = %77
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  br label %87

87:                                               ; preds = %84, %83
  %88 = phi i64 [ 1, %83 ], [ %86, %84 ]
  %89 = icmp slt i64 %79, %88
  br i1 %89, label %90, label %92

90:                                               ; preds = %87
  %91 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -4, ptr %91, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %90, %87
  br label %93

93:                                               ; preds = %92, %75
  br label %94

94:                                               ; preds = %93, %69
  %95 = load ptr, ptr %19, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp ne i64 %96, 0
  br i1 %97, label %98, label %103

98:                                               ; preds = %94
  %99 = load ptr, ptr %19, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  %101 = sub nsw i64 0, %100
  store i64 %101, ptr %22, align 8, !tbaa !9
  %102 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1345

103:                                              ; preds = %94
  %104 = load ptr, ptr %11, align 8, !tbaa !5
  %105 = call i64 @lsame_(ptr noundef %104, ptr noundef @.str)
  store i64 %105, ptr %36, align 8, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  store float 0.000000e+00, ptr %106, align 4, !tbaa !11
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp eq i64 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %103
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  store float 1.000000e+00, ptr %111, align 4, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1345

112:                                              ; preds = %103
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  store i64 %114, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %123, %112
  %116 = load i64, ptr %28, align 8, !tbaa !9
  %117 = load i64, ptr %22, align 8, !tbaa !9
  %118 = icmp sle i64 %116, %117
  br i1 %118, label %119, label %126

119:                                              ; preds = %115
  %120 = load ptr, ptr %15, align 8, !tbaa !5
  %121 = load i64, ptr %28, align 8, !tbaa !9
  %122 = getelementptr inbounds float, ptr %120, i64 %121
  store float 0.000000e+00, ptr %122, align 4, !tbaa !11
  br label %123

123:                                              ; preds = %119
  %124 = load i64, ptr %28, align 8, !tbaa !9
  %125 = add nsw i64 %124, 1
  store i64 %125, ptr %28, align 8, !tbaa !9
  br label %115, !llvm.loop !13

126:                                              ; preds = %115
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  store float 0.000000e+00, ptr %127, align 4, !tbaa !11
  %128 = load i64, ptr %36, align 8, !tbaa !9
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %330

130:                                              ; preds = %126
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  store i64 %132, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %326, %130
  %134 = load i64, ptr %29, align 8, !tbaa !9
  %135 = load i64, ptr %22, align 8, !tbaa !9
  %136 = icmp sle i64 %134, %135
  br i1 %136, label %137, label %329

137:                                              ; preds = %133
  %138 = load i64, ptr %29, align 8, !tbaa !9
  %139 = sub nsw i64 %138, 1
  store i64 %139, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %140

140:                                              ; preds = %252, %137
  %141 = load i64, ptr %28, align 8, !tbaa !9
  %142 = load i64, ptr %23, align 8, !tbaa !9
  %143 = icmp sle i64 %141, %142
  br i1 %143, label %144, label %255

144:                                              ; preds = %140
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = load i64, ptr %28, align 8, !tbaa !9
  %147 = getelementptr inbounds float, ptr %145, i64 %146
  %148 = load float, ptr %147, align 4, !tbaa !11
  store float %148, ptr %25, align 4, !tbaa !11
  %149 = load ptr, ptr %13, align 8, !tbaa !5
  %150 = load i64, ptr %28, align 8, !tbaa !9
  %151 = load i64, ptr %29, align 8, !tbaa !9
  %152 = load i64, ptr %20, align 8, !tbaa !9
  %153 = mul nsw i64 %151, %152
  %154 = add nsw i64 %150, %153
  %155 = getelementptr inbounds float, ptr %149, i64 %154
  %156 = load float, ptr %155, align 4, !tbaa !11
  store float %156, ptr %24, align 4, !tbaa !11
  %157 = load float, ptr %24, align 4, !tbaa !11
  %158 = fcmp oge float %157, 0.000000e+00
  br i1 %158, label %159, label %161

159:                                              ; preds = %144
  %160 = load float, ptr %24, align 4, !tbaa !11
  br label %164

161:                                              ; preds = %144
  %162 = load float, ptr %24, align 4, !tbaa !11
  %163 = fneg float %162
  br label %164

164:                                              ; preds = %161, %159
  %165 = phi float [ %160, %159 ], [ %163, %161 ]
  %166 = fpext float %165 to double
  %167 = fptrunc double %166 to float
  store float %167, ptr %26, align 4, !tbaa !11
  %168 = load float, ptr %25, align 4, !tbaa !11
  %169 = load float, ptr %26, align 4, !tbaa !11
  %170 = fcmp oge float %168, %169
  br i1 %170, label %171, label %173

171:                                              ; preds = %164
  %172 = load float, ptr %25, align 4, !tbaa !11
  br label %175

173:                                              ; preds = %164
  %174 = load float, ptr %26, align 4, !tbaa !11
  br label %175

175:                                              ; preds = %173, %171
  %176 = phi float [ %172, %171 ], [ %174, %173 ]
  %177 = fpext float %176 to double
  %178 = fptrunc double %177 to float
  %179 = load ptr, ptr %15, align 8, !tbaa !5
  %180 = load i64, ptr %28, align 8, !tbaa !9
  %181 = getelementptr inbounds float, ptr %179, i64 %180
  store float %178, ptr %181, align 4, !tbaa !11
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = load i64, ptr %29, align 8, !tbaa !9
  %184 = getelementptr inbounds float, ptr %182, i64 %183
  %185 = load float, ptr %184, align 4, !tbaa !11
  store float %185, ptr %25, align 4, !tbaa !11
  %186 = load ptr, ptr %13, align 8, !tbaa !5
  %187 = load i64, ptr %28, align 8, !tbaa !9
  %188 = load i64, ptr %29, align 8, !tbaa !9
  %189 = load i64, ptr %20, align 8, !tbaa !9
  %190 = mul nsw i64 %188, %189
  %191 = add nsw i64 %187, %190
  %192 = getelementptr inbounds float, ptr %186, i64 %191
  %193 = load float, ptr %192, align 4, !tbaa !11
  store float %193, ptr %24, align 4, !tbaa !11
  %194 = load float, ptr %24, align 4, !tbaa !11
  %195 = fcmp oge float %194, 0.000000e+00
  br i1 %195, label %196, label %198

196:                                              ; preds = %175
  %197 = load float, ptr %24, align 4, !tbaa !11
  br label %201

198:                                              ; preds = %175
  %199 = load float, ptr %24, align 4, !tbaa !11
  %200 = fneg float %199
  br label %201

201:                                              ; preds = %198, %196
  %202 = phi float [ %197, %196 ], [ %200, %198 ]
  %203 = fpext float %202 to double
  %204 = fptrunc double %203 to float
  store float %204, ptr %26, align 4, !tbaa !11
  %205 = load float, ptr %25, align 4, !tbaa !11
  %206 = load float, ptr %26, align 4, !tbaa !11
  %207 = fcmp oge float %205, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %201
  %209 = load float, ptr %25, align 4, !tbaa !11
  br label %212

210:                                              ; preds = %201
  %211 = load float, ptr %26, align 4, !tbaa !11
  br label %212

212:                                              ; preds = %210, %208
  %213 = phi float [ %209, %208 ], [ %211, %210 ]
  %214 = fpext float %213 to double
  %215 = fptrunc double %214 to float
  %216 = load ptr, ptr %15, align 8, !tbaa !5
  %217 = load i64, ptr %29, align 8, !tbaa !9
  %218 = getelementptr inbounds float, ptr %216, i64 %217
  store float %215, ptr %218, align 4, !tbaa !11
  %219 = load ptr, ptr %17, align 8, !tbaa !5
  %220 = load float, ptr %219, align 4, !tbaa !11
  store float %220, ptr %25, align 4, !tbaa !11
  %221 = load ptr, ptr %13, align 8, !tbaa !5
  %222 = load i64, ptr %28, align 8, !tbaa !9
  %223 = load i64, ptr %29, align 8, !tbaa !9
  %224 = load i64, ptr %20, align 8, !tbaa !9
  %225 = mul nsw i64 %223, %224
  %226 = add nsw i64 %222, %225
  %227 = getelementptr inbounds float, ptr %221, i64 %226
  %228 = load float, ptr %227, align 4, !tbaa !11
  store float %228, ptr %24, align 4, !tbaa !11
  %229 = load float, ptr %24, align 4, !tbaa !11
  %230 = fcmp oge float %229, 0.000000e+00
  br i1 %230, label %231, label %233

231:                                              ; preds = %212
  %232 = load float, ptr %24, align 4, !tbaa !11
  br label %236

233:                                              ; preds = %212
  %234 = load float, ptr %24, align 4, !tbaa !11
  %235 = fneg float %234
  br label %236

236:                                              ; preds = %233, %231
  %237 = phi float [ %232, %231 ], [ %235, %233 ]
  %238 = fpext float %237 to double
  %239 = fptrunc double %238 to float
  store float %239, ptr %26, align 4, !tbaa !11
  %240 = load float, ptr %25, align 4, !tbaa !11
  %241 = load float, ptr %26, align 4, !tbaa !11
  %242 = fcmp oge float %240, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %236
  %244 = load float, ptr %25, align 4, !tbaa !11
  br label %247

245:                                              ; preds = %236
  %246 = load float, ptr %26, align 4, !tbaa !11
  br label %247

247:                                              ; preds = %245, %243
  %248 = phi float [ %244, %243 ], [ %246, %245 ]
  %249 = fpext float %248 to double
  %250 = fptrunc double %249 to float
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  store float %250, ptr %251, align 4, !tbaa !11
  br label %252

252:                                              ; preds = %247
  %253 = load i64, ptr %28, align 8, !tbaa !9
  %254 = add nsw i64 %253, 1
  store i64 %254, ptr %28, align 8, !tbaa !9
  br label %140, !llvm.loop !15

255:                                              ; preds = %140
  %256 = load ptr, ptr %15, align 8, !tbaa !5
  %257 = load i64, ptr %29, align 8, !tbaa !9
  %258 = getelementptr inbounds float, ptr %256, i64 %257
  %259 = load float, ptr %258, align 4, !tbaa !11
  store float %259, ptr %25, align 4, !tbaa !11
  %260 = load ptr, ptr %13, align 8, !tbaa !5
  %261 = load i64, ptr %29, align 8, !tbaa !9
  %262 = load i64, ptr %29, align 8, !tbaa !9
  %263 = load i64, ptr %20, align 8, !tbaa !9
  %264 = mul nsw i64 %262, %263
  %265 = add nsw i64 %261, %264
  %266 = getelementptr inbounds float, ptr %260, i64 %265
  %267 = load float, ptr %266, align 4, !tbaa !11
  store float %267, ptr %24, align 4, !tbaa !11
  %268 = load float, ptr %24, align 4, !tbaa !11
  %269 = fcmp oge float %268, 0.000000e+00
  br i1 %269, label %270, label %272

270:                                              ; preds = %255
  %271 = load float, ptr %24, align 4, !tbaa !11
  br label %275

272:                                              ; preds = %255
  %273 = load float, ptr %24, align 4, !tbaa !11
  %274 = fneg float %273
  br label %275

275:                                              ; preds = %272, %270
  %276 = phi float [ %271, %270 ], [ %274, %272 ]
  %277 = fpext float %276 to double
  %278 = fptrunc double %277 to float
  store float %278, ptr %26, align 4, !tbaa !11
  %279 = load float, ptr %25, align 4, !tbaa !11
  %280 = load float, ptr %26, align 4, !tbaa !11
  %281 = fcmp oge float %279, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %275
  %283 = load float, ptr %25, align 4, !tbaa !11
  br label %286

284:                                              ; preds = %275
  %285 = load float, ptr %26, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %284, %282
  %287 = phi float [ %283, %282 ], [ %285, %284 ]
  %288 = fpext float %287 to double
  %289 = fptrunc double %288 to float
  %290 = load ptr, ptr %15, align 8, !tbaa !5
  %291 = load i64, ptr %29, align 8, !tbaa !9
  %292 = getelementptr inbounds float, ptr %290, i64 %291
  store float %289, ptr %292, align 4, !tbaa !11
  %293 = load ptr, ptr %17, align 8, !tbaa !5
  %294 = load float, ptr %293, align 4, !tbaa !11
  store float %294, ptr %25, align 4, !tbaa !11
  %295 = load ptr, ptr %13, align 8, !tbaa !5
  %296 = load i64, ptr %29, align 8, !tbaa !9
  %297 = load i64, ptr %29, align 8, !tbaa !9
  %298 = load i64, ptr %20, align 8, !tbaa !9
  %299 = mul nsw i64 %297, %298
  %300 = add nsw i64 %296, %299
  %301 = getelementptr inbounds float, ptr %295, i64 %300
  %302 = load float, ptr %301, align 4, !tbaa !11
  store float %302, ptr %24, align 4, !tbaa !11
  %303 = load float, ptr %24, align 4, !tbaa !11
  %304 = fcmp oge float %303, 0.000000e+00
  br i1 %304, label %305, label %307

305:                                              ; preds = %286
  %306 = load float, ptr %24, align 4, !tbaa !11
  br label %310

307:                                              ; preds = %286
  %308 = load float, ptr %24, align 4, !tbaa !11
  %309 = fneg float %308
  br label %310

310:                                              ; preds = %307, %305
  %311 = phi float [ %306, %305 ], [ %309, %307 ]
  %312 = fpext float %311 to double
  %313 = fptrunc double %312 to float
  store float %313, ptr %26, align 4, !tbaa !11
  %314 = load float, ptr %25, align 4, !tbaa !11
  %315 = load float, ptr %26, align 4, !tbaa !11
  %316 = fcmp oge float %314, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %310
  %318 = load float, ptr %25, align 4, !tbaa !11
  br label %321

319:                                              ; preds = %310
  %320 = load float, ptr %26, align 4, !tbaa !11
  br label %321

321:                                              ; preds = %319, %317
  %322 = phi float [ %318, %317 ], [ %320, %319 ]
  %323 = fpext float %322 to double
  %324 = fptrunc double %323 to float
  %325 = load ptr, ptr %17, align 8, !tbaa !5
  store float %324, ptr %325, align 4, !tbaa !11
  br label %326

326:                                              ; preds = %321
  %327 = load i64, ptr %29, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  store i64 %328, ptr %29, align 8, !tbaa !9
  br label %133, !llvm.loop !16

329:                                              ; preds = %133
  br label %532

330:                                              ; preds = %126
  %331 = load ptr, ptr %12, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  store i64 %332, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %528, %330
  %334 = load i64, ptr %29, align 8, !tbaa !9
  %335 = load i64, ptr %22, align 8, !tbaa !9
  %336 = icmp sle i64 %334, %335
  br i1 %336, label %337, label %531

337:                                              ; preds = %333
  %338 = load ptr, ptr %15, align 8, !tbaa !5
  %339 = load i64, ptr %29, align 8, !tbaa !9
  %340 = getelementptr inbounds float, ptr %338, i64 %339
  %341 = load float, ptr %340, align 4, !tbaa !11
  store float %341, ptr %25, align 4, !tbaa !11
  %342 = load ptr, ptr %13, align 8, !tbaa !5
  %343 = load i64, ptr %29, align 8, !tbaa !9
  %344 = load i64, ptr %29, align 8, !tbaa !9
  %345 = load i64, ptr %20, align 8, !tbaa !9
  %346 = mul nsw i64 %344, %345
  %347 = add nsw i64 %343, %346
  %348 = getelementptr inbounds float, ptr %342, i64 %347
  %349 = load float, ptr %348, align 4, !tbaa !11
  store float %349, ptr %24, align 4, !tbaa !11
  %350 = load float, ptr %24, align 4, !tbaa !11
  %351 = fcmp oge float %350, 0.000000e+00
  br i1 %351, label %352, label %354

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

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

357:                                              ; preds = %354, %352
  %358 = phi float [ %353, %352 ], [ %356, %354 ]
  %359 = fpext float %358 to double
  %360 = fptrunc double %359 to float
  store float %360, ptr %26, align 4, !tbaa !11
  %361 = load float, ptr %25, align 4, !tbaa !11
  %362 = load float, ptr %26, align 4, !tbaa !11
  %363 = fcmp oge float %361, %362
  br i1 %363, label %364, label %366

364:                                              ; preds = %357
  %365 = load float, ptr %25, align 4, !tbaa !11
  br label %368

366:                                              ; preds = %357
  %367 = load float, ptr %26, align 4, !tbaa !11
  br label %368

368:                                              ; preds = %366, %364
  %369 = phi float [ %365, %364 ], [ %367, %366 ]
  %370 = fpext float %369 to double
  %371 = fptrunc double %370 to float
  %372 = load ptr, ptr %15, align 8, !tbaa !5
  %373 = load i64, ptr %29, align 8, !tbaa !9
  %374 = getelementptr inbounds float, ptr %372, i64 %373
  store float %371, ptr %374, align 4, !tbaa !11
  %375 = load ptr, ptr %17, align 8, !tbaa !5
  %376 = load float, ptr %375, align 4, !tbaa !11
  store float %376, ptr %25, align 4, !tbaa !11
  %377 = load ptr, ptr %13, align 8, !tbaa !5
  %378 = load i64, ptr %29, align 8, !tbaa !9
  %379 = load i64, ptr %29, align 8, !tbaa !9
  %380 = load i64, ptr %20, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = add nsw i64 %378, %381
  %383 = getelementptr inbounds float, ptr %377, i64 %382
  %384 = load float, ptr %383, align 4, !tbaa !11
  store float %384, ptr %24, align 4, !tbaa !11
  %385 = load float, ptr %24, align 4, !tbaa !11
  %386 = fcmp oge float %385, 0.000000e+00
  br i1 %386, label %387, label %389

387:                                              ; preds = %368
  %388 = load float, ptr %24, align 4, !tbaa !11
  br label %392

389:                                              ; preds = %368
  %390 = load float, ptr %24, align 4, !tbaa !11
  %391 = fneg float %390
  br label %392

392:                                              ; preds = %389, %387
  %393 = phi float [ %388, %387 ], [ %391, %389 ]
  %394 = fpext float %393 to double
  %395 = fptrunc double %394 to float
  store float %395, ptr %26, align 4, !tbaa !11
  %396 = load float, ptr %25, align 4, !tbaa !11
  %397 = load float, ptr %26, align 4, !tbaa !11
  %398 = fcmp oge float %396, %397
  br i1 %398, label %399, label %401

399:                                              ; preds = %392
  %400 = load float, ptr %25, align 4, !tbaa !11
  br label %403

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

403:                                              ; preds = %401, %399
  %404 = phi float [ %400, %399 ], [ %402, %401 ]
  %405 = fpext float %404 to double
  %406 = fptrunc double %405 to float
  %407 = load ptr, ptr %17, align 8, !tbaa !5
  store float %406, ptr %407, align 4, !tbaa !11
  %408 = load ptr, ptr %12, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  store i64 %409, ptr %23, align 8, !tbaa !9
  %410 = load i64, ptr %29, align 8, !tbaa !9
  %411 = add nsw i64 %410, 1
  store i64 %411, ptr %28, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %524, %403
  %413 = load i64, ptr %28, align 8, !tbaa !9
  %414 = load i64, ptr %23, align 8, !tbaa !9
  %415 = icmp sle i64 %413, %414
  br i1 %415, label %416, label %527

416:                                              ; preds = %412
  %417 = load ptr, ptr %15, align 8, !tbaa !5
  %418 = load i64, ptr %28, align 8, !tbaa !9
  %419 = getelementptr inbounds float, ptr %417, i64 %418
  %420 = load float, ptr %419, align 4, !tbaa !11
  store float %420, ptr %25, align 4, !tbaa !11
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = load i64, ptr %28, align 8, !tbaa !9
  %423 = load i64, ptr %29, align 8, !tbaa !9
  %424 = load i64, ptr %20, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %422, %425
  %427 = getelementptr inbounds float, ptr %421, i64 %426
  %428 = load float, ptr %427, align 4, !tbaa !11
  store float %428, ptr %24, align 4, !tbaa !11
  %429 = load float, ptr %24, align 4, !tbaa !11
  %430 = fcmp oge float %429, 0.000000e+00
  br i1 %430, label %431, label %433

431:                                              ; preds = %416
  %432 = load float, ptr %24, align 4, !tbaa !11
  br label %436

433:                                              ; preds = %416
  %434 = load float, ptr %24, align 4, !tbaa !11
  %435 = fneg float %434
  br label %436

436:                                              ; preds = %433, %431
  %437 = phi float [ %432, %431 ], [ %435, %433 ]
  %438 = fpext float %437 to double
  %439 = fptrunc double %438 to float
  store float %439, ptr %26, align 4, !tbaa !11
  %440 = load float, ptr %25, align 4, !tbaa !11
  %441 = load float, ptr %26, align 4, !tbaa !11
  %442 = fcmp oge float %440, %441
  br i1 %442, label %443, label %445

443:                                              ; preds = %436
  %444 = load float, ptr %25, align 4, !tbaa !11
  br label %447

445:                                              ; preds = %436
  %446 = load float, ptr %26, align 4, !tbaa !11
  br label %447

447:                                              ; preds = %445, %443
  %448 = phi float [ %444, %443 ], [ %446, %445 ]
  %449 = fpext float %448 to double
  %450 = fptrunc double %449 to float
  %451 = load ptr, ptr %15, align 8, !tbaa !5
  %452 = load i64, ptr %28, align 8, !tbaa !9
  %453 = getelementptr inbounds float, ptr %451, i64 %452
  store float %450, ptr %453, align 4, !tbaa !11
  %454 = load ptr, ptr %15, align 8, !tbaa !5
  %455 = load i64, ptr %29, align 8, !tbaa !9
  %456 = getelementptr inbounds float, ptr %454, i64 %455
  %457 = load float, ptr %456, align 4, !tbaa !11
  store float %457, ptr %25, align 4, !tbaa !11
  %458 = load ptr, ptr %13, align 8, !tbaa !5
  %459 = load i64, ptr %28, align 8, !tbaa !9
  %460 = load i64, ptr %29, align 8, !tbaa !9
  %461 = load i64, ptr %20, align 8, !tbaa !9
  %462 = mul nsw i64 %460, %461
  %463 = add nsw i64 %459, %462
  %464 = getelementptr inbounds float, ptr %458, i64 %463
  %465 = load float, ptr %464, align 4, !tbaa !11
  store float %465, ptr %24, align 4, !tbaa !11
  %466 = load float, ptr %24, align 4, !tbaa !11
  %467 = fcmp oge float %466, 0.000000e+00
  br i1 %467, label %468, label %470

468:                                              ; preds = %447
  %469 = load float, ptr %24, align 4, !tbaa !11
  br label %473

470:                                              ; preds = %447
  %471 = load float, ptr %24, align 4, !tbaa !11
  %472 = fneg float %471
  br label %473

473:                                              ; preds = %470, %468
  %474 = phi float [ %469, %468 ], [ %472, %470 ]
  %475 = fpext float %474 to double
  %476 = fptrunc double %475 to float
  store float %476, ptr %26, align 4, !tbaa !11
  %477 = load float, ptr %25, align 4, !tbaa !11
  %478 = load float, ptr %26, align 4, !tbaa !11
  %479 = fcmp oge float %477, %478
  br i1 %479, label %480, label %482

480:                                              ; preds = %473
  %481 = load float, ptr %25, align 4, !tbaa !11
  br label %484

482:                                              ; preds = %473
  %483 = load float, ptr %26, align 4, !tbaa !11
  br label %484

484:                                              ; preds = %482, %480
  %485 = phi float [ %481, %480 ], [ %483, %482 ]
  %486 = fpext float %485 to double
  %487 = fptrunc double %486 to float
  %488 = load ptr, ptr %15, align 8, !tbaa !5
  %489 = load i64, ptr %29, align 8, !tbaa !9
  %490 = getelementptr inbounds float, ptr %488, i64 %489
  store float %487, ptr %490, align 4, !tbaa !11
  %491 = load ptr, ptr %17, align 8, !tbaa !5
  %492 = load float, ptr %491, align 4, !tbaa !11
  store float %492, ptr %25, align 4, !tbaa !11
  %493 = load ptr, ptr %13, align 8, !tbaa !5
  %494 = load i64, ptr %28, align 8, !tbaa !9
  %495 = load i64, ptr %29, align 8, !tbaa !9
  %496 = load i64, ptr %20, align 8, !tbaa !9
  %497 = mul nsw i64 %495, %496
  %498 = add nsw i64 %494, %497
  %499 = getelementptr inbounds float, ptr %493, i64 %498
  %500 = load float, ptr %499, align 4, !tbaa !11
  store float %500, ptr %24, align 4, !tbaa !11
  %501 = load float, ptr %24, align 4, !tbaa !11
  %502 = fcmp oge float %501, 0.000000e+00
  br i1 %502, label %503, label %505

503:                                              ; preds = %484
  %504 = load float, ptr %24, align 4, !tbaa !11
  br label %508

505:                                              ; preds = %484
  %506 = load float, ptr %24, align 4, !tbaa !11
  %507 = fneg float %506
  br label %508

508:                                              ; preds = %505, %503
  %509 = phi float [ %504, %503 ], [ %507, %505 ]
  %510 = fpext float %509 to double
  %511 = fptrunc double %510 to float
  store float %511, ptr %26, align 4, !tbaa !11
  %512 = load float, ptr %25, align 4, !tbaa !11
  %513 = load float, ptr %26, align 4, !tbaa !11
  %514 = fcmp oge float %512, %513
  br i1 %514, label %515, label %517

515:                                              ; preds = %508
  %516 = load float, ptr %25, align 4, !tbaa !11
  br label %519

517:                                              ; preds = %508
  %518 = load float, ptr %26, align 4, !tbaa !11
  br label %519

519:                                              ; preds = %517, %515
  %520 = phi float [ %516, %515 ], [ %518, %517 ]
  %521 = fpext float %520 to double
  %522 = fptrunc double %521 to float
  %523 = load ptr, ptr %17, align 8, !tbaa !5
  store float %522, ptr %523, align 4, !tbaa !11
  br label %524

524:                                              ; preds = %519
  %525 = load i64, ptr %28, align 8, !tbaa !9
  %526 = add nsw i64 %525, 1
  store i64 %526, ptr %28, align 8, !tbaa !9
  br label %412, !llvm.loop !17

527:                                              ; preds = %412
  br label %528

528:                                              ; preds = %527
  %529 = load i64, ptr %29, align 8, !tbaa !9
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %29, align 8, !tbaa !9
  br label %333, !llvm.loop !18

531:                                              ; preds = %333
  br label %532

532:                                              ; preds = %531, %329
  %533 = load ptr, ptr %12, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  store i64 %534, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %548, %532
  %536 = load i64, ptr %29, align 8, !tbaa !9
  %537 = load i64, ptr %22, align 8, !tbaa !9
  %538 = icmp sle i64 %536, %537
  br i1 %538, label %539, label %551

539:                                              ; preds = %535
  %540 = load ptr, ptr %15, align 8, !tbaa !5
  %541 = load i64, ptr %29, align 8, !tbaa !9
  %542 = getelementptr inbounds float, ptr %540, i64 %541
  %543 = load float, ptr %542, align 4, !tbaa !11
  %544 = fdiv float 1.000000e+00, %543
  %545 = load ptr, ptr %15, align 8, !tbaa !5
  %546 = load i64, ptr %29, align 8, !tbaa !9
  %547 = getelementptr inbounds float, ptr %545, i64 %546
  store float %544, ptr %547, align 4, !tbaa !11
  br label %548

548:                                              ; preds = %539
  %549 = load i64, ptr %29, align 8, !tbaa !9
  %550 = add nsw i64 %549, 1
  store i64 %550, ptr %29, align 8, !tbaa !9
  br label %535, !llvm.loop !19

551:                                              ; preds = %535
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = load i64, ptr %552, align 8, !tbaa !9
  %554 = sitofp i64 %553 to float
  %555 = fmul float %554, 2.000000e+00
  %556 = fpext float %555 to double
  %557 = call double @sqrt(double noundef %556) #5
  %558 = fdiv double 1.000000e+00, %557
  %559 = fptrunc double %558 to float
  store float %559, ptr %39, align 4, !tbaa !11
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %560

560:                                              ; preds = %1240, %551
  %561 = load i64, ptr %41, align 8, !tbaa !9
  %562 = icmp sle i64 %561, 100
  br i1 %562, label %563, label %1243

563:                                              ; preds = %560
  store float 0.000000e+00, ptr %44, align 4, !tbaa !11
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  %564 = load ptr, ptr %12, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  store i64 %565, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %574, %563
  %567 = load i64, ptr %28, align 8, !tbaa !9
  %568 = load i64, ptr %22, align 8, !tbaa !9
  %569 = icmp sle i64 %567, %568
  br i1 %569, label %570, label %577

570:                                              ; preds = %566
  %571 = load ptr, ptr %18, align 8, !tbaa !5
  %572 = load i64, ptr %28, align 8, !tbaa !9
  %573 = getelementptr inbounds float, ptr %571, i64 %572
  store float 0.000000e+00, ptr %573, align 4, !tbaa !11
  br label %574

574:                                              ; preds = %570
  %575 = load i64, ptr %28, align 8, !tbaa !9
  %576 = add nsw i64 %575, 1
  store i64 %576, ptr %28, align 8, !tbaa !9
  br label %566, !llvm.loop !20

577:                                              ; preds = %566
  %578 = load i64, ptr %36, align 8, !tbaa !9
  %579 = icmp ne i64 %578, 0
  br i1 %579, label %580, label %712

580:                                              ; preds = %577
  %581 = load ptr, ptr %12, align 8, !tbaa !5
  %582 = load i64, ptr %581, align 8, !tbaa !9
  store i64 %582, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %708, %580
  %584 = load i64, ptr %29, align 8, !tbaa !9
  %585 = load i64, ptr %22, align 8, !tbaa !9
  %586 = icmp sle i64 %584, %585
  br i1 %586, label %587, label %711

587:                                              ; preds = %583
  %588 = load i64, ptr %29, align 8, !tbaa !9
  %589 = sub nsw i64 %588, 1
  store i64 %589, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %590

590:                                              ; preds = %674, %587
  %591 = load i64, ptr %28, align 8, !tbaa !9
  %592 = load i64, ptr %23, align 8, !tbaa !9
  %593 = icmp sle i64 %591, %592
  br i1 %593, label %594, label %677

594:                                              ; preds = %590
  %595 = load ptr, ptr %13, align 8, !tbaa !5
  %596 = load i64, ptr %28, align 8, !tbaa !9
  %597 = load i64, ptr %29, align 8, !tbaa !9
  %598 = load i64, ptr %20, align 8, !tbaa !9
  %599 = mul nsw i64 %597, %598
  %600 = add nsw i64 %596, %599
  %601 = getelementptr inbounds float, ptr %595, i64 %600
  %602 = load float, ptr %601, align 4, !tbaa !11
  store float %602, ptr %24, align 4, !tbaa !11
  %603 = load float, ptr %24, align 4, !tbaa !11
  %604 = fcmp oge float %603, 0.000000e+00
  br i1 %604, label %605, label %607

605:                                              ; preds = %594
  %606 = load float, ptr %24, align 4, !tbaa !11
  br label %610

607:                                              ; preds = %594
  %608 = load float, ptr %24, align 4, !tbaa !11
  %609 = fneg float %608
  br label %610

610:                                              ; preds = %607, %605
  %611 = phi float [ %606, %605 ], [ %609, %607 ]
  %612 = fpext float %611 to double
  %613 = fptrunc double %612 to float
  store float %613, ptr %30, align 4, !tbaa !11
  %614 = load ptr, ptr %13, align 8, !tbaa !5
  %615 = load i64, ptr %28, align 8, !tbaa !9
  %616 = load i64, ptr %29, align 8, !tbaa !9
  %617 = load i64, ptr %20, align 8, !tbaa !9
  %618 = mul nsw i64 %616, %617
  %619 = add nsw i64 %615, %618
  %620 = getelementptr inbounds float, ptr %614, i64 %619
  %621 = load float, ptr %620, align 4, !tbaa !11
  store float %621, ptr %24, align 4, !tbaa !11
  %622 = load float, ptr %24, align 4, !tbaa !11
  %623 = fcmp oge float %622, 0.000000e+00
  br i1 %623, label %624, label %626

624:                                              ; preds = %610
  %625 = load float, ptr %24, align 4, !tbaa !11
  br label %629

626:                                              ; preds = %610
  %627 = load float, ptr %24, align 4, !tbaa !11
  %628 = fneg float %627
  br label %629

629:                                              ; preds = %626, %624
  %630 = phi float [ %625, %624 ], [ %628, %626 ]
  %631 = fpext float %630 to double
  %632 = load ptr, ptr %15, align 8, !tbaa !5
  %633 = load i64, ptr %29, align 8, !tbaa !9
  %634 = getelementptr inbounds float, ptr %632, i64 %633
  %635 = load float, ptr %634, align 4, !tbaa !11
  %636 = fpext float %635 to double
  %637 = load ptr, ptr %18, align 8, !tbaa !5
  %638 = load i64, ptr %28, align 8, !tbaa !9
  %639 = getelementptr inbounds float, ptr %637, i64 %638
  %640 = load float, ptr %639, align 4, !tbaa !11
  %641 = fpext float %640 to double
  %642 = call double @llvm.fmuladd.f64(double %631, double %636, double %641)
  %643 = fptrunc double %642 to float
  store float %643, ptr %639, align 4, !tbaa !11
  %644 = load ptr, ptr %13, align 8, !tbaa !5
  %645 = load i64, ptr %28, align 8, !tbaa !9
  %646 = load i64, ptr %29, align 8, !tbaa !9
  %647 = load i64, ptr %20, align 8, !tbaa !9
  %648 = mul nsw i64 %646, %647
  %649 = add nsw i64 %645, %648
  %650 = getelementptr inbounds float, ptr %644, i64 %649
  %651 = load float, ptr %650, align 4, !tbaa !11
  store float %651, ptr %24, align 4, !tbaa !11
  %652 = load float, ptr %24, align 4, !tbaa !11
  %653 = fcmp oge float %652, 0.000000e+00
  br i1 %653, label %654, label %656

654:                                              ; preds = %629
  %655 = load float, ptr %24, align 4, !tbaa !11
  br label %659

656:                                              ; preds = %629
  %657 = load float, ptr %24, align 4, !tbaa !11
  %658 = fneg float %657
  br label %659

659:                                              ; preds = %656, %654
  %660 = phi float [ %655, %654 ], [ %658, %656 ]
  %661 = fpext float %660 to double
  %662 = load ptr, ptr %15, align 8, !tbaa !5
  %663 = load i64, ptr %28, align 8, !tbaa !9
  %664 = getelementptr inbounds float, ptr %662, i64 %663
  %665 = load float, ptr %664, align 4, !tbaa !11
  %666 = fpext float %665 to double
  %667 = load ptr, ptr %18, align 8, !tbaa !5
  %668 = load i64, ptr %29, align 8, !tbaa !9
  %669 = getelementptr inbounds float, ptr %667, i64 %668
  %670 = load float, ptr %669, align 4, !tbaa !11
  %671 = fpext float %670 to double
  %672 = call double @llvm.fmuladd.f64(double %661, double %666, double %671)
  %673 = fptrunc double %672 to float
  store float %673, ptr %669, align 4, !tbaa !11
  br label %674

674:                                              ; preds = %659
  %675 = load i64, ptr %28, align 8, !tbaa !9
  %676 = add nsw i64 %675, 1
  store i64 %676, ptr %28, align 8, !tbaa !9
  br label %590, !llvm.loop !21

677:                                              ; preds = %590
  %678 = load ptr, ptr %13, align 8, !tbaa !5
  %679 = load i64, ptr %29, align 8, !tbaa !9
  %680 = load i64, ptr %29, align 8, !tbaa !9
  %681 = load i64, ptr %20, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %679, %682
  %684 = getelementptr inbounds float, ptr %678, i64 %683
  %685 = load float, ptr %684, align 4, !tbaa !11
  store float %685, ptr %24, align 4, !tbaa !11
  %686 = load float, ptr %24, align 4, !tbaa !11
  %687 = fcmp oge float %686, 0.000000e+00
  br i1 %687, label %688, label %690

688:                                              ; preds = %677
  %689 = load float, ptr %24, align 4, !tbaa !11
  br label %693

690:                                              ; preds = %677
  %691 = load float, ptr %24, align 4, !tbaa !11
  %692 = fneg float %691
  br label %693

693:                                              ; preds = %690, %688
  %694 = phi float [ %689, %688 ], [ %692, %690 ]
  %695 = fpext float %694 to double
  %696 = load ptr, ptr %15, align 8, !tbaa !5
  %697 = load i64, ptr %29, align 8, !tbaa !9
  %698 = getelementptr inbounds float, ptr %696, i64 %697
  %699 = load float, ptr %698, align 4, !tbaa !11
  %700 = fpext float %699 to double
  %701 = load ptr, ptr %18, align 8, !tbaa !5
  %702 = load i64, ptr %29, align 8, !tbaa !9
  %703 = getelementptr inbounds float, ptr %701, i64 %702
  %704 = load float, ptr %703, align 4, !tbaa !11
  %705 = fpext float %704 to double
  %706 = call double @llvm.fmuladd.f64(double %695, double %700, double %705)
  %707 = fptrunc double %706 to float
  store float %707, ptr %703, align 4, !tbaa !11
  br label %708

708:                                              ; preds = %693
  %709 = load i64, ptr %29, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %29, align 8, !tbaa !9
  br label %583, !llvm.loop !22

711:                                              ; preds = %583
  br label %846

712:                                              ; preds = %577
  %713 = load ptr, ptr %12, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  store i64 %714, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %715

715:                                              ; preds = %842, %712
  %716 = load i64, ptr %29, align 8, !tbaa !9
  %717 = load i64, ptr %22, align 8, !tbaa !9
  %718 = icmp sle i64 %716, %717
  br i1 %718, label %719, label %845

719:                                              ; preds = %715
  %720 = load ptr, ptr %13, align 8, !tbaa !5
  %721 = load i64, ptr %29, align 8, !tbaa !9
  %722 = load i64, ptr %29, align 8, !tbaa !9
  %723 = load i64, ptr %20, align 8, !tbaa !9
  %724 = mul nsw i64 %722, %723
  %725 = add nsw i64 %721, %724
  %726 = getelementptr inbounds float, ptr %720, i64 %725
  %727 = load float, ptr %726, align 4, !tbaa !11
  store float %727, ptr %24, align 4, !tbaa !11
  %728 = load float, ptr %24, align 4, !tbaa !11
  %729 = fcmp oge float %728, 0.000000e+00
  br i1 %729, label %730, label %732

730:                                              ; preds = %719
  %731 = load float, ptr %24, align 4, !tbaa !11
  br label %735

732:                                              ; preds = %719
  %733 = load float, ptr %24, align 4, !tbaa !11
  %734 = fneg float %733
  br label %735

735:                                              ; preds = %732, %730
  %736 = phi float [ %731, %730 ], [ %734, %732 ]
  %737 = fpext float %736 to double
  %738 = load ptr, ptr %15, align 8, !tbaa !5
  %739 = load i64, ptr %29, align 8, !tbaa !9
  %740 = getelementptr inbounds float, ptr %738, i64 %739
  %741 = load float, ptr %740, align 4, !tbaa !11
  %742 = fpext float %741 to double
  %743 = load ptr, ptr %18, align 8, !tbaa !5
  %744 = load i64, ptr %29, align 8, !tbaa !9
  %745 = getelementptr inbounds float, ptr %743, i64 %744
  %746 = load float, ptr %745, align 4, !tbaa !11
  %747 = fpext float %746 to double
  %748 = call double @llvm.fmuladd.f64(double %737, double %742, double %747)
  %749 = fptrunc double %748 to float
  store float %749, ptr %745, align 4, !tbaa !11
  %750 = load ptr, ptr %12, align 8, !tbaa !5
  %751 = load i64, ptr %750, align 8, !tbaa !9
  store i64 %751, ptr %23, align 8, !tbaa !9
  %752 = load i64, ptr %29, align 8, !tbaa !9
  %753 = add nsw i64 %752, 1
  store i64 %753, ptr %28, align 8, !tbaa !9
  br label %754

754:                                              ; preds = %838, %735
  %755 = load i64, ptr %28, align 8, !tbaa !9
  %756 = load i64, ptr %23, align 8, !tbaa !9
  %757 = icmp sle i64 %755, %756
  br i1 %757, label %758, label %841

758:                                              ; preds = %754
  %759 = load ptr, ptr %13, align 8, !tbaa !5
  %760 = load i64, ptr %28, align 8, !tbaa !9
  %761 = load i64, ptr %29, align 8, !tbaa !9
  %762 = load i64, ptr %20, align 8, !tbaa !9
  %763 = mul nsw i64 %761, %762
  %764 = add nsw i64 %760, %763
  %765 = getelementptr inbounds float, ptr %759, i64 %764
  %766 = load float, ptr %765, align 4, !tbaa !11
  store float %766, ptr %24, align 4, !tbaa !11
  %767 = load float, ptr %24, align 4, !tbaa !11
  %768 = fcmp oge float %767, 0.000000e+00
  br i1 %768, label %769, label %771

769:                                              ; preds = %758
  %770 = load float, ptr %24, align 4, !tbaa !11
  br label %774

771:                                              ; preds = %758
  %772 = load float, ptr %24, align 4, !tbaa !11
  %773 = fneg float %772
  br label %774

774:                                              ; preds = %771, %769
  %775 = phi float [ %770, %769 ], [ %773, %771 ]
  %776 = fpext float %775 to double
  %777 = fptrunc double %776 to float
  store float %777, ptr %30, align 4, !tbaa !11
  %778 = load ptr, ptr %13, align 8, !tbaa !5
  %779 = load i64, ptr %28, align 8, !tbaa !9
  %780 = load i64, ptr %29, align 8, !tbaa !9
  %781 = load i64, ptr %20, align 8, !tbaa !9
  %782 = mul nsw i64 %780, %781
  %783 = add nsw i64 %779, %782
  %784 = getelementptr inbounds float, ptr %778, i64 %783
  %785 = load float, ptr %784, align 4, !tbaa !11
  store float %785, ptr %24, align 4, !tbaa !11
  %786 = load float, ptr %24, align 4, !tbaa !11
  %787 = fcmp oge float %786, 0.000000e+00
  br i1 %787, label %788, label %790

788:                                              ; preds = %774
  %789 = load float, ptr %24, align 4, !tbaa !11
  br label %793

790:                                              ; preds = %774
  %791 = load float, ptr %24, align 4, !tbaa !11
  %792 = fneg float %791
  br label %793

793:                                              ; preds = %790, %788
  %794 = phi float [ %789, %788 ], [ %792, %790 ]
  %795 = fpext float %794 to double
  %796 = load ptr, ptr %15, align 8, !tbaa !5
  %797 = load i64, ptr %29, align 8, !tbaa !9
  %798 = getelementptr inbounds float, ptr %796, i64 %797
  %799 = load float, ptr %798, align 4, !tbaa !11
  %800 = fpext float %799 to double
  %801 = load ptr, ptr %18, align 8, !tbaa !5
  %802 = load i64, ptr %28, align 8, !tbaa !9
  %803 = getelementptr inbounds float, ptr %801, i64 %802
  %804 = load float, ptr %803, align 4, !tbaa !11
  %805 = fpext float %804 to double
  %806 = call double @llvm.fmuladd.f64(double %795, double %800, double %805)
  %807 = fptrunc double %806 to float
  store float %807, ptr %803, align 4, !tbaa !11
  %808 = load ptr, ptr %13, align 8, !tbaa !5
  %809 = load i64, ptr %28, align 8, !tbaa !9
  %810 = load i64, ptr %29, align 8, !tbaa !9
  %811 = load i64, ptr %20, align 8, !tbaa !9
  %812 = mul nsw i64 %810, %811
  %813 = add nsw i64 %809, %812
  %814 = getelementptr inbounds float, ptr %808, i64 %813
  %815 = load float, ptr %814, align 4, !tbaa !11
  store float %815, ptr %24, align 4, !tbaa !11
  %816 = load float, ptr %24, align 4, !tbaa !11
  %817 = fcmp oge float %816, 0.000000e+00
  br i1 %817, label %818, label %820

818:                                              ; preds = %793
  %819 = load float, ptr %24, align 4, !tbaa !11
  br label %823

820:                                              ; preds = %793
  %821 = load float, ptr %24, align 4, !tbaa !11
  %822 = fneg float %821
  br label %823

823:                                              ; preds = %820, %818
  %824 = phi float [ %819, %818 ], [ %822, %820 ]
  %825 = fpext float %824 to double
  %826 = load ptr, ptr %15, align 8, !tbaa !5
  %827 = load i64, ptr %28, align 8, !tbaa !9
  %828 = getelementptr inbounds float, ptr %826, i64 %827
  %829 = load float, ptr %828, align 4, !tbaa !11
  %830 = fpext float %829 to double
  %831 = load ptr, ptr %18, align 8, !tbaa !5
  %832 = load i64, ptr %29, align 8, !tbaa !9
  %833 = getelementptr inbounds float, ptr %831, i64 %832
  %834 = load float, ptr %833, align 4, !tbaa !11
  %835 = fpext float %834 to double
  %836 = call double @llvm.fmuladd.f64(double %825, double %830, double %835)
  %837 = fptrunc double %836 to float
  store float %837, ptr %833, align 4, !tbaa !11
  br label %838

838:                                              ; preds = %823
  %839 = load i64, ptr %28, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  store i64 %840, ptr %28, align 8, !tbaa !9
  br label %754, !llvm.loop !23

841:                                              ; preds = %754
  br label %842

842:                                              ; preds = %841
  %843 = load i64, ptr %29, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %29, align 8, !tbaa !9
  br label %715, !llvm.loop !24

845:                                              ; preds = %715
  br label %846

846:                                              ; preds = %845, %711
  store float 0.000000e+00, ptr %37, align 4, !tbaa !11
  %847 = load ptr, ptr %12, align 8, !tbaa !5
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %864, %846
  %850 = load i64, ptr %28, align 8, !tbaa !9
  %851 = load i64, ptr %22, align 8, !tbaa !9
  %852 = icmp sle i64 %850, %851
  br i1 %852, label %853, label %867

853:                                              ; preds = %849
  %854 = load ptr, ptr %15, align 8, !tbaa !5
  %855 = load i64, ptr %28, align 8, !tbaa !9
  %856 = getelementptr inbounds float, ptr %854, i64 %855
  %857 = load float, ptr %856, align 4, !tbaa !11
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = load i64, ptr %28, align 8, !tbaa !9
  %860 = getelementptr inbounds float, ptr %858, i64 %859
  %861 = load float, ptr %860, align 4, !tbaa !11
  %862 = load float, ptr %37, align 4, !tbaa !11
  %863 = call float @llvm.fmuladd.f32(float %857, float %861, float %862)
  store float %863, ptr %37, align 4, !tbaa !11
  br label %864

864:                                              ; preds = %853
  %865 = load i64, ptr %28, align 8, !tbaa !9
  %866 = add nsw i64 %865, 1
  store i64 %866, ptr %28, align 8, !tbaa !9
  br label %849, !llvm.loop !25

867:                                              ; preds = %849
  %868 = load ptr, ptr %12, align 8, !tbaa !5
  %869 = load i64, ptr %868, align 8, !tbaa !9
  %870 = sitofp i64 %869 to float
  %871 = load float, ptr %37, align 4, !tbaa !11
  %872 = fdiv float %871, %870
  store float %872, ptr %37, align 4, !tbaa !11
  store float 0.000000e+00, ptr %38, align 4, !tbaa !11
  %873 = load ptr, ptr %12, align 8, !tbaa !5
  %874 = load i64, ptr %873, align 8, !tbaa !9
  %875 = mul nsw i64 %874, 3
  store i64 %875, ptr %22, align 8, !tbaa !9
  %876 = load ptr, ptr %12, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  %878 = shl i64 %877, 1
  %879 = add nsw i64 %878, 1
  store i64 %879, ptr %28, align 8, !tbaa !9
  br label %880

880:                                              ; preds = %907, %867
  %881 = load i64, ptr %28, align 8, !tbaa !9
  %882 = load i64, ptr %22, align 8, !tbaa !9
  %883 = icmp sle i64 %881, %882
  br i1 %883, label %884, label %910

884:                                              ; preds = %880
  %885 = load ptr, ptr %15, align 8, !tbaa !5
  %886 = load i64, ptr %28, align 8, !tbaa !9
  %887 = load ptr, ptr %12, align 8, !tbaa !5
  %888 = load i64, ptr %887, align 8, !tbaa !9
  %889 = shl i64 %888, 1
  %890 = sub nsw i64 %886, %889
  %891 = getelementptr inbounds float, ptr %885, i64 %890
  %892 = load float, ptr %891, align 4, !tbaa !11
  %893 = load ptr, ptr %18, align 8, !tbaa !5
  %894 = load i64, ptr %28, align 8, !tbaa !9
  %895 = load ptr, ptr %12, align 8, !tbaa !5
  %896 = load i64, ptr %895, align 8, !tbaa !9
  %897 = shl i64 %896, 1
  %898 = sub nsw i64 %894, %897
  %899 = getelementptr inbounds float, ptr %893, i64 %898
  %900 = load float, ptr %899, align 4, !tbaa !11
  %901 = load float, ptr %37, align 4, !tbaa !11
  %902 = fneg float %901
  %903 = call float @llvm.fmuladd.f32(float %892, float %900, float %902)
  %904 = load ptr, ptr %18, align 8, !tbaa !5
  %905 = load i64, ptr %28, align 8, !tbaa !9
  %906 = getelementptr inbounds float, ptr %904, i64 %905
  store float %903, ptr %906, align 4, !tbaa !11
  br label %907

907:                                              ; preds = %884
  %908 = load i64, ptr %28, align 8, !tbaa !9
  %909 = add nsw i64 %908, 1
  store i64 %909, ptr %28, align 8, !tbaa !9
  br label %880, !llvm.loop !26

910:                                              ; preds = %880
  %911 = load ptr, ptr %12, align 8, !tbaa !5
  %912 = load ptr, ptr %18, align 8, !tbaa !5
  %913 = load ptr, ptr %12, align 8, !tbaa !5
  %914 = load i64, ptr %913, align 8, !tbaa !9
  %915 = shl i64 %914, 1
  %916 = add nsw i64 %915, 1
  %917 = getelementptr inbounds float, ptr %912, i64 %916
  %918 = call i32 @slassq_(ptr noundef %911, ptr noundef %917, ptr noundef @c__1, ptr noundef %44, ptr noundef %45)
  %919 = load float, ptr %44, align 4, !tbaa !11
  %920 = fpext float %919 to double
  %921 = load float, ptr %45, align 4, !tbaa !11
  %922 = load ptr, ptr %12, align 8, !tbaa !5
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = sitofp i64 %923 to float
  %925 = fdiv float %921, %924
  %926 = fpext float %925 to double
  %927 = call double @sqrt(double noundef %926) #5
  %928 = fmul double %920, %927
  %929 = fptrunc double %928 to float
  store float %929, ptr %38, align 4, !tbaa !11
  %930 = load float, ptr %38, align 4, !tbaa !11
  %931 = load float, ptr %39, align 4, !tbaa !11
  %932 = load float, ptr %37, align 4, !tbaa !11
  %933 = fmul float %931, %932
  %934 = fcmp olt float %930, %933
  br i1 %934, label %935, label %936

935:                                              ; preds = %910
  br label %1244

936:                                              ; preds = %910
  %937 = load ptr, ptr %12, align 8, !tbaa !5
  %938 = load i64, ptr %937, align 8, !tbaa !9
  store i64 %938, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %939

939:                                              ; preds = %1236, %936
  %940 = load i64, ptr %28, align 8, !tbaa !9
  %941 = load i64, ptr %22, align 8, !tbaa !9
  %942 = icmp sle i64 %940, %941
  br i1 %942, label %943, label %1239

943:                                              ; preds = %939
  %944 = load ptr, ptr %13, align 8, !tbaa !5
  %945 = load i64, ptr %28, align 8, !tbaa !9
  %946 = load i64, ptr %28, align 8, !tbaa !9
  %947 = load i64, ptr %20, align 8, !tbaa !9
  %948 = mul nsw i64 %946, %947
  %949 = add nsw i64 %945, %948
  %950 = getelementptr inbounds float, ptr %944, i64 %949
  %951 = load float, ptr %950, align 4, !tbaa !11
  store float %951, ptr %24, align 4, !tbaa !11
  %952 = load float, ptr %24, align 4, !tbaa !11
  %953 = fcmp oge float %952, 0.000000e+00
  br i1 %953, label %954, label %956

954:                                              ; preds = %943
  %955 = load float, ptr %24, align 4, !tbaa !11
  br label %959

956:                                              ; preds = %943
  %957 = load float, ptr %24, align 4, !tbaa !11
  %958 = fneg float %957
  br label %959

959:                                              ; preds = %956, %954
  %960 = phi float [ %955, %954 ], [ %958, %956 ]
  %961 = fpext float %960 to double
  %962 = fptrunc double %961 to float
  store float %962, ptr %30, align 4, !tbaa !11
  %963 = load ptr, ptr %15, align 8, !tbaa !5
  %964 = load i64, ptr %28, align 8, !tbaa !9
  %965 = getelementptr inbounds float, ptr %963, i64 %964
  %966 = load float, ptr %965, align 4, !tbaa !11
  store float %966, ptr %35, align 4, !tbaa !11
  %967 = load ptr, ptr %12, align 8, !tbaa !5
  %968 = load i64, ptr %967, align 8, !tbaa !9
  %969 = sub nsw i64 %968, 1
  %970 = sitofp i64 %969 to float
  %971 = load float, ptr %30, align 4, !tbaa !11
  %972 = fmul float %970, %971
  store float %972, ptr %34, align 4, !tbaa !11
  %973 = load ptr, ptr %12, align 8, !tbaa !5
  %974 = load i64, ptr %973, align 8, !tbaa !9
  %975 = sub nsw i64 %974, 2
  %976 = sitofp i64 %975 to float
  %977 = load ptr, ptr %18, align 8, !tbaa !5
  %978 = load i64, ptr %28, align 8, !tbaa !9
  %979 = getelementptr inbounds float, ptr %977, i64 %978
  %980 = load float, ptr %979, align 4, !tbaa !11
  %981 = load float, ptr %30, align 4, !tbaa !11
  %982 = load float, ptr %35, align 4, !tbaa !11
  %983 = fneg float %981
  %984 = call float @llvm.fmuladd.f32(float %983, float %982, float %980)
  %985 = fmul float %976, %984
  store float %985, ptr %33, align 4, !tbaa !11
  %986 = load float, ptr %30, align 4, !tbaa !11
  %987 = load float, ptr %35, align 4, !tbaa !11
  %988 = fmul float %986, %987
  %989 = fneg float %988
  %990 = load float, ptr %35, align 4, !tbaa !11
  %991 = load ptr, ptr %18, align 8, !tbaa !5
  %992 = load i64, ptr %28, align 8, !tbaa !9
  %993 = getelementptr inbounds float, ptr %991, i64 %992
  %994 = load float, ptr %993, align 4, !tbaa !11
  %995 = fmul float %994, 2.000000e+00
  %996 = load float, ptr %35, align 4, !tbaa !11
  %997 = fmul float %995, %996
  %998 = call float @llvm.fmuladd.f32(float %989, float %990, float %997)
  %999 = load ptr, ptr %12, align 8, !tbaa !5
  %1000 = load i64, ptr %999, align 8, !tbaa !9
  %1001 = sitofp i64 %1000 to float
  %1002 = load float, ptr %37, align 4, !tbaa !11
  %1003 = fneg float %1001
  %1004 = call float @llvm.fmuladd.f32(float %1003, float %1002, float %998)
  store float %1004, ptr %32, align 4, !tbaa !11
  %1005 = load float, ptr %33, align 4, !tbaa !11
  %1006 = load float, ptr %33, align 4, !tbaa !11
  %1007 = load float, ptr %32, align 4, !tbaa !11
  %1008 = fmul float %1007, 4.000000e+00
  %1009 = load float, ptr %34, align 4, !tbaa !11
  %1010 = fmul float %1008, %1009
  %1011 = fneg float %1010
  %1012 = call float @llvm.fmuladd.f32(float %1005, float %1006, float %1011)
  store float %1012, ptr %27, align 4, !tbaa !11
  %1013 = load float, ptr %27, align 4, !tbaa !11
  %1014 = fcmp ole float %1013, 0.000000e+00
  br i1 %1014, label %1015, label %1017

1015:                                             ; preds = %959
  %1016 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %1016, align 8, !tbaa !9
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1345

1017:                                             ; preds = %959
  %1018 = load float, ptr %32, align 4, !tbaa !11
  %1019 = fmul float %1018, -2.000000e+00
  %1020 = fpext float %1019 to double
  %1021 = load float, ptr %33, align 4, !tbaa !11
  %1022 = fpext float %1021 to double
  %1023 = load float, ptr %27, align 4, !tbaa !11
  %1024 = fpext float %1023 to double
  %1025 = call double @sqrt(double noundef %1024) #5
  %1026 = fadd double %1022, %1025
  %1027 = fdiv double %1020, %1026
  %1028 = fptrunc double %1027 to float
  store float %1028, ptr %35, align 4, !tbaa !11
  %1029 = load float, ptr %35, align 4, !tbaa !11
  %1030 = load ptr, ptr %15, align 8, !tbaa !5
  %1031 = load i64, ptr %28, align 8, !tbaa !9
  %1032 = getelementptr inbounds float, ptr %1030, i64 %1031
  %1033 = load float, ptr %1032, align 4, !tbaa !11
  %1034 = fsub float %1029, %1033
  store float %1034, ptr %27, align 4, !tbaa !11
  store float 0.000000e+00, ptr %31, align 4, !tbaa !11
  %1035 = load i64, ptr %36, align 8, !tbaa !9
  %1036 = icmp ne i64 %1035, 0
  br i1 %1036, label %1037, label %1127

1037:                                             ; preds = %1017
  %1038 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1038, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %1039

1039:                                             ; preds = %1077, %1037
  %1040 = load i64, ptr %29, align 8, !tbaa !9
  %1041 = load i64, ptr %23, align 8, !tbaa !9
  %1042 = icmp sle i64 %1040, %1041
  br i1 %1042, label %1043, label %1080

1043:                                             ; preds = %1039
  %1044 = load ptr, ptr %13, align 8, !tbaa !5
  %1045 = load i64, ptr %29, align 8, !tbaa !9
  %1046 = load i64, ptr %28, align 8, !tbaa !9
  %1047 = load i64, ptr %20, align 8, !tbaa !9
  %1048 = mul nsw i64 %1046, %1047
  %1049 = add nsw i64 %1045, %1048
  %1050 = getelementptr inbounds float, ptr %1044, i64 %1049
  %1051 = load float, ptr %1050, align 4, !tbaa !11
  store float %1051, ptr %24, align 4, !tbaa !11
  %1052 = load float, ptr %24, align 4, !tbaa !11
  %1053 = fcmp oge float %1052, 0.000000e+00
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1043
  %1055 = load float, ptr %24, align 4, !tbaa !11
  br label %1059

1056:                                             ; preds = %1043
  %1057 = load float, ptr %24, align 4, !tbaa !11
  %1058 = fneg float %1057
  br label %1059

1059:                                             ; preds = %1056, %1054
  %1060 = phi float [ %1055, %1054 ], [ %1058, %1056 ]
  %1061 = fpext float %1060 to double
  %1062 = fptrunc double %1061 to float
  store float %1062, ptr %30, align 4, !tbaa !11
  %1063 = load ptr, ptr %15, align 8, !tbaa !5
  %1064 = load i64, ptr %29, align 8, !tbaa !9
  %1065 = getelementptr inbounds float, ptr %1063, i64 %1064
  %1066 = load float, ptr %1065, align 4, !tbaa !11
  %1067 = load float, ptr %30, align 4, !tbaa !11
  %1068 = load float, ptr %31, align 4, !tbaa !11
  %1069 = call float @llvm.fmuladd.f32(float %1066, float %1067, float %1068)
  store float %1069, ptr %31, align 4, !tbaa !11
  %1070 = load float, ptr %27, align 4, !tbaa !11
  %1071 = load float, ptr %30, align 4, !tbaa !11
  %1072 = load ptr, ptr %18, align 8, !tbaa !5
  %1073 = load i64, ptr %29, align 8, !tbaa !9
  %1074 = getelementptr inbounds float, ptr %1072, i64 %1073
  %1075 = load float, ptr %1074, align 4, !tbaa !11
  %1076 = call float @llvm.fmuladd.f32(float %1070, float %1071, float %1075)
  store float %1076, ptr %1074, align 4, !tbaa !11
  br label %1077

1077:                                             ; preds = %1059
  %1078 = load i64, ptr %29, align 8, !tbaa !9
  %1079 = add nsw i64 %1078, 1
  store i64 %1079, ptr %29, align 8, !tbaa !9
  br label %1039, !llvm.loop !27

1080:                                             ; preds = %1039
  %1081 = load ptr, ptr %12, align 8, !tbaa !5
  %1082 = load i64, ptr %1081, align 8, !tbaa !9
  store i64 %1082, ptr %23, align 8, !tbaa !9
  %1083 = load i64, ptr %28, align 8, !tbaa !9
  %1084 = add nsw i64 %1083, 1
  store i64 %1084, ptr %29, align 8, !tbaa !9
  br label %1085

1085:                                             ; preds = %1123, %1080
  %1086 = load i64, ptr %29, align 8, !tbaa !9
  %1087 = load i64, ptr %23, align 8, !tbaa !9
  %1088 = icmp sle i64 %1086, %1087
  br i1 %1088, label %1089, label %1126

1089:                                             ; preds = %1085
  %1090 = load ptr, ptr %13, align 8, !tbaa !5
  %1091 = load i64, ptr %28, align 8, !tbaa !9
  %1092 = load i64, ptr %29, align 8, !tbaa !9
  %1093 = load i64, ptr %20, align 8, !tbaa !9
  %1094 = mul nsw i64 %1092, %1093
  %1095 = add nsw i64 %1091, %1094
  %1096 = getelementptr inbounds float, ptr %1090, i64 %1095
  %1097 = load float, ptr %1096, align 4, !tbaa !11
  store float %1097, ptr %24, align 4, !tbaa !11
  %1098 = load float, ptr %24, align 4, !tbaa !11
  %1099 = fcmp oge float %1098, 0.000000e+00
  br i1 %1099, label %1100, label %1102

1100:                                             ; preds = %1089
  %1101 = load float, ptr %24, align 4, !tbaa !11
  br label %1105

1102:                                             ; preds = %1089
  %1103 = load float, ptr %24, align 4, !tbaa !11
  %1104 = fneg float %1103
  br label %1105

1105:                                             ; preds = %1102, %1100
  %1106 = phi float [ %1101, %1100 ], [ %1104, %1102 ]
  %1107 = fpext float %1106 to double
  %1108 = fptrunc double %1107 to float
  store float %1108, ptr %30, align 4, !tbaa !11
  %1109 = load ptr, ptr %15, align 8, !tbaa !5
  %1110 = load i64, ptr %29, align 8, !tbaa !9
  %1111 = getelementptr inbounds float, ptr %1109, i64 %1110
  %1112 = load float, ptr %1111, align 4, !tbaa !11
  %1113 = load float, ptr %30, align 4, !tbaa !11
  %1114 = load float, ptr %31, align 4, !tbaa !11
  %1115 = call float @llvm.fmuladd.f32(float %1112, float %1113, float %1114)
  store float %1115, ptr %31, align 4, !tbaa !11
  %1116 = load float, ptr %27, align 4, !tbaa !11
  %1117 = load float, ptr %30, align 4, !tbaa !11
  %1118 = load ptr, ptr %18, align 8, !tbaa !5
  %1119 = load i64, ptr %29, align 8, !tbaa !9
  %1120 = getelementptr inbounds float, ptr %1118, i64 %1119
  %1121 = load float, ptr %1120, align 4, !tbaa !11
  %1122 = call float @llvm.fmuladd.f32(float %1116, float %1117, float %1121)
  store float %1122, ptr %1120, align 4, !tbaa !11
  br label %1123

1123:                                             ; preds = %1105
  %1124 = load i64, ptr %29, align 8, !tbaa !9
  %1125 = add nsw i64 %1124, 1
  store i64 %1125, ptr %29, align 8, !tbaa !9
  br label %1085, !llvm.loop !28

1126:                                             ; preds = %1085
  br label %1217

1127:                                             ; preds = %1017
  %1128 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1128, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %1129

1129:                                             ; preds = %1167, %1127
  %1130 = load i64, ptr %29, align 8, !tbaa !9
  %1131 = load i64, ptr %23, align 8, !tbaa !9
  %1132 = icmp sle i64 %1130, %1131
  br i1 %1132, label %1133, label %1170

1133:                                             ; preds = %1129
  %1134 = load ptr, ptr %13, align 8, !tbaa !5
  %1135 = load i64, ptr %28, align 8, !tbaa !9
  %1136 = load i64, ptr %29, align 8, !tbaa !9
  %1137 = load i64, ptr %20, align 8, !tbaa !9
  %1138 = mul nsw i64 %1136, %1137
  %1139 = add nsw i64 %1135, %1138
  %1140 = getelementptr inbounds float, ptr %1134, i64 %1139
  %1141 = load float, ptr %1140, align 4, !tbaa !11
  store float %1141, ptr %24, align 4, !tbaa !11
  %1142 = load float, ptr %24, align 4, !tbaa !11
  %1143 = fcmp oge float %1142, 0.000000e+00
  br i1 %1143, label %1144, label %1146

1144:                                             ; preds = %1133
  %1145 = load float, ptr %24, align 4, !tbaa !11
  br label %1149

1146:                                             ; preds = %1133
  %1147 = load float, ptr %24, align 4, !tbaa !11
  %1148 = fneg float %1147
  br label %1149

1149:                                             ; preds = %1146, %1144
  %1150 = phi float [ %1145, %1144 ], [ %1148, %1146 ]
  %1151 = fpext float %1150 to double
  %1152 = fptrunc double %1151 to float
  store float %1152, ptr %30, align 4, !tbaa !11
  %1153 = load ptr, ptr %15, align 8, !tbaa !5
  %1154 = load i64, ptr %29, align 8, !tbaa !9
  %1155 = getelementptr inbounds float, ptr %1153, i64 %1154
  %1156 = load float, ptr %1155, align 4, !tbaa !11
  %1157 = load float, ptr %30, align 4, !tbaa !11
  %1158 = load float, ptr %31, align 4, !tbaa !11
  %1159 = call float @llvm.fmuladd.f32(float %1156, float %1157, float %1158)
  store float %1159, ptr %31, align 4, !tbaa !11
  %1160 = load float, ptr %27, align 4, !tbaa !11
  %1161 = load float, ptr %30, align 4, !tbaa !11
  %1162 = load ptr, ptr %18, align 8, !tbaa !5
  %1163 = load i64, ptr %29, align 8, !tbaa !9
  %1164 = getelementptr inbounds float, ptr %1162, i64 %1163
  %1165 = load float, ptr %1164, align 4, !tbaa !11
  %1166 = call float @llvm.fmuladd.f32(float %1160, float %1161, float %1165)
  store float %1166, ptr %1164, align 4, !tbaa !11
  br label %1167

1167:                                             ; preds = %1149
  %1168 = load i64, ptr %29, align 8, !tbaa !9
  %1169 = add nsw i64 %1168, 1
  store i64 %1169, ptr %29, align 8, !tbaa !9
  br label %1129, !llvm.loop !29

1170:                                             ; preds = %1129
  %1171 = load ptr, ptr %12, align 8, !tbaa !5
  %1172 = load i64, ptr %1171, align 8, !tbaa !9
  store i64 %1172, ptr %23, align 8, !tbaa !9
  %1173 = load i64, ptr %28, align 8, !tbaa !9
  %1174 = add nsw i64 %1173, 1
  store i64 %1174, ptr %29, align 8, !tbaa !9
  br label %1175

1175:                                             ; preds = %1213, %1170
  %1176 = load i64, ptr %29, align 8, !tbaa !9
  %1177 = load i64, ptr %23, align 8, !tbaa !9
  %1178 = icmp sle i64 %1176, %1177
  br i1 %1178, label %1179, label %1216

1179:                                             ; preds = %1175
  %1180 = load ptr, ptr %13, align 8, !tbaa !5
  %1181 = load i64, ptr %29, align 8, !tbaa !9
  %1182 = load i64, ptr %28, align 8, !tbaa !9
  %1183 = load i64, ptr %20, align 8, !tbaa !9
  %1184 = mul nsw i64 %1182, %1183
  %1185 = add nsw i64 %1181, %1184
  %1186 = getelementptr inbounds float, ptr %1180, i64 %1185
  %1187 = load float, ptr %1186, align 4, !tbaa !11
  store float %1187, ptr %24, align 4, !tbaa !11
  %1188 = load float, ptr %24, align 4, !tbaa !11
  %1189 = fcmp oge float %1188, 0.000000e+00
  br i1 %1189, label %1190, label %1192

1190:                                             ; preds = %1179
  %1191 = load float, ptr %24, align 4, !tbaa !11
  br label %1195

1192:                                             ; preds = %1179
  %1193 = load float, ptr %24, align 4, !tbaa !11
  %1194 = fneg float %1193
  br label %1195

1195:                                             ; preds = %1192, %1190
  %1196 = phi float [ %1191, %1190 ], [ %1194, %1192 ]
  %1197 = fpext float %1196 to double
  %1198 = fptrunc double %1197 to float
  store float %1198, ptr %30, align 4, !tbaa !11
  %1199 = load ptr, ptr %15, align 8, !tbaa !5
  %1200 = load i64, ptr %29, align 8, !tbaa !9
  %1201 = getelementptr inbounds float, ptr %1199, i64 %1200
  %1202 = load float, ptr %1201, align 4, !tbaa !11
  %1203 = load float, ptr %30, align 4, !tbaa !11
  %1204 = load float, ptr %31, align 4, !tbaa !11
  %1205 = call float @llvm.fmuladd.f32(float %1202, float %1203, float %1204)
  store float %1205, ptr %31, align 4, !tbaa !11
  %1206 = load float, ptr %27, align 4, !tbaa !11
  %1207 = load float, ptr %30, align 4, !tbaa !11
  %1208 = load ptr, ptr %18, align 8, !tbaa !5
  %1209 = load i64, ptr %29, align 8, !tbaa !9
  %1210 = getelementptr inbounds float, ptr %1208, i64 %1209
  %1211 = load float, ptr %1210, align 4, !tbaa !11
  %1212 = call float @llvm.fmuladd.f32(float %1206, float %1207, float %1211)
  store float %1212, ptr %1210, align 4, !tbaa !11
  br label %1213

1213:                                             ; preds = %1195
  %1214 = load i64, ptr %29, align 8, !tbaa !9
  %1215 = add nsw i64 %1214, 1
  store i64 %1215, ptr %29, align 8, !tbaa !9
  br label %1175, !llvm.loop !30

1216:                                             ; preds = %1175
  br label %1217

1217:                                             ; preds = %1216, %1126
  %1218 = load float, ptr %31, align 4, !tbaa !11
  %1219 = load ptr, ptr %18, align 8, !tbaa !5
  %1220 = load i64, ptr %28, align 8, !tbaa !9
  %1221 = getelementptr inbounds float, ptr %1219, i64 %1220
  %1222 = load float, ptr %1221, align 4, !tbaa !11
  %1223 = fadd float %1218, %1222
  %1224 = load float, ptr %27, align 4, !tbaa !11
  %1225 = fmul float %1223, %1224
  %1226 = load ptr, ptr %12, align 8, !tbaa !5
  %1227 = load i64, ptr %1226, align 8, !tbaa !9
  %1228 = sitofp i64 %1227 to float
  %1229 = fdiv float %1225, %1228
  %1230 = load float, ptr %37, align 4, !tbaa !11
  %1231 = fadd float %1230, %1229
  store float %1231, ptr %37, align 4, !tbaa !11
  %1232 = load float, ptr %35, align 4, !tbaa !11
  %1233 = load ptr, ptr %15, align 8, !tbaa !5
  %1234 = load i64, ptr %28, align 8, !tbaa !9
  %1235 = getelementptr inbounds float, ptr %1233, i64 %1234
  store float %1232, ptr %1235, align 4, !tbaa !11
  br label %1236

1236:                                             ; preds = %1217
  %1237 = load i64, ptr %28, align 8, !tbaa !9
  %1238 = add nsw i64 %1237, 1
  store i64 %1238, ptr %28, align 8, !tbaa !9
  br label %939, !llvm.loop !31

1239:                                             ; preds = %939
  br label %1240

1240:                                             ; preds = %1239
  %1241 = load i64, ptr %41, align 8, !tbaa !9
  %1242 = add nsw i64 %1241, 1
  store i64 %1242, ptr %41, align 8, !tbaa !9
  br label %560, !llvm.loop !32

1243:                                             ; preds = %560
  br label %1244

1244:                                             ; preds = %1243, %935
  %1245 = call double @slamch_(ptr noundef @.str.3)
  %1246 = fptrunc double %1245 to float
  store float %1246, ptr %47, align 4, !tbaa !11
  %1247 = load float, ptr %47, align 4, !tbaa !11
  %1248 = fdiv float 1.000000e+00, %1247
  store float %1248, ptr %46, align 4, !tbaa !11
  %1249 = load float, ptr %46, align 4, !tbaa !11
  store float %1249, ptr %42, align 4, !tbaa !11
  store float 0.000000e+00, ptr %43, align 4, !tbaa !11
  %1250 = load float, ptr %37, align 4, !tbaa !11
  %1251 = fpext float %1250 to double
  %1252 = call double @sqrt(double noundef %1251) #5
  %1253 = fdiv double 1.000000e+00, %1252
  %1254 = fptrunc double %1253 to float
  store float %1254, ptr %30, align 4, !tbaa !11
  %1255 = call double @slamch_(ptr noundef @.str.4)
  %1256 = fptrunc double %1255 to float
  store float %1256, ptr %40, align 4, !tbaa !11
  %1257 = load float, ptr %40, align 4, !tbaa !11
  %1258 = fpext float %1257 to double
  %1259 = call double @log(double noundef %1258) #5
  %1260 = fdiv double 1.000000e+00, %1259
  %1261 = fptrunc double %1260 to float
  store float %1261, ptr %31, align 4, !tbaa !11
  %1262 = load ptr, ptr %12, align 8, !tbaa !5
  %1263 = load i64, ptr %1262, align 8, !tbaa !9
  store i64 %1263, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1318, %1244
  %1265 = load i64, ptr %28, align 8, !tbaa !9
  %1266 = load i64, ptr %22, align 8, !tbaa !9
  %1267 = icmp sle i64 %1265, %1266
  br i1 %1267, label %1268, label %1321

1268:                                             ; preds = %1264
  %1269 = load float, ptr %31, align 4, !tbaa !11
  %1270 = fpext float %1269 to double
  %1271 = load ptr, ptr %15, align 8, !tbaa !5
  %1272 = load i64, ptr %28, align 8, !tbaa !9
  %1273 = getelementptr inbounds float, ptr %1271, i64 %1272
  %1274 = load float, ptr %1273, align 4, !tbaa !11
  %1275 = load float, ptr %30, align 4, !tbaa !11
  %1276 = fmul float %1274, %1275
  %1277 = fpext float %1276 to double
  %1278 = call double @log(double noundef %1277) #5
  %1279 = fmul double %1270, %1278
  %1280 = fptosi double %1279 to i64
  store i64 %1280, ptr %23, align 8, !tbaa !9
  %1281 = call double @pow_ri(ptr noundef %40, ptr noundef %23)
  %1282 = fptrunc double %1281 to float
  %1283 = load ptr, ptr %15, align 8, !tbaa !5
  %1284 = load i64, ptr %28, align 8, !tbaa !9
  %1285 = getelementptr inbounds float, ptr %1283, i64 %1284
  store float %1282, ptr %1285, align 4, !tbaa !11
  %1286 = load float, ptr %42, align 4, !tbaa !11
  store float %1286, ptr %24, align 4, !tbaa !11
  %1287 = load ptr, ptr %15, align 8, !tbaa !5
  %1288 = load i64, ptr %28, align 8, !tbaa !9
  %1289 = getelementptr inbounds float, ptr %1287, i64 %1288
  %1290 = load float, ptr %1289, align 4, !tbaa !11
  store float %1290, ptr %25, align 4, !tbaa !11
  %1291 = load float, ptr %24, align 4, !tbaa !11
  %1292 = load float, ptr %25, align 4, !tbaa !11
  %1293 = fcmp ole float %1291, %1292
  br i1 %1293, label %1294, label %1296

1294:                                             ; preds = %1268
  %1295 = load float, ptr %24, align 4, !tbaa !11
  br label %1298

1296:                                             ; preds = %1268
  %1297 = load float, ptr %25, align 4, !tbaa !11
  br label %1298

1298:                                             ; preds = %1296, %1294
  %1299 = phi float [ %1295, %1294 ], [ %1297, %1296 ]
  %1300 = fpext float %1299 to double
  %1301 = fptrunc double %1300 to float
  store float %1301, ptr %42, align 4, !tbaa !11
  %1302 = load float, ptr %43, align 4, !tbaa !11
  store float %1302, ptr %24, align 4, !tbaa !11
  %1303 = load ptr, ptr %15, align 8, !tbaa !5
  %1304 = load i64, ptr %28, align 8, !tbaa !9
  %1305 = getelementptr inbounds float, ptr %1303, i64 %1304
  %1306 = load float, ptr %1305, align 4, !tbaa !11
  store float %1306, ptr %25, align 4, !tbaa !11
  %1307 = load float, ptr %24, align 4, !tbaa !11
  %1308 = load float, ptr %25, align 4, !tbaa !11
  %1309 = fcmp oge float %1307, %1308
  br i1 %1309, label %1310, label %1312

1310:                                             ; preds = %1298
  %1311 = load float, ptr %24, align 4, !tbaa !11
  br label %1314

1312:                                             ; preds = %1298
  %1313 = load float, ptr %25, align 4, !tbaa !11
  br label %1314

1314:                                             ; preds = %1312, %1310
  %1315 = phi float [ %1311, %1310 ], [ %1313, %1312 ]
  %1316 = fpext float %1315 to double
  %1317 = fptrunc double %1316 to float
  store float %1317, ptr %43, align 4, !tbaa !11
  br label %1318

1318:                                             ; preds = %1314
  %1319 = load i64, ptr %28, align 8, !tbaa !9
  %1320 = add nsw i64 %1319, 1
  store i64 %1320, ptr %28, align 8, !tbaa !9
  br label %1264, !llvm.loop !33

1321:                                             ; preds = %1264
  %1322 = load float, ptr %42, align 4, !tbaa !11
  %1323 = load float, ptr %47, align 4, !tbaa !11
  %1324 = fcmp oge float %1322, %1323
  br i1 %1324, label %1325, label %1327

1325:                                             ; preds = %1321
  %1326 = load float, ptr %42, align 4, !tbaa !11
  br label %1329

1327:                                             ; preds = %1321
  %1328 = load float, ptr %47, align 4, !tbaa !11
  br label %1329

1329:                                             ; preds = %1327, %1325
  %1330 = phi float [ %1326, %1325 ], [ %1328, %1327 ]
  %1331 = fpext float %1330 to double
  %1332 = load float, ptr %43, align 4, !tbaa !11
  %1333 = load float, ptr %46, align 4, !tbaa !11
  %1334 = fcmp ole float %1332, %1333
  br i1 %1334, label %1335, label %1337

1335:                                             ; preds = %1329
  %1336 = load float, ptr %43, align 4, !tbaa !11
  br label %1339

1337:                                             ; preds = %1329
  %1338 = load float, ptr %46, align 4, !tbaa !11
  br label %1339

1339:                                             ; preds = %1337, %1335
  %1340 = phi float [ %1336, %1335 ], [ %1338, %1337 ]
  %1341 = fpext float %1340 to double
  %1342 = fdiv double %1331, %1341
  %1343 = fptrunc double %1342 to float
  %1344 = load ptr, ptr %16, align 8, !tbaa !5
  store float %1343, ptr %1344, align 4, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1345

1345:                                             ; preds = %1339, %1015, %110, %98
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %1346 = load i32, ptr %10, align 4
  ret i32 %1346
}

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

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

declare double @slamch_(ptr noundef) #2

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

declare double @pow_ri(ptr noundef, ptr noundef) #2

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

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


; 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"

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

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

23:                                               ; preds = %9
  %24 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #7
  %.not506 = icmp eq i64 %24, 0
  br i1 %.not506, label %.thread.sink.split, label %25

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

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

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

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

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

35:                                               ; preds = %31
  %36 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  store float 0.000000e+00, ptr %6, align 4, !tbaa !9
  %37 = load i64, ptr %1, align 8, !tbaa !5
  %38 = icmp eq i64 %37, 0
  br i1 %38, label %39, label %40

39:                                               ; preds = %35
  store float 1.000000e+00, ptr %5, align 4, !tbaa !9
  br label %468

40:                                               ; preds = %35
  %.not508537 = icmp slt i64 %37, 1
  br i1 %.not508537, label %._crit_edge, label %._crit_edge.thread

._crit_edge:                                      ; preds = %40
  %.not509 = icmp eq i64 %36, 0
  br label %.loopexit534

._crit_edge.thread:                               ; preds = %40
  %41 = shl nuw i64 %37, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %4, i8 0, i64 %41, i1 false), !tbaa !9
  store float 0.000000e+00, ptr %6, align 4, !tbaa !9
  %.not509672 = icmp eq i64 %36, 0
  br i1 %.not509672, label %.lr.ph559, label %.lr.ph547

.lr.ph547:                                        ; preds = %._crit_edge.thread
  %42 = add i64 %17, 1
  br label %43

43:                                               ; preds = %.lr.ph547, %._crit_edge543
  %.0489545 = phi i64 [ 1, %.lr.ph547 ], [ %87, %._crit_edge543 ]
  %.not527.not539 = icmp ugt i64 %.0489545, 1
  br i1 %.not527.not539, label %.lr.ph542, label %._crit_edge543

.lr.ph542:                                        ; preds = %43
  %44 = mul nsw i64 %.0489545, %17
  %invariant.gep = getelementptr float, ptr %19, i64 %44
  %45 = getelementptr inbounds float, ptr %20, i64 %.0489545
  br label %46

46:                                               ; preds = %.lr.ph542, %46
  %.1495540 = phi i64 [ 1, %.lr.ph542 ], [ %69, %46 ]
  %47 = getelementptr inbounds float, ptr %20, i64 %.1495540
  %48 = load float, ptr %47, align 4, !tbaa !9
  %gep = getelementptr float, ptr %invariant.gep, i64 %.1495540
  %49 = load float, ptr %gep, align 4, !tbaa !9
  %50 = fcmp oge float %49, 0.000000e+00
  %51 = fneg float %49
  %52 = select i1 %50, float %49, float %51
  %53 = fcmp oge float %48, %52
  %54 = select i1 %53, float %48, float %52
  store float %54, ptr %47, align 4, !tbaa !9
  %55 = load float, ptr %45, align 4, !tbaa !9
  %56 = load float, ptr %gep, align 4, !tbaa !9
  %57 = fcmp oge float %56, 0.000000e+00
  %58 = fneg float %56
  %59 = select i1 %57, float %56, float %58
  %60 = fcmp oge float %55, %59
  %61 = select i1 %60, float %55, float %59
  store float %61, ptr %45, align 4, !tbaa !9
  %62 = load float, ptr %6, align 4, !tbaa !9
  %63 = load float, ptr %gep, align 4, !tbaa !9
  %64 = fcmp oge float %63, 0.000000e+00
  %65 = fneg float %63
  %66 = select i1 %64, float %63, float %65
  %67 = fcmp oge float %62, %66
  %68 = select i1 %67, float %62, float %66
  store float %68, ptr %6, align 4, !tbaa !9
  %69 = add nuw nsw i64 %.1495540, 1
  %exitcond.not = icmp eq i64 %69, %.0489545
  br i1 %exitcond.not, label %._crit_edge543, label %46, !llvm.loop !11

._crit_edge543:                                   ; preds = %46, %43
  %70 = getelementptr inbounds float, ptr %20, i64 %.0489545
  %71 = load float, ptr %70, align 4, !tbaa !9
  %72 = mul i64 %.0489545, %42
  %73 = getelementptr inbounds float, ptr %19, i64 %72
  %74 = load float, ptr %73, align 4, !tbaa !9
  %75 = fcmp oge float %74, 0.000000e+00
  %76 = fneg float %74
  %77 = select i1 %75, float %74, float %76
  %78 = fcmp oge float %71, %77
  %79 = select i1 %78, float %71, float %77
  store float %79, ptr %70, align 4, !tbaa !9
  %80 = load float, ptr %6, align 4, !tbaa !9
  %81 = load float, ptr %73, align 4, !tbaa !9
  %82 = fcmp oge float %81, 0.000000e+00
  %83 = fneg float %81
  %84 = select i1 %82, float %81, float %83
  %85 = fcmp oge float %80, %84
  %86 = select i1 %85, float %80, float %84
  store float %86, ptr %6, align 4, !tbaa !9
  %87 = add nuw i64 %.0489545, 1
  %exitcond657.not = icmp eq i64 %.0489545, %37
  br i1 %exitcond657.not, label %..loopexit535_crit_edge, label %43, !llvm.loop !13

.loopexit533:                                     ; preds = %.lr.ph553, %.lr.ph559
  %exitcond658.not = icmp eq i64 %.1490557, %37
  br i1 %exitcond658.not, label %.loopexit534, label %.lr.ph559, !llvm.loop !14

.lr.ph559:                                        ; preds = %._crit_edge.thread, %.loopexit533
  %.1490557 = phi i64 [ %106, %.loopexit533 ], [ 1, %._crit_edge.thread ]
  %88 = getelementptr inbounds float, ptr %20, i64 %.1490557
  %89 = load float, ptr %88, align 4, !tbaa !9
  %90 = mul nsw i64 %.1490557, %17
  %91 = getelementptr float, ptr %19, i64 %.1490557
  %92 = getelementptr float, ptr %91, i64 %90
  %93 = load float, ptr %92, align 4, !tbaa !9
  %94 = fcmp oge float %93, 0.000000e+00
  %95 = fneg float %93
  %96 = select i1 %94, float %93, float %95
  %97 = fcmp oge float %89, %96
  %98 = select i1 %97, float %89, float %96
  store float %98, ptr %88, align 4, !tbaa !9
  %99 = load float, ptr %6, align 4, !tbaa !9
  %100 = load float, ptr %92, align 4, !tbaa !9
  %101 = fcmp oge float %100, 0.000000e+00
  %102 = fneg float %100
  %103 = select i1 %101, float %100, float %102
  %104 = fcmp oge float %99, %103
  %105 = select i1 %104, float %99, float %103
  store float %105, ptr %6, align 4, !tbaa !9
  %106 = add nuw i64 %.1490557, 1
  %invariant.gep548 = getelementptr float, ptr %19, i64 %90
  %.not511550.not = icmp slt i64 %.1490557, %37
  br i1 %.not511550.not, label %.lr.ph553, label %.loopexit533

.lr.ph553:                                        ; preds = %.lr.ph559, %.lr.ph553
  %.2496551 = phi i64 [ %129, %.lr.ph553 ], [ %106, %.lr.ph559 ]
  %107 = getelementptr inbounds float, ptr %20, i64 %.2496551
  %108 = load float, ptr %107, align 4, !tbaa !9
  %gep549 = getelementptr float, ptr %invariant.gep548, i64 %.2496551
  %109 = load float, ptr %gep549, align 4, !tbaa !9
  %110 = fcmp oge float %109, 0.000000e+00
  %111 = fneg float %109
  %112 = select i1 %110, float %109, float %111
  %113 = fcmp oge float %108, %112
  %114 = select i1 %113, float %108, float %112
  store float %114, ptr %107, align 4, !tbaa !9
  %115 = load float, ptr %88, align 4, !tbaa !9
  %116 = load float, ptr %gep549, align 4, !tbaa !9
  %117 = fcmp oge float %116, 0.000000e+00
  %118 = fneg float %116
  %119 = select i1 %117, float %116, float %118
  %120 = fcmp oge float %115, %119
  %121 = select i1 %120, float %115, float %119
  store float %121, ptr %88, align 4, !tbaa !9
  %122 = load float, ptr %6, align 4, !tbaa !9
  %123 = load float, ptr %gep549, align 4, !tbaa !9
  %124 = fcmp oge float %123, 0.000000e+00
  %125 = fneg float %123
  %126 = select i1 %124, float %123, float %125
  %127 = fcmp oge float %122, %126
  %128 = select i1 %127, float %122, float %126
  store float %128, ptr %6, align 4, !tbaa !9
  %129 = add nuw nsw i64 %.2496551, 1
  %.not511.not = icmp slt i64 %.2496551, %37
  br i1 %.not511.not, label %.lr.ph553, label %.loopexit533, !llvm.loop !15

..loopexit535_crit_edge:                          ; preds = %._crit_edge543
  %130 = add nsw i64 %37, -1
  br label %.loopexit534

.loopexit534:                                     ; preds = %.loopexit533, %._crit_edge, %..loopexit535_crit_edge
  %.not509673 = phi i1 [ %.not509672, %..loopexit535_crit_edge ], [ %.not509, %._crit_edge ], [ %.not509672, %.loopexit533 ]
  %storemerge = phi i64 [ %130, %..loopexit535_crit_edge ], [ %37, %._crit_edge ], [ %37, %.loopexit533 ]
  store i64 %storemerge, ptr %13, align 8, !tbaa !5
  br i1 %.not508537, label %._crit_edge564, label %.lr.ph563.preheader

.lr.ph563.preheader:                              ; preds = %.loopexit534
  %min.iters.check = icmp ult i64 %37, 4
  br i1 %min.iters.check, label %.lr.ph563.preheader736, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph563.preheader
  %n.vec = and i64 %37, 9223372036854775804
  %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 ]
  %131 = getelementptr float, ptr %4, i64 %index
  %wide.load = load <4 x float>, ptr %131, align 4, !tbaa !9
  %132 = fdiv <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, %wide.load
  store <4 x float> %132, ptr %131, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %133 = icmp eq i64 %index.next, %n.vec
  br i1 %133, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %37, %n.vec
  br i1 %cmp.n, label %._crit_edge564, label %.lr.ph563.preheader736

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

.lr.ph563:                                        ; preds = %.lr.ph563.preheader736, %.lr.ph563
  %.2491561 = phi i64 [ %137, %.lr.ph563 ], [ %.2491561.ph, %.lr.ph563.preheader736 ]
  %134 = getelementptr inbounds float, ptr %20, i64 %.2491561
  %135 = load float, ptr %134, align 4, !tbaa !9
  %136 = fdiv float 1.000000e+00, %135
  store float %136, ptr %134, align 4, !tbaa !9
  %137 = add nuw i64 %.2491561, 1
  %exitcond659.not = icmp eq i64 %.2491561, %37
  br i1 %exitcond659.not, label %._crit_edge564, label %.lr.ph563, !llvm.loop !19

._crit_edge564:                                   ; preds = %.lr.ph563, %middle.block, %.loopexit534
  %138 = sitofp i64 %37 to float
  %139 = fmul float %138, 2.000000e+00
  %140 = fpext float %139 to double
  %141 = tail call double @sqrt(double noundef %140) #7
  %142 = fdiv double 1.000000e+00, %141
  %143 = fptrunc double %142 to float
  %144 = add i64 %17, 1
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  %145 = sub i64 %11, %10
  br label %146

146:                                              ; preds = %._crit_edge564, %._crit_edge635
  %147 = phi i64 [ %.pre, %._crit_edge564 ], [ %430, %._crit_edge635 ]
  %.0483637 = phi i64 [ 1, %._crit_edge564 ], [ %431, %._crit_edge635 ]
  store float 0.000000e+00, ptr %15, align 4, !tbaa !9
  store float 0.000000e+00, ptr %16, align 4, !tbaa !9
  %.not514565 = icmp slt i64 %147, 1
  br i1 %.not514565, label %._crit_edge602, label %._crit_edge569.thread

._crit_edge569.thread:                            ; preds = %146
  %148 = shl nuw i64 %147, 2
  call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 %148, i1 false), !tbaa !9
  br i1 %.not509673, label %.lr.ph595, label %.lr.ph582

.lr.ph582:                                        ; preds = %._crit_edge569.thread, %._crit_edge574
  %.3492580 = phi i64 [ %193, %._crit_edge574 ], [ 1, %._crit_edge569.thread ]
  %.not526.not570 = icmp ugt i64 %.3492580, 1
  br i1 %.not526.not570, label %.lr.ph573, label %.lr.ph582.._crit_edge574_crit_edge

.lr.ph582.._crit_edge574_crit_edge:               ; preds = %.lr.ph582
  %.phi.trans.insert = getelementptr inbounds float, ptr %21, i64 %.3492580
  %.pre671 = load float, ptr %.phi.trans.insert, align 4, !tbaa !9
  br label %._crit_edge574

.lr.ph573:                                        ; preds = %.lr.ph582
  %149 = mul nsw i64 %.3492580, %17
  %invariant.gep575 = getelementptr float, ptr %19, i64 %149
  %150 = getelementptr inbounds float, ptr %20, i64 %.3492580
  %151 = getelementptr inbounds float, ptr %21, i64 %.3492580
  br label %152

152:                                              ; preds = %.lr.ph573, %152
  %.4498571 = phi i64 [ 1, %.lr.ph573 ], [ %177, %152 ]
  %gep576 = getelementptr float, ptr %invariant.gep575, i64 %.4498571
  %153 = load float, ptr %gep576, align 4, !tbaa !9
  %154 = fcmp oge float %153, 0.000000e+00
  %155 = fneg float %153
  %156 = select i1 %154, float %153, float %155
  %157 = fpext float %156 to double
  %158 = load float, ptr %150, align 4, !tbaa !9
  %159 = fpext float %158 to double
  %160 = getelementptr inbounds float, ptr %21, i64 %.4498571
  %161 = load float, ptr %160, align 4, !tbaa !9
  %162 = fpext float %161 to double
  %163 = call double @llvm.fmuladd.f64(double %157, double %159, double %162)
  %164 = fptrunc double %163 to float
  store float %164, ptr %160, align 4, !tbaa !9
  %165 = load float, ptr %gep576, align 4, !tbaa !9
  %166 = fcmp oge float %165, 0.000000e+00
  %167 = fneg float %165
  %168 = select i1 %166, float %165, float %167
  %169 = fpext float %168 to double
  %170 = getelementptr inbounds float, ptr %20, i64 %.4498571
  %171 = load float, ptr %170, align 4, !tbaa !9
  %172 = fpext float %171 to double
  %173 = load float, ptr %151, align 4, !tbaa !9
  %174 = fpext float %173 to double
  %175 = call double @llvm.fmuladd.f64(double %169, double %172, double %174)
  %176 = fptrunc double %175 to float
  store float %176, ptr %151, align 4, !tbaa !9
  %177 = add nuw nsw i64 %.4498571, 1
  %exitcond660.not = icmp eq i64 %177, %.3492580
  br i1 %exitcond660.not, label %._crit_edge574, label %152, !llvm.loop !20

._crit_edge574:                                   ; preds = %152, %.lr.ph582.._crit_edge574_crit_edge
  %178 = phi float [ %.pre671, %.lr.ph582.._crit_edge574_crit_edge ], [ %176, %152 ]
  %179 = mul i64 %.3492580, %144
  %180 = getelementptr inbounds float, ptr %19, i64 %179
  %181 = load float, ptr %180, align 4, !tbaa !9
  %182 = fcmp oge float %181, 0.000000e+00
  %183 = fneg float %181
  %184 = select i1 %182, float %181, float %183
  %185 = fpext float %184 to double
  %186 = getelementptr inbounds float, ptr %20, i64 %.3492580
  %187 = load float, ptr %186, align 4, !tbaa !9
  %188 = fpext float %187 to double
  %189 = getelementptr inbounds float, ptr %21, i64 %.3492580
  %190 = fpext float %178 to double
  %191 = call double @llvm.fmuladd.f64(double %185, double %188, double %190)
  %192 = fptrunc double %191 to float
  store float %192, ptr %189, align 4, !tbaa !9
  %193 = add nuw i64 %.3492580, 1
  %exitcond661.not = icmp eq i64 %.3492580, %147
  br i1 %exitcond661.not, label %.loopexit531, label %.lr.ph582, !llvm.loop !21

.loopexit530:                                     ; preds = %.lr.ph589, %.lr.ph595
  %exitcond662.not = icmp eq i64 %.4493593, %147
  br i1 %exitcond662.not, label %.loopexit531, label %.lr.ph595, !llvm.loop !22

.lr.ph595:                                        ; preds = %._crit_edge569.thread, %.loopexit530
  %.4493593 = phi i64 [ %210, %.loopexit530 ], [ 1, %._crit_edge569.thread ]
  %194 = mul nsw i64 %.4493593, %17
  %195 = getelementptr float, ptr %19, i64 %.4493593
  %196 = getelementptr float, ptr %195, i64 %194
  %197 = load float, ptr %196, align 4, !tbaa !9
  %198 = fcmp oge float %197, 0.000000e+00
  %199 = fneg float %197
  %200 = select i1 %198, float %197, float %199
  %201 = fpext float %200 to double
  %202 = getelementptr inbounds float, ptr %20, i64 %.4493593
  %203 = load float, ptr %202, align 4, !tbaa !9
  %204 = fpext float %203 to double
  %205 = getelementptr inbounds float, ptr %21, i64 %.4493593
  %206 = load float, ptr %205, align 4, !tbaa !9
  %207 = fpext float %206 to double
  %208 = call double @llvm.fmuladd.f64(double %201, double %204, double %207)
  %209 = fptrunc double %208 to float
  store float %209, ptr %205, align 4, !tbaa !9
  %210 = add nuw i64 %.4493593, 1
  %invariant.gep584 = getelementptr float, ptr %19, i64 %194
  %.not516586.not = icmp slt i64 %.4493593, %147
  br i1 %.not516586.not, label %.lr.ph589, label %.loopexit530

.lr.ph589:                                        ; preds = %.lr.ph595, %.lr.ph589
  %.5499587 = phi i64 [ %235, %.lr.ph589 ], [ %210, %.lr.ph595 ]
  %gep585 = getelementptr float, ptr %invariant.gep584, i64 %.5499587
  %211 = load float, ptr %gep585, align 4, !tbaa !9
  %212 = fcmp oge float %211, 0.000000e+00
  %213 = fneg float %211
  %214 = select i1 %212, float %211, float %213
  %215 = fpext float %214 to double
  %216 = load float, ptr %202, align 4, !tbaa !9
  %217 = fpext float %216 to double
  %218 = getelementptr inbounds float, ptr %21, i64 %.5499587
  %219 = load float, ptr %218, align 4, !tbaa !9
  %220 = fpext float %219 to double
  %221 = call double @llvm.fmuladd.f64(double %215, double %217, double %220)
  %222 = fptrunc double %221 to float
  store float %222, ptr %218, align 4, !tbaa !9
  %223 = load float, ptr %gep585, align 4, !tbaa !9
  %224 = fcmp oge float %223, 0.000000e+00
  %225 = fneg float %223
  %226 = select i1 %224, float %223, float %225
  %227 = fpext float %226 to double
  %228 = getelementptr inbounds float, ptr %20, i64 %.5499587
  %229 = load float, ptr %228, align 4, !tbaa !9
  %230 = fpext float %229 to double
  %231 = load float, ptr %205, align 4, !tbaa !9
  %232 = fpext float %231 to double
  %233 = call double @llvm.fmuladd.f64(double %227, double %230, double %232)
  %234 = fptrunc double %233 to float
  store float %234, ptr %205, align 4, !tbaa !9
  %235 = add nuw nsw i64 %.5499587, 1
  %.not516.not = icmp slt i64 %.5499587, %147
  br i1 %.not516.not, label %.lr.ph589, label %.loopexit530, !llvm.loop !23

.loopexit531:                                     ; preds = %._crit_edge574, %.loopexit530
  br i1 %.not514565, label %._crit_edge602, label %.lr.ph601.preheader

.lr.ph601.preheader:                              ; preds = %.loopexit531
  %xtraiter = and i64 %147, 3
  %236 = icmp ult i64 %147, 4
  br i1 %236, label %._crit_edge602.loopexit.unr-lcssa, label %.lr.ph601.preheader.new

.lr.ph601.preheader.new:                          ; preds = %.lr.ph601.preheader
  %unroll_iter = and i64 %147, 9223372036854775804
  br label %.lr.ph601

.lr.ph601:                                        ; preds = %.lr.ph601, %.lr.ph601.preheader.new
  %.1599 = phi float [ 0.000000e+00, %.lr.ph601.preheader.new ], [ %258, %.lr.ph601 ]
  %.6500598 = phi i64 [ 1, %.lr.ph601.preheader.new ], [ %259, %.lr.ph601 ]
  %niter = phi i64 [ 0, %.lr.ph601.preheader.new ], [ %niter.next.3, %.lr.ph601 ]
  %237 = getelementptr inbounds float, ptr %20, i64 %.6500598
  %238 = load float, ptr %237, align 4, !tbaa !9
  %239 = getelementptr inbounds float, ptr %21, i64 %.6500598
  %240 = load float, ptr %239, align 4, !tbaa !9
  %241 = call float @llvm.fmuladd.f32(float %238, float %240, float %.1599)
  %242 = getelementptr float, ptr %4, i64 %.6500598
  %243 = load float, ptr %242, align 4, !tbaa !9
  %244 = getelementptr float, ptr %7, i64 %.6500598
  %245 = load float, ptr %244, align 4, !tbaa !9
  %246 = call float @llvm.fmuladd.f32(float %243, float %245, float %241)
  %247 = add nuw nsw i64 %.6500598, 2
  %248 = getelementptr inbounds float, ptr %20, i64 %247
  %249 = load float, ptr %248, align 4, !tbaa !9
  %250 = getelementptr inbounds float, ptr %21, i64 %247
  %251 = load float, ptr %250, align 4, !tbaa !9
  %252 = call float @llvm.fmuladd.f32(float %249, float %251, float %246)
  %253 = add nuw i64 %.6500598, 3
  %254 = getelementptr inbounds float, ptr %20, i64 %253
  %255 = load float, ptr %254, align 4, !tbaa !9
  %256 = getelementptr inbounds float, ptr %21, i64 %253
  %257 = load float, ptr %256, align 4, !tbaa !9
  %258 = call float @llvm.fmuladd.f32(float %255, float %257, float %252)
  %259 = add nuw i64 %.6500598, 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 %._crit_edge602.loopexit.unr-lcssa, label %.lr.ph601, !llvm.loop !24

._crit_edge602.loopexit.unr-lcssa:                ; preds = %.lr.ph601, %.lr.ph601.preheader
  %.lcssa729.ph = phi float [ poison, %.lr.ph601.preheader ], [ %258, %.lr.ph601 ]
  %.1599.unr = phi float [ 0.000000e+00, %.lr.ph601.preheader ], [ %258, %.lr.ph601 ]
  %.6500598.unr = phi i64 [ 1, %.lr.ph601.preheader ], [ %259, %.lr.ph601 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge602, label %.lr.ph601.epil

.lr.ph601.epil:                                   ; preds = %._crit_edge602.loopexit.unr-lcssa, %.lr.ph601.epil
  %.1599.epil = phi float [ %264, %.lr.ph601.epil ], [ %.1599.unr, %._crit_edge602.loopexit.unr-lcssa ]
  %.6500598.epil = phi i64 [ %265, %.lr.ph601.epil ], [ %.6500598.unr, %._crit_edge602.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph601.epil ], [ 0, %._crit_edge602.loopexit.unr-lcssa ]
  %260 = getelementptr inbounds float, ptr %20, i64 %.6500598.epil
  %261 = load float, ptr %260, align 4, !tbaa !9
  %262 = getelementptr inbounds float, ptr %21, i64 %.6500598.epil
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = call float @llvm.fmuladd.f32(float %261, float %263, float %.1599.epil)
  %265 = add nuw i64 %.6500598.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 %._crit_edge602, label %.lr.ph601.epil, !llvm.loop !25

._crit_edge602:                                   ; preds = %._crit_edge602.loopexit.unr-lcssa, %.lr.ph601.epil, %146, %.loopexit531
  %.1.lcssa = phi float [ 0.000000e+00, %.loopexit531 ], [ 0.000000e+00, %146 ], [ %.lcssa729.ph, %._crit_edge602.loopexit.unr-lcssa ], [ %264, %.lr.ph601.epil ]
  %266 = sitofp i64 %147 to float
  %267 = fdiv float %.1.lcssa, %266
  %268 = mul nsw i64 %147, 3
  %269 = shl i64 %147, 1
  %.not519604.not = icmp slt i64 %269, %268
  br i1 %.not519604.not, label %.lr.ph607, label %._crit_edge608

.lr.ph607:                                        ; preds = %._crit_edge602
  %270 = or disjoint i64 %269, 1
  %271 = fneg float %267
  %min.iters.check710 = icmp ult i64 %147, 8
  br i1 %min.iters.check710, label %scalar.ph709.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph607
  %272 = shl i64 %147, 3
  %273 = add i64 %145, %272
  %diff.check = icmp ult i64 %273, 32
  %diff.check707 = icmp ult i64 %272, 32
  %conflict.rdx = or i1 %diff.check, %diff.check707
  br i1 %conflict.rdx, label %scalar.ph709.preheader, label %vector.ph711

vector.ph711:                                     ; preds = %vector.memcheck
  %n.vec713 = and i64 %147, -8
  %ind.end714 = add i64 %270, %n.vec713
  %broadcast.splatinsert = insertelement <4 x float> poison, float %271, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body716

vector.body716:                                   ; preds = %vector.body716, %vector.ph711
  %index717 = phi i64 [ 0, %vector.ph711 ], [ %index.next723, %vector.body716 ]
  %offset.idx718 = add i64 %270, %index717
  %274 = sub nsw i64 %offset.idx718, %269
  %275 = getelementptr inbounds float, ptr %20, i64 %274
  %276 = getelementptr inbounds i8, ptr %275, i64 16
  %wide.load719 = load <4 x float>, ptr %275, align 4, !tbaa !9
  %wide.load720 = load <4 x float>, ptr %276, align 4, !tbaa !9
  %277 = getelementptr inbounds float, ptr %21, i64 %274
  %278 = getelementptr inbounds i8, ptr %277, i64 16
  %wide.load721 = load <4 x float>, ptr %277, align 4, !tbaa !9
  %wide.load722 = load <4 x float>, ptr %278, align 4, !tbaa !9
  %279 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %wide.load719, <4 x float> %wide.load721, <4 x float> %broadcast.splat)
  %280 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %wide.load720, <4 x float> %wide.load722, <4 x float> %broadcast.splat)
  %281 = getelementptr inbounds float, ptr %21, i64 %offset.idx718
  %282 = getelementptr inbounds i8, ptr %281, i64 16
  store <4 x float> %279, ptr %281, align 4, !tbaa !9
  store <4 x float> %280, ptr %282, align 4, !tbaa !9
  %index.next723 = add nuw i64 %index717, 8
  %283 = icmp eq i64 %index.next723, %n.vec713
  br i1 %283, label %middle.block708, label %vector.body716, !llvm.loop !27

middle.block708:                                  ; preds = %vector.body716
  %cmp.n724 = icmp eq i64 %147, %n.vec713
  br i1 %cmp.n724, label %._crit_edge608, label %scalar.ph709.preheader

scalar.ph709.preheader:                           ; preds = %middle.block708, %vector.memcheck, %.lr.ph607
  %.7501605.ph = phi i64 [ %270, %vector.memcheck ], [ %270, %.lr.ph607 ], [ %ind.end714, %middle.block708 ]
  %284 = add i64 %268, %.7501605.ph
  %285 = and i64 %284, 1
  %lcmp.mod739.not.not = icmp eq i64 %285, 0
  br i1 %lcmp.mod739.not.not, label %scalar.ph709.prol, label %scalar.ph709.prol.loopexit

scalar.ph709.prol:                                ; preds = %scalar.ph709.preheader
  %286 = sub nsw i64 %.7501605.ph, %269
  %287 = getelementptr inbounds float, ptr %20, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !9
  %289 = getelementptr inbounds float, ptr %21, i64 %286
  %290 = load float, ptr %289, align 4, !tbaa !9
  %291 = call float @llvm.fmuladd.f32(float %288, float %290, float %271)
  %292 = getelementptr inbounds float, ptr %21, i64 %.7501605.ph
  store float %291, ptr %292, align 4, !tbaa !9
  %293 = add i64 %.7501605.ph, 1
  br label %scalar.ph709.prol.loopexit

scalar.ph709.prol.loopexit:                       ; preds = %scalar.ph709.prol, %scalar.ph709.preheader
  %.7501605.unr = phi i64 [ %.7501605.ph, %scalar.ph709.preheader ], [ %293, %scalar.ph709.prol ]
  %294 = icmp eq i64 %268, %.7501605.ph
  br i1 %294, label %._crit_edge608, label %scalar.ph709

scalar.ph709:                                     ; preds = %scalar.ph709.prol.loopexit, %scalar.ph709
  %.7501605 = phi i64 [ %310, %scalar.ph709 ], [ %.7501605.unr, %scalar.ph709.prol.loopexit ]
  %295 = sub nsw i64 %.7501605, %269
  %296 = getelementptr inbounds float, ptr %20, i64 %295
  %297 = load float, ptr %296, align 4, !tbaa !9
  %298 = getelementptr inbounds float, ptr %21, i64 %295
  %299 = load float, ptr %298, align 4, !tbaa !9
  %300 = call float @llvm.fmuladd.f32(float %297, float %299, float %271)
  %301 = getelementptr inbounds float, ptr %21, i64 %.7501605
  store float %300, ptr %301, align 4, !tbaa !9
  %302 = add i64 %.7501605, 1
  %303 = sub nsw i64 %302, %269
  %304 = getelementptr inbounds float, ptr %20, i64 %303
  %305 = load float, ptr %304, align 4, !tbaa !9
  %306 = getelementptr inbounds float, ptr %21, i64 %303
  %307 = load float, ptr %306, align 4, !tbaa !9
  %308 = call float @llvm.fmuladd.f32(float %305, float %307, float %271)
  %309 = getelementptr float, ptr %7, i64 %.7501605
  store float %308, ptr %309, align 4, !tbaa !9
  %310 = add i64 %.7501605, 2
  %exitcond664.not.1 = icmp eq i64 %302, %268
  br i1 %exitcond664.not.1, label %._crit_edge608, label %scalar.ph709, !llvm.loop !28

._crit_edge608:                                   ; preds = %scalar.ph709.prol.loopexit, %scalar.ph709, %middle.block708, %._crit_edge602
  %.idx = shl i64 %147, 3
  %311 = getelementptr i8, ptr %7, i64 %.idx
  %312 = call i32 @slassq_(ptr noundef nonnull %1, ptr noundef %311, ptr noundef nonnull @c__1, ptr noundef nonnull %15, ptr noundef nonnull %16) #7
  %313 = load float, ptr %15, align 4, !tbaa !9
  %314 = fpext float %313 to double
  %315 = load float, ptr %16, align 4, !tbaa !9
  %316 = load i64, ptr %1, align 8, !tbaa !5
  %317 = sitofp i64 %316 to float
  %318 = fdiv float %315, %317
  %319 = fpext float %318 to double
  %320 = call double @sqrt(double noundef %319) #7
  %321 = fmul double %320, %314
  %322 = fptrunc double %321 to float
  %323 = fmul float %267, %143
  %324 = fcmp ogt float %323, %322
  br i1 %324, label %432, label %325

325:                                              ; preds = %._crit_edge608
  %326 = load i64, ptr %1, align 8, !tbaa !5
  %.not520629 = icmp slt i64 %326, 1
  br i1 %.not520629, label %._crit_edge635, label %.lr.ph634

.lr.ph634:                                        ; preds = %325, %.loopexit
  %327 = phi i64 [ %422, %.loopexit ], [ %326, %325 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %.loopexit ], [ 2, %325 ]
  %.2632 = phi float [ %428, %.loopexit ], [ %267, %325 ]
  %.8502630 = phi i64 [ %429, %.loopexit ], [ 1, %325 ]
  %328 = mul nsw i64 %.8502630, %17
  %329 = getelementptr float, ptr %19, i64 %.8502630
  %330 = getelementptr float, ptr %329, i64 %328
  %331 = load float, ptr %330, align 4, !tbaa !9
  %332 = fcmp oge float %331, 0.000000e+00
  %333 = fneg float %331
  %334 = select i1 %332, float %331, float %333
  %335 = getelementptr inbounds float, ptr %20, i64 %.8502630
  %336 = load float, ptr %335, align 4, !tbaa !9
  %337 = add nsw i64 %327, -1
  %338 = sitofp i64 %337 to float
  %339 = fmul float %334, %338
  %340 = add nsw i64 %327, -2
  %341 = sitofp i64 %340 to float
  %342 = getelementptr inbounds float, ptr %21, i64 %.8502630
  %343 = load float, ptr %342, align 4, !tbaa !9
  %344 = fneg float %334
  %345 = call float @llvm.fmuladd.f32(float %344, float %336, float %343)
  %346 = fmul float %345, %341
  %347 = fmul float %336, %344
  %348 = fmul float %343, 2.000000e+00
  %349 = fmul float %336, %348
  %350 = call float @llvm.fmuladd.f32(float %347, float %336, float %349)
  %351 = sitofp i64 %327 to float
  %352 = fneg float %351
  %353 = call float @llvm.fmuladd.f32(float %352, float %.2632, float %350)
  %354 = fmul float %353, -4.000000e+00
  %355 = fmul float %339, %354
  %356 = call float @llvm.fmuladd.f32(float %346, float %346, float %355)
  %357 = fcmp ugt float %356, 0.000000e+00
  br i1 %357, label %359, label %358

358:                                              ; preds = %.lr.ph634
  store i64 -1, ptr %8, align 8, !tbaa !5
  br label %468

359:                                              ; preds = %.lr.ph634
  %360 = fmul float %353, -2.000000e+00
  %361 = fpext float %360 to double
  %362 = fpext float %346 to double
  %363 = fpext float %356 to double
  %364 = call double @sqrt(double noundef %363) #7
  %365 = fadd double %364, %362
  %366 = fdiv double %361, %365
  %367 = fptrunc double %366 to float
  %368 = load float, ptr %335, align 4, !tbaa !9
  %369 = fsub float %367, %368
  br i1 %.not509673, label %.preheader, label %370

370:                                              ; preds = %359
  %invariant.gep609 = getelementptr float, ptr %19, i64 %328
  br label %371

371:                                              ; preds = %370, %371
  %.0485612 = phi float [ 0.000000e+00, %370 ], [ %378, %371 ]
  %.5611 = phi i64 [ 1, %370 ], [ %382, %371 ]
  %gep610 = getelementptr float, ptr %invariant.gep609, i64 %.5611
  %372 = load float, ptr %gep610, align 4, !tbaa !9
  %373 = fcmp oge float %372, 0.000000e+00
  %374 = fneg float %372
  %375 = select i1 %373, float %372, float %374
  %376 = getelementptr inbounds float, ptr %20, i64 %.5611
  %377 = load float, ptr %376, align 4, !tbaa !9
  %378 = call float @llvm.fmuladd.f32(float %377, float %375, float %.0485612)
  %379 = getelementptr inbounds float, ptr %21, i64 %.5611
  %380 = load float, ptr %379, align 4, !tbaa !9
  %381 = call float @llvm.fmuladd.f32(float %369, float %375, float %380)
  store float %381, ptr %379, align 4, !tbaa !9
  %382 = add nuw i64 %.5611, 1
  %exitcond665.not = icmp eq i64 %382, %indvars.iv
  br i1 %exitcond665.not, label %383, label %371, !llvm.loop !29

383:                                              ; preds = %371
  %384 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %384, ptr %13, align 8, !tbaa !5
  %.not524.not613 = icmp slt i64 %.8502630, %384
  br i1 %.not524.not613, label %.lr.ph617, label %.loopexit

.lr.ph617:                                        ; preds = %383, %.lr.ph617
  %.1486615 = phi float [ %393, %.lr.ph617 ], [ %378, %383 ]
  %.6.in614 = phi i64 [ %.6, %.lr.ph617 ], [ %.8502630, %383 ]
  %.6 = add nuw nsw i64 %.6.in614, 1
  %385 = mul nsw i64 %.6, %17
  %386 = getelementptr float, ptr %329, i64 %385
  %387 = load float, ptr %386, align 4, !tbaa !9
  %388 = fcmp oge float %387, 0.000000e+00
  %389 = fneg float %387
  %390 = select i1 %388, float %387, float %389
  %391 = getelementptr float, ptr %4, i64 %.6.in614
  %392 = load float, ptr %391, align 4, !tbaa !9
  %393 = call float @llvm.fmuladd.f32(float %392, float %390, float %.1486615)
  %394 = getelementptr float, ptr %7, i64 %.6.in614
  %395 = load float, ptr %394, align 4, !tbaa !9
  %396 = call float @llvm.fmuladd.f32(float %369, float %390, float %395)
  store float %396, ptr %394, align 4, !tbaa !9
  %.not524.not = icmp slt i64 %.6, %384
  br i1 %.not524.not, label %.lr.ph617, label %.loopexit, !llvm.loop !30

.preheader:                                       ; preds = %359, %.preheader
  %.2487620 = phi float [ %405, %.preheader ], [ 0.000000e+00, %359 ]
  %.7619 = phi i64 [ %409, %.preheader ], [ 1, %359 ]
  %397 = mul nsw i64 %.7619, %17
  %398 = getelementptr float, ptr %329, i64 %397
  %399 = load float, ptr %398, align 4, !tbaa !9
  %400 = fcmp oge float %399, 0.000000e+00
  %401 = fneg float %399
  %402 = select i1 %400, float %399, float %401
  %403 = getelementptr inbounds float, ptr %20, i64 %.7619
  %404 = load float, ptr %403, align 4, !tbaa !9
  %405 = call float @llvm.fmuladd.f32(float %404, float %402, float %.2487620)
  %406 = getelementptr inbounds float, ptr %21, i64 %.7619
  %407 = load float, ptr %406, align 4, !tbaa !9
  %408 = call float @llvm.fmuladd.f32(float %369, float %402, float %407)
  store float %408, ptr %406, align 4, !tbaa !9
  %409 = add nuw i64 %.7619, 1
  %exitcond666.not = icmp eq i64 %409, %indvars.iv
  br i1 %exitcond666.not, label %410, label %.preheader, !llvm.loop !31

410:                                              ; preds = %.preheader
  %411 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %411, ptr %13, align 8, !tbaa !5
  %invariant.gep621 = getelementptr float, ptr %19, i64 %328
  %.not522.not623 = icmp slt i64 %.8502630, %411
  br i1 %.not522.not623, label %.lr.ph627, label %.loopexit

.lr.ph627:                                        ; preds = %410, %.lr.ph627
  %.3488625 = phi float [ %418, %.lr.ph627 ], [ %405, %410 ]
  %.8.in624 = phi i64 [ %.8, %.lr.ph627 ], [ %.8502630, %410 ]
  %.8 = add nuw nsw i64 %.8.in624, 1
  %gep622 = getelementptr float, ptr %invariant.gep621, i64 %.8
  %412 = load float, ptr %gep622, align 4, !tbaa !9
  %413 = fcmp oge float %412, 0.000000e+00
  %414 = fneg float %412
  %415 = select i1 %413, float %412, float %414
  %416 = getelementptr float, ptr %4, i64 %.8.in624
  %417 = load float, ptr %416, align 4, !tbaa !9
  %418 = call float @llvm.fmuladd.f32(float %417, float %415, float %.3488625)
  %419 = getelementptr float, ptr %7, i64 %.8.in624
  %420 = load float, ptr %419, align 4, !tbaa !9
  %421 = call float @llvm.fmuladd.f32(float %369, float %415, float %420)
  store float %421, ptr %419, align 4, !tbaa !9
  %.not522.not = icmp slt i64 %.8, %411
  br i1 %.not522.not, label %.lr.ph627, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %.lr.ph617, %.lr.ph627, %383, %410
  %422 = phi i64 [ %411, %410 ], [ %384, %383 ], [ %411, %.lr.ph627 ], [ %384, %.lr.ph617 ]
  %.4 = phi float [ %405, %410 ], [ %378, %383 ], [ %418, %.lr.ph627 ], [ %393, %.lr.ph617 ]
  %423 = load float, ptr %342, align 4, !tbaa !9
  %424 = fadd float %.4, %423
  %425 = fmul float %369, %424
  %426 = sitofp i64 %422 to float
  %427 = fdiv float %425, %426
  %428 = fadd float %.2632, %427
  store float %367, ptr %335, align 4, !tbaa !9
  %429 = add nuw nsw i64 %.8502630, 1
  %.not520.not = icmp slt i64 %.8502630, %326
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  br i1 %.not520.not, label %.lr.ph634, label %._crit_edge635, !llvm.loop !33

._crit_edge635:                                   ; preds = %.loopexit, %325
  %430 = phi i64 [ %326, %325 ], [ %422, %.loopexit ]
  %.2.lcssa = phi float [ %267, %325 ], [ %428, %.loopexit ]
  %431 = add nuw nsw i64 %.0483637, 1
  %exitcond667.not = icmp eq i64 %431, 101
  br i1 %exitcond667.not, label %432, label %146, !llvm.loop !34

432:                                              ; preds = %._crit_edge635, %._crit_edge608
  %.3 = phi float [ %267, %._crit_edge608 ], [ %.2.lcssa, %._crit_edge635 ]
  %433 = call double @slamch_(ptr noundef nonnull @.str.3) #7
  %434 = fptrunc double %433 to float
  %435 = fdiv float 1.000000e+00, %434
  %436 = fpext float %.3 to double
  %437 = call double @sqrt(double noundef %436) #7
  %438 = fdiv double 1.000000e+00, %437
  %439 = fptrunc double %438 to float
  %440 = call double @slamch_(ptr noundef nonnull @.str.4) #7
  %441 = fptrunc double %440 to float
  store float %441, ptr %14, align 4, !tbaa !9
  %442 = fpext float %441 to double
  %443 = call double @log(double noundef %442) #7
  %444 = load i64, ptr %1, align 8, !tbaa !5
  %.not525638 = icmp slt i64 %444, 1
  br i1 %.not525638, label %._crit_edge644, label %.lr.ph643

.lr.ph643:                                        ; preds = %432
  %445 = fdiv double 1.000000e+00, %443
  %446 = fptrunc double %445 to float
  %447 = fpext float %446 to double
  br label %448

448:                                              ; preds = %.lr.ph643, %448
  %.0481641 = phi float [ 0.000000e+00, %.lr.ph643 ], [ %461, %448 ]
  %.0482640 = phi float [ %435, %.lr.ph643 ], [ %459, %448 ]
  %.9639 = phi i64 [ 1, %.lr.ph643 ], [ %462, %448 ]
  %449 = getelementptr inbounds float, ptr %20, i64 %.9639
  %450 = load float, ptr %449, align 4, !tbaa !9
  %451 = fmul float %450, %439
  %452 = fpext float %451 to double
  %453 = call double @log(double noundef %452) #7
  %454 = fmul double %453, %447
  %455 = fptosi double %454 to i64
  store i64 %455, ptr %13, align 8, !tbaa !5
  %456 = call double @pow_ri(ptr noundef nonnull %14, ptr noundef nonnull %13) #7
  %457 = fptrunc double %456 to float
  store float %457, ptr %449, align 4, !tbaa !9
  %458 = fcmp ole float %.0482640, %457
  %459 = select i1 %458, float %.0482640, float %457
  %460 = fcmp oge float %.0481641, %457
  %461 = select i1 %460, float %.0481641, float %457
  %462 = add nuw nsw i64 %.9639, 1
  %.not525.not = icmp slt i64 %.9639, %444
  br i1 %.not525.not, label %448, label %._crit_edge644, !llvm.loop !35

._crit_edge644:                                   ; preds = %448, %432
  %.0482.lcssa = phi float [ %435, %432 ], [ %459, %448 ]
  %.0481.lcssa = phi float [ 0.000000e+00, %432 ], [ %461, %448 ]
  %463 = fcmp oge float %.0482.lcssa, %434
  %464 = select i1 %463, float %.0482.lcssa, float %434
  %465 = fcmp ole float %.0481.lcssa, %435
  %466 = select i1 %465, float %.0481.lcssa, float %435
  %467 = fdiv float %464, %466
  store float %467, ptr %5, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %._crit_edge644, %358, %39, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  ret i32 0
}

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare double @pow_ri(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #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 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind }

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

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


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