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

; 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 @dsyequb_(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 double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %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 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 double, 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 double, 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 double, 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 %1242

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 double 0.000000e+00, ptr %106, align 8, !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 double 1.000000e+00, ptr %111, align 8, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1242

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 double, ptr %120, i64 %121
  store double 0.000000e+00, ptr %122, align 8, !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 double 0.000000e+00, ptr %127, align 8, !tbaa !11
  %128 = load i64, ptr %36, align 8, !tbaa !9
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %310

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 = %306, %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 %309

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 = %240, %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 %243

144:                                              ; preds = %140
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = load i64, ptr %28, align 8, !tbaa !9
  %147 = getelementptr inbounds double, ptr %145, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !11
  store double %148, ptr %25, align 8, !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 double, ptr %149, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !11
  store double %156, ptr %24, align 8, !tbaa !11
  %157 = load double, ptr %24, align 8, !tbaa !11
  %158 = fcmp oge double %157, 0.000000e+00
  br i1 %158, label %159, label %161

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

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

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

169:                                              ; preds = %164
  %170 = load double, ptr %25, align 8, !tbaa !11
  br label %173

171:                                              ; preds = %164
  %172 = load double, ptr %26, align 8, !tbaa !11
  br label %173

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

192:                                              ; preds = %173
  %193 = load double, ptr %24, align 8, !tbaa !11
  br label %197

194:                                              ; preds = %173
  %195 = load double, ptr %24, align 8, !tbaa !11
  %196 = fneg double %195
  br label %197

197:                                              ; preds = %194, %192
  %198 = phi double [ %193, %192 ], [ %196, %194 ]
  store double %198, ptr %26, align 8, !tbaa !11
  %199 = load double, ptr %25, align 8, !tbaa !11
  %200 = load double, ptr %26, align 8, !tbaa !11
  %201 = fcmp oge double %199, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %197
  %203 = load double, ptr %25, align 8, !tbaa !11
  br label %206

204:                                              ; preds = %197
  %205 = load double, ptr %26, align 8, !tbaa !11
  br label %206

206:                                              ; preds = %204, %202
  %207 = phi double [ %203, %202 ], [ %205, %204 ]
  %208 = load ptr, ptr %15, align 8, !tbaa !5
  %209 = load i64, ptr %29, align 8, !tbaa !9
  %210 = getelementptr inbounds double, ptr %208, i64 %209
  store double %207, ptr %210, align 8, !tbaa !11
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = load double, ptr %211, align 8, !tbaa !11
  store double %212, ptr %25, align 8, !tbaa !11
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = load i64, ptr %28, align 8, !tbaa !9
  %215 = load i64, ptr %29, align 8, !tbaa !9
  %216 = load i64, ptr %20, align 8, !tbaa !9
  %217 = mul nsw i64 %215, %216
  %218 = add nsw i64 %214, %217
  %219 = getelementptr inbounds double, ptr %213, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !11
  store double %220, ptr %24, align 8, !tbaa !11
  %221 = load double, ptr %24, align 8, !tbaa !11
  %222 = fcmp oge double %221, 0.000000e+00
  br i1 %222, label %223, label %225

223:                                              ; preds = %206
  %224 = load double, ptr %24, align 8, !tbaa !11
  br label %228

225:                                              ; preds = %206
  %226 = load double, ptr %24, align 8, !tbaa !11
  %227 = fneg double %226
  br label %228

228:                                              ; preds = %225, %223
  %229 = phi double [ %224, %223 ], [ %227, %225 ]
  store double %229, ptr %26, align 8, !tbaa !11
  %230 = load double, ptr %25, align 8, !tbaa !11
  %231 = load double, ptr %26, align 8, !tbaa !11
  %232 = fcmp oge double %230, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %228
  %234 = load double, ptr %25, align 8, !tbaa !11
  br label %237

235:                                              ; preds = %228
  %236 = load double, ptr %26, align 8, !tbaa !11
  br label %237

237:                                              ; preds = %235, %233
  %238 = phi double [ %234, %233 ], [ %236, %235 ]
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  store double %238, ptr %239, align 8, !tbaa !11
  br label %240

240:                                              ; preds = %237
  %241 = load i64, ptr %28, align 8, !tbaa !9
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %28, align 8, !tbaa !9
  br label %140, !llvm.loop !15

243:                                              ; preds = %140
  %244 = load ptr, ptr %15, align 8, !tbaa !5
  %245 = load i64, ptr %29, align 8, !tbaa !9
  %246 = getelementptr inbounds double, ptr %244, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !11
  store double %247, ptr %25, align 8, !tbaa !11
  %248 = load ptr, ptr %13, align 8, !tbaa !5
  %249 = load i64, ptr %29, align 8, !tbaa !9
  %250 = load i64, ptr %29, align 8, !tbaa !9
  %251 = load i64, ptr %20, align 8, !tbaa !9
  %252 = mul nsw i64 %250, %251
  %253 = add nsw i64 %249, %252
  %254 = getelementptr inbounds double, ptr %248, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !11
  store double %255, ptr %24, align 8, !tbaa !11
  %256 = load double, ptr %24, align 8, !tbaa !11
  %257 = fcmp oge double %256, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %243
  %259 = load double, ptr %24, align 8, !tbaa !11
  br label %263

260:                                              ; preds = %243
  %261 = load double, ptr %24, align 8, !tbaa !11
  %262 = fneg double %261
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi double [ %259, %258 ], [ %262, %260 ]
  store double %264, ptr %26, align 8, !tbaa !11
  %265 = load double, ptr %25, align 8, !tbaa !11
  %266 = load double, ptr %26, align 8, !tbaa !11
  %267 = fcmp oge double %265, %266
  br i1 %267, label %268, label %270

268:                                              ; preds = %263
  %269 = load double, ptr %25, align 8, !tbaa !11
  br label %272

270:                                              ; preds = %263
  %271 = load double, ptr %26, align 8, !tbaa !11
  br label %272

272:                                              ; preds = %270, %268
  %273 = phi double [ %269, %268 ], [ %271, %270 ]
  %274 = load ptr, ptr %15, align 8, !tbaa !5
  %275 = load i64, ptr %29, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %274, i64 %275
  store double %273, ptr %276, align 8, !tbaa !11
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = load double, ptr %277, align 8, !tbaa !11
  store double %278, ptr %25, align 8, !tbaa !11
  %279 = load ptr, ptr %13, align 8, !tbaa !5
  %280 = load i64, ptr %29, align 8, !tbaa !9
  %281 = load i64, ptr %29, align 8, !tbaa !9
  %282 = load i64, ptr %20, align 8, !tbaa !9
  %283 = mul nsw i64 %281, %282
  %284 = add nsw i64 %280, %283
  %285 = getelementptr inbounds double, ptr %279, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !11
  store double %286, ptr %24, align 8, !tbaa !11
  %287 = load double, ptr %24, align 8, !tbaa !11
  %288 = fcmp oge double %287, 0.000000e+00
  br i1 %288, label %289, label %291

289:                                              ; preds = %272
  %290 = load double, ptr %24, align 8, !tbaa !11
  br label %294

291:                                              ; preds = %272
  %292 = load double, ptr %24, align 8, !tbaa !11
  %293 = fneg double %292
  br label %294

294:                                              ; preds = %291, %289
  %295 = phi double [ %290, %289 ], [ %293, %291 ]
  store double %295, ptr %26, align 8, !tbaa !11
  %296 = load double, ptr %25, align 8, !tbaa !11
  %297 = load double, ptr %26, align 8, !tbaa !11
  %298 = fcmp oge double %296, %297
  br i1 %298, label %299, label %301

299:                                              ; preds = %294
  %300 = load double, ptr %25, align 8, !tbaa !11
  br label %303

301:                                              ; preds = %294
  %302 = load double, ptr %26, align 8, !tbaa !11
  br label %303

303:                                              ; preds = %301, %299
  %304 = phi double [ %300, %299 ], [ %302, %301 ]
  %305 = load ptr, ptr %17, align 8, !tbaa !5
  store double %304, ptr %305, align 8, !tbaa !11
  br label %306

306:                                              ; preds = %303
  %307 = load i64, ptr %29, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %29, align 8, !tbaa !9
  br label %133, !llvm.loop !16

309:                                              ; preds = %133
  br label %492

310:                                              ; preds = %126
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  store i64 %312, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %488, %310
  %314 = load i64, ptr %29, align 8, !tbaa !9
  %315 = load i64, ptr %22, align 8, !tbaa !9
  %316 = icmp sle i64 %314, %315
  br i1 %316, label %317, label %491

317:                                              ; preds = %313
  %318 = load ptr, ptr %15, align 8, !tbaa !5
  %319 = load i64, ptr %29, align 8, !tbaa !9
  %320 = getelementptr inbounds double, ptr %318, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  store double %321, ptr %25, align 8, !tbaa !11
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i64, ptr %29, align 8, !tbaa !9
  %324 = load i64, ptr %29, align 8, !tbaa !9
  %325 = load i64, ptr %20, align 8, !tbaa !9
  %326 = mul nsw i64 %324, %325
  %327 = add nsw i64 %323, %326
  %328 = getelementptr inbounds double, ptr %322, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !11
  store double %329, ptr %24, align 8, !tbaa !11
  %330 = load double, ptr %24, align 8, !tbaa !11
  %331 = fcmp oge double %330, 0.000000e+00
  br i1 %331, label %332, label %334

332:                                              ; preds = %317
  %333 = load double, ptr %24, align 8, !tbaa !11
  br label %337

334:                                              ; preds = %317
  %335 = load double, ptr %24, align 8, !tbaa !11
  %336 = fneg double %335
  br label %337

337:                                              ; preds = %334, %332
  %338 = phi double [ %333, %332 ], [ %336, %334 ]
  store double %338, ptr %26, align 8, !tbaa !11
  %339 = load double, ptr %25, align 8, !tbaa !11
  %340 = load double, ptr %26, align 8, !tbaa !11
  %341 = fcmp oge double %339, %340
  br i1 %341, label %342, label %344

342:                                              ; preds = %337
  %343 = load double, ptr %25, align 8, !tbaa !11
  br label %346

344:                                              ; preds = %337
  %345 = load double, ptr %26, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %344, %342
  %347 = phi double [ %343, %342 ], [ %345, %344 ]
  %348 = load ptr, ptr %15, align 8, !tbaa !5
  %349 = load i64, ptr %29, align 8, !tbaa !9
  %350 = getelementptr inbounds double, ptr %348, i64 %349
  store double %347, ptr %350, align 8, !tbaa !11
  %351 = load ptr, ptr %17, align 8, !tbaa !5
  %352 = load double, ptr %351, align 8, !tbaa !11
  store double %352, ptr %25, align 8, !tbaa !11
  %353 = load ptr, ptr %13, align 8, !tbaa !5
  %354 = load i64, ptr %29, align 8, !tbaa !9
  %355 = load i64, ptr %29, align 8, !tbaa !9
  %356 = load i64, ptr %20, align 8, !tbaa !9
  %357 = mul nsw i64 %355, %356
  %358 = add nsw i64 %354, %357
  %359 = getelementptr inbounds double, ptr %353, i64 %358
  %360 = load double, ptr %359, align 8, !tbaa !11
  store double %360, ptr %24, align 8, !tbaa !11
  %361 = load double, ptr %24, align 8, !tbaa !11
  %362 = fcmp oge double %361, 0.000000e+00
  br i1 %362, label %363, label %365

363:                                              ; preds = %346
  %364 = load double, ptr %24, align 8, !tbaa !11
  br label %368

365:                                              ; preds = %346
  %366 = load double, ptr %24, align 8, !tbaa !11
  %367 = fneg double %366
  br label %368

368:                                              ; preds = %365, %363
  %369 = phi double [ %364, %363 ], [ %367, %365 ]
  store double %369, ptr %26, align 8, !tbaa !11
  %370 = load double, ptr %25, align 8, !tbaa !11
  %371 = load double, ptr %26, align 8, !tbaa !11
  %372 = fcmp oge double %370, %371
  br i1 %372, label %373, label %375

373:                                              ; preds = %368
  %374 = load double, ptr %25, align 8, !tbaa !11
  br label %377

375:                                              ; preds = %368
  %376 = load double, ptr %26, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %375, %373
  %378 = phi double [ %374, %373 ], [ %376, %375 ]
  %379 = load ptr, ptr %17, align 8, !tbaa !5
  store double %378, ptr %379, align 8, !tbaa !11
  %380 = load ptr, ptr %12, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  store i64 %381, ptr %23, align 8, !tbaa !9
  %382 = load i64, ptr %29, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %28, align 8, !tbaa !9
  br label %384

384:                                              ; preds = %484, %377
  %385 = load i64, ptr %28, align 8, !tbaa !9
  %386 = load i64, ptr %23, align 8, !tbaa !9
  %387 = icmp sle i64 %385, %386
  br i1 %387, label %388, label %487

388:                                              ; preds = %384
  %389 = load ptr, ptr %15, align 8, !tbaa !5
  %390 = load i64, ptr %28, align 8, !tbaa !9
  %391 = getelementptr inbounds double, ptr %389, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !11
  store double %392, ptr %25, align 8, !tbaa !11
  %393 = load ptr, ptr %13, align 8, !tbaa !5
  %394 = load i64, ptr %28, align 8, !tbaa !9
  %395 = load i64, ptr %29, align 8, !tbaa !9
  %396 = load i64, ptr %20, align 8, !tbaa !9
  %397 = mul nsw i64 %395, %396
  %398 = add nsw i64 %394, %397
  %399 = getelementptr inbounds double, ptr %393, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  store double %400, ptr %24, align 8, !tbaa !11
  %401 = load double, ptr %24, align 8, !tbaa !11
  %402 = fcmp oge double %401, 0.000000e+00
  br i1 %402, label %403, label %405

403:                                              ; preds = %388
  %404 = load double, ptr %24, align 8, !tbaa !11
  br label %408

405:                                              ; preds = %388
  %406 = load double, ptr %24, align 8, !tbaa !11
  %407 = fneg double %406
  br label %408

408:                                              ; preds = %405, %403
  %409 = phi double [ %404, %403 ], [ %407, %405 ]
  store double %409, ptr %26, align 8, !tbaa !11
  %410 = load double, ptr %25, align 8, !tbaa !11
  %411 = load double, ptr %26, align 8, !tbaa !11
  %412 = fcmp oge double %410, %411
  br i1 %412, label %413, label %415

413:                                              ; preds = %408
  %414 = load double, ptr %25, align 8, !tbaa !11
  br label %417

415:                                              ; preds = %408
  %416 = load double, ptr %26, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %415, %413
  %418 = phi double [ %414, %413 ], [ %416, %415 ]
  %419 = load ptr, ptr %15, align 8, !tbaa !5
  %420 = load i64, ptr %28, align 8, !tbaa !9
  %421 = getelementptr inbounds double, ptr %419, i64 %420
  store double %418, ptr %421, align 8, !tbaa !11
  %422 = load ptr, ptr %15, align 8, !tbaa !5
  %423 = load i64, ptr %29, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !11
  store double %425, ptr %25, align 8, !tbaa !11
  %426 = load ptr, ptr %13, align 8, !tbaa !5
  %427 = load i64, ptr %28, align 8, !tbaa !9
  %428 = load i64, ptr %29, align 8, !tbaa !9
  %429 = load i64, ptr %20, align 8, !tbaa !9
  %430 = mul nsw i64 %428, %429
  %431 = add nsw i64 %427, %430
  %432 = getelementptr inbounds double, ptr %426, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !11
  store double %433, ptr %24, align 8, !tbaa !11
  %434 = load double, ptr %24, align 8, !tbaa !11
  %435 = fcmp oge double %434, 0.000000e+00
  br i1 %435, label %436, label %438

436:                                              ; preds = %417
  %437 = load double, ptr %24, align 8, !tbaa !11
  br label %441

438:                                              ; preds = %417
  %439 = load double, ptr %24, align 8, !tbaa !11
  %440 = fneg double %439
  br label %441

441:                                              ; preds = %438, %436
  %442 = phi double [ %437, %436 ], [ %440, %438 ]
  store double %442, ptr %26, align 8, !tbaa !11
  %443 = load double, ptr %25, align 8, !tbaa !11
  %444 = load double, ptr %26, align 8, !tbaa !11
  %445 = fcmp oge double %443, %444
  br i1 %445, label %446, label %448

446:                                              ; preds = %441
  %447 = load double, ptr %25, align 8, !tbaa !11
  br label %450

448:                                              ; preds = %441
  %449 = load double, ptr %26, align 8, !tbaa !11
  br label %450

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

467:                                              ; preds = %450
  %468 = load double, ptr %24, align 8, !tbaa !11
  br label %472

469:                                              ; preds = %450
  %470 = load double, ptr %24, align 8, !tbaa !11
  %471 = fneg double %470
  br label %472

472:                                              ; preds = %469, %467
  %473 = phi double [ %468, %467 ], [ %471, %469 ]
  store double %473, ptr %26, align 8, !tbaa !11
  %474 = load double, ptr %25, align 8, !tbaa !11
  %475 = load double, ptr %26, align 8, !tbaa !11
  %476 = fcmp oge double %474, %475
  br i1 %476, label %477, label %479

477:                                              ; preds = %472
  %478 = load double, ptr %25, align 8, !tbaa !11
  br label %481

479:                                              ; preds = %472
  %480 = load double, ptr %26, align 8, !tbaa !11
  br label %481

481:                                              ; preds = %479, %477
  %482 = phi double [ %478, %477 ], [ %480, %479 ]
  %483 = load ptr, ptr %17, align 8, !tbaa !5
  store double %482, ptr %483, align 8, !tbaa !11
  br label %484

484:                                              ; preds = %481
  %485 = load i64, ptr %28, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %28, align 8, !tbaa !9
  br label %384, !llvm.loop !17

487:                                              ; preds = %384
  br label %488

488:                                              ; preds = %487
  %489 = load i64, ptr %29, align 8, !tbaa !9
  %490 = add nsw i64 %489, 1
  store i64 %490, ptr %29, align 8, !tbaa !9
  br label %313, !llvm.loop !18

491:                                              ; preds = %313
  br label %492

492:                                              ; preds = %491, %309
  %493 = load ptr, ptr %12, align 8, !tbaa !5
  %494 = load i64, ptr %493, align 8, !tbaa !9
  store i64 %494, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %495

495:                                              ; preds = %508, %492
  %496 = load i64, ptr %29, align 8, !tbaa !9
  %497 = load i64, ptr %22, align 8, !tbaa !9
  %498 = icmp sle i64 %496, %497
  br i1 %498, label %499, label %511

499:                                              ; preds = %495
  %500 = load ptr, ptr %15, align 8, !tbaa !5
  %501 = load i64, ptr %29, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %500, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  %504 = fdiv double 1.000000e+00, %503
  %505 = load ptr, ptr %15, align 8, !tbaa !5
  %506 = load i64, ptr %29, align 8, !tbaa !9
  %507 = getelementptr inbounds double, ptr %505, i64 %506
  store double %504, ptr %507, align 8, !tbaa !11
  br label %508

508:                                              ; preds = %499
  %509 = load i64, ptr %29, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  store i64 %510, ptr %29, align 8, !tbaa !9
  br label %495, !llvm.loop !19

511:                                              ; preds = %495
  %512 = load ptr, ptr %12, align 8, !tbaa !5
  %513 = load i64, ptr %512, align 8, !tbaa !9
  %514 = sitofp i64 %513 to double
  %515 = fmul double %514, 2.000000e+00
  %516 = call double @sqrt(double noundef %515) #5
  %517 = fdiv double 1.000000e+00, %516
  store double %517, ptr %39, align 8, !tbaa !11
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %1153, %511
  %519 = load i64, ptr %41, align 8, !tbaa !9
  %520 = icmp sle i64 %519, 100
  br i1 %520, label %521, label %1156

521:                                              ; preds = %518
  store double 0.000000e+00, ptr %44, align 8, !tbaa !11
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = load i64, ptr %522, align 8, !tbaa !9
  store i64 %523, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %532, %521
  %525 = load i64, ptr %28, align 8, !tbaa !9
  %526 = load i64, ptr %22, align 8, !tbaa !9
  %527 = icmp sle i64 %525, %526
  br i1 %527, label %528, label %535

528:                                              ; preds = %524
  %529 = load ptr, ptr %18, align 8, !tbaa !5
  %530 = load i64, ptr %28, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  store double 0.000000e+00, ptr %531, align 8, !tbaa !11
  br label %532

532:                                              ; preds = %528
  %533 = load i64, ptr %28, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  store i64 %534, ptr %28, align 8, !tbaa !9
  br label %524, !llvm.loop !20

535:                                              ; preds = %524
  %536 = load i64, ptr %36, align 8, !tbaa !9
  %537 = icmp ne i64 %536, 0
  br i1 %537, label %538, label %656

538:                                              ; preds = %535
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  store i64 %540, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %652, %538
  %542 = load i64, ptr %29, align 8, !tbaa !9
  %543 = load i64, ptr %22, align 8, !tbaa !9
  %544 = icmp sle i64 %542, %543
  br i1 %544, label %545, label %655

545:                                              ; preds = %541
  %546 = load i64, ptr %29, align 8, !tbaa !9
  %547 = sub nsw i64 %546, 1
  store i64 %547, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %622, %545
  %549 = load i64, ptr %28, align 8, !tbaa !9
  %550 = load i64, ptr %23, align 8, !tbaa !9
  %551 = icmp sle i64 %549, %550
  br i1 %551, label %552, label %625

552:                                              ; preds = %548
  %553 = load ptr, ptr %13, align 8, !tbaa !5
  %554 = load i64, ptr %28, align 8, !tbaa !9
  %555 = load i64, ptr %29, align 8, !tbaa !9
  %556 = load i64, ptr %20, align 8, !tbaa !9
  %557 = mul nsw i64 %555, %556
  %558 = add nsw i64 %554, %557
  %559 = getelementptr inbounds double, ptr %553, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !11
  store double %560, ptr %24, align 8, !tbaa !11
  %561 = load double, ptr %24, align 8, !tbaa !11
  %562 = fcmp oge double %561, 0.000000e+00
  br i1 %562, label %563, label %565

563:                                              ; preds = %552
  %564 = load double, ptr %24, align 8, !tbaa !11
  br label %568

565:                                              ; preds = %552
  %566 = load double, ptr %24, align 8, !tbaa !11
  %567 = fneg double %566
  br label %568

568:                                              ; preds = %565, %563
  %569 = phi double [ %564, %563 ], [ %567, %565 ]
  store double %569, ptr %30, align 8, !tbaa !11
  %570 = load ptr, ptr %13, align 8, !tbaa !5
  %571 = load i64, ptr %28, align 8, !tbaa !9
  %572 = load i64, ptr %29, align 8, !tbaa !9
  %573 = load i64, ptr %20, align 8, !tbaa !9
  %574 = mul nsw i64 %572, %573
  %575 = add nsw i64 %571, %574
  %576 = getelementptr inbounds double, ptr %570, i64 %575
  %577 = load double, ptr %576, align 8, !tbaa !11
  store double %577, ptr %24, align 8, !tbaa !11
  %578 = load double, ptr %24, align 8, !tbaa !11
  %579 = fcmp oge double %578, 0.000000e+00
  br i1 %579, label %580, label %582

580:                                              ; preds = %568
  %581 = load double, ptr %24, align 8, !tbaa !11
  br label %585

582:                                              ; preds = %568
  %583 = load double, ptr %24, align 8, !tbaa !11
  %584 = fneg double %583
  br label %585

585:                                              ; preds = %582, %580
  %586 = phi double [ %581, %580 ], [ %584, %582 ]
  %587 = load ptr, ptr %15, align 8, !tbaa !5
  %588 = load i64, ptr %29, align 8, !tbaa !9
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !11
  %591 = load ptr, ptr %18, align 8, !tbaa !5
  %592 = load i64, ptr %28, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = call double @llvm.fmuladd.f64(double %586, double %590, double %594)
  store double %595, ptr %593, align 8, !tbaa !11
  %596 = load ptr, ptr %13, align 8, !tbaa !5
  %597 = load i64, ptr %28, align 8, !tbaa !9
  %598 = load i64, ptr %29, align 8, !tbaa !9
  %599 = load i64, ptr %20, align 8, !tbaa !9
  %600 = mul nsw i64 %598, %599
  %601 = add nsw i64 %597, %600
  %602 = getelementptr inbounds double, ptr %596, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  store double %603, ptr %24, align 8, !tbaa !11
  %604 = load double, ptr %24, align 8, !tbaa !11
  %605 = fcmp oge double %604, 0.000000e+00
  br i1 %605, label %606, label %608

606:                                              ; preds = %585
  %607 = load double, ptr %24, align 8, !tbaa !11
  br label %611

608:                                              ; preds = %585
  %609 = load double, ptr %24, align 8, !tbaa !11
  %610 = fneg double %609
  br label %611

611:                                              ; preds = %608, %606
  %612 = phi double [ %607, %606 ], [ %610, %608 ]
  %613 = load ptr, ptr %15, align 8, !tbaa !5
  %614 = load i64, ptr %28, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %613, i64 %614
  %616 = load double, ptr %615, align 8, !tbaa !11
  %617 = load ptr, ptr %18, align 8, !tbaa !5
  %618 = load i64, ptr %29, align 8, !tbaa !9
  %619 = getelementptr inbounds double, ptr %617, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = call double @llvm.fmuladd.f64(double %612, double %616, double %620)
  store double %621, ptr %619, align 8, !tbaa !11
  br label %622

622:                                              ; preds = %611
  %623 = load i64, ptr %28, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  store i64 %624, ptr %28, align 8, !tbaa !9
  br label %548, !llvm.loop !21

625:                                              ; preds = %548
  %626 = load ptr, ptr %13, align 8, !tbaa !5
  %627 = load i64, ptr %29, align 8, !tbaa !9
  %628 = load i64, ptr %29, align 8, !tbaa !9
  %629 = load i64, ptr %20, align 8, !tbaa !9
  %630 = mul nsw i64 %628, %629
  %631 = add nsw i64 %627, %630
  %632 = getelementptr inbounds double, ptr %626, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !11
  store double %633, ptr %24, align 8, !tbaa !11
  %634 = load double, ptr %24, align 8, !tbaa !11
  %635 = fcmp oge double %634, 0.000000e+00
  br i1 %635, label %636, label %638

636:                                              ; preds = %625
  %637 = load double, ptr %24, align 8, !tbaa !11
  br label %641

638:                                              ; preds = %625
  %639 = load double, ptr %24, align 8, !tbaa !11
  %640 = fneg double %639
  br label %641

641:                                              ; preds = %638, %636
  %642 = phi double [ %637, %636 ], [ %640, %638 ]
  %643 = load ptr, ptr %15, align 8, !tbaa !5
  %644 = load i64, ptr %29, align 8, !tbaa !9
  %645 = getelementptr inbounds double, ptr %643, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !11
  %647 = load ptr, ptr %18, align 8, !tbaa !5
  %648 = load i64, ptr %29, align 8, !tbaa !9
  %649 = getelementptr inbounds double, ptr %647, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !11
  %651 = call double @llvm.fmuladd.f64(double %642, double %646, double %650)
  store double %651, ptr %649, align 8, !tbaa !11
  br label %652

652:                                              ; preds = %641
  %653 = load i64, ptr %29, align 8, !tbaa !9
  %654 = add nsw i64 %653, 1
  store i64 %654, ptr %29, align 8, !tbaa !9
  br label %541, !llvm.loop !22

655:                                              ; preds = %541
  br label %776

656:                                              ; preds = %535
  %657 = load ptr, ptr %12, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  store i64 %658, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %659

659:                                              ; preds = %772, %656
  %660 = load i64, ptr %29, align 8, !tbaa !9
  %661 = load i64, ptr %22, align 8, !tbaa !9
  %662 = icmp sle i64 %660, %661
  br i1 %662, label %663, label %775

663:                                              ; preds = %659
  %664 = load ptr, ptr %13, align 8, !tbaa !5
  %665 = load i64, ptr %29, align 8, !tbaa !9
  %666 = load i64, ptr %29, align 8, !tbaa !9
  %667 = load i64, ptr %20, align 8, !tbaa !9
  %668 = mul nsw i64 %666, %667
  %669 = add nsw i64 %665, %668
  %670 = getelementptr inbounds double, ptr %664, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  store double %671, ptr %24, align 8, !tbaa !11
  %672 = load double, ptr %24, align 8, !tbaa !11
  %673 = fcmp oge double %672, 0.000000e+00
  br i1 %673, label %674, label %676

674:                                              ; preds = %663
  %675 = load double, ptr %24, align 8, !tbaa !11
  br label %679

676:                                              ; preds = %663
  %677 = load double, ptr %24, align 8, !tbaa !11
  %678 = fneg double %677
  br label %679

679:                                              ; preds = %676, %674
  %680 = phi double [ %675, %674 ], [ %678, %676 ]
  %681 = load ptr, ptr %15, align 8, !tbaa !5
  %682 = load i64, ptr %29, align 8, !tbaa !9
  %683 = getelementptr inbounds double, ptr %681, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = load ptr, ptr %18, align 8, !tbaa !5
  %686 = load i64, ptr %29, align 8, !tbaa !9
  %687 = getelementptr inbounds double, ptr %685, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !11
  %689 = call double @llvm.fmuladd.f64(double %680, double %684, double %688)
  store double %689, ptr %687, align 8, !tbaa !11
  %690 = load ptr, ptr %12, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  store i64 %691, ptr %23, align 8, !tbaa !9
  %692 = load i64, ptr %29, align 8, !tbaa !9
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %28, align 8, !tbaa !9
  br label %694

694:                                              ; preds = %768, %679
  %695 = load i64, ptr %28, align 8, !tbaa !9
  %696 = load i64, ptr %23, align 8, !tbaa !9
  %697 = icmp sle i64 %695, %696
  br i1 %697, label %698, label %771

698:                                              ; preds = %694
  %699 = load ptr, ptr %13, align 8, !tbaa !5
  %700 = load i64, ptr %28, align 8, !tbaa !9
  %701 = load i64, ptr %29, align 8, !tbaa !9
  %702 = load i64, ptr %20, align 8, !tbaa !9
  %703 = mul nsw i64 %701, %702
  %704 = add nsw i64 %700, %703
  %705 = getelementptr inbounds double, ptr %699, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  store double %706, ptr %24, align 8, !tbaa !11
  %707 = load double, ptr %24, align 8, !tbaa !11
  %708 = fcmp oge double %707, 0.000000e+00
  br i1 %708, label %709, label %711

709:                                              ; preds = %698
  %710 = load double, ptr %24, align 8, !tbaa !11
  br label %714

711:                                              ; preds = %698
  %712 = load double, ptr %24, align 8, !tbaa !11
  %713 = fneg double %712
  br label %714

714:                                              ; preds = %711, %709
  %715 = phi double [ %710, %709 ], [ %713, %711 ]
  store double %715, ptr %30, align 8, !tbaa !11
  %716 = load ptr, ptr %13, align 8, !tbaa !5
  %717 = load i64, ptr %28, align 8, !tbaa !9
  %718 = load i64, ptr %29, align 8, !tbaa !9
  %719 = load i64, ptr %20, align 8, !tbaa !9
  %720 = mul nsw i64 %718, %719
  %721 = add nsw i64 %717, %720
  %722 = getelementptr inbounds double, ptr %716, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !11
  store double %723, ptr %24, align 8, !tbaa !11
  %724 = load double, ptr %24, align 8, !tbaa !11
  %725 = fcmp oge double %724, 0.000000e+00
  br i1 %725, label %726, label %728

726:                                              ; preds = %714
  %727 = load double, ptr %24, align 8, !tbaa !11
  br label %731

728:                                              ; preds = %714
  %729 = load double, ptr %24, align 8, !tbaa !11
  %730 = fneg double %729
  br label %731

731:                                              ; preds = %728, %726
  %732 = phi double [ %727, %726 ], [ %730, %728 ]
  %733 = load ptr, ptr %15, align 8, !tbaa !5
  %734 = load i64, ptr %29, align 8, !tbaa !9
  %735 = getelementptr inbounds double, ptr %733, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !11
  %737 = load ptr, ptr %18, align 8, !tbaa !5
  %738 = load i64, ptr %28, align 8, !tbaa !9
  %739 = getelementptr inbounds double, ptr %737, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !11
  %741 = call double @llvm.fmuladd.f64(double %732, double %736, double %740)
  store double %741, ptr %739, align 8, !tbaa !11
  %742 = load ptr, ptr %13, align 8, !tbaa !5
  %743 = load i64, ptr %28, align 8, !tbaa !9
  %744 = load i64, ptr %29, align 8, !tbaa !9
  %745 = load i64, ptr %20, align 8, !tbaa !9
  %746 = mul nsw i64 %744, %745
  %747 = add nsw i64 %743, %746
  %748 = getelementptr inbounds double, ptr %742, i64 %747
  %749 = load double, ptr %748, align 8, !tbaa !11
  store double %749, ptr %24, align 8, !tbaa !11
  %750 = load double, ptr %24, align 8, !tbaa !11
  %751 = fcmp oge double %750, 0.000000e+00
  br i1 %751, label %752, label %754

752:                                              ; preds = %731
  %753 = load double, ptr %24, align 8, !tbaa !11
  br label %757

754:                                              ; preds = %731
  %755 = load double, ptr %24, align 8, !tbaa !11
  %756 = fneg double %755
  br label %757

757:                                              ; preds = %754, %752
  %758 = phi double [ %753, %752 ], [ %756, %754 ]
  %759 = load ptr, ptr %15, align 8, !tbaa !5
  %760 = load i64, ptr %28, align 8, !tbaa !9
  %761 = getelementptr inbounds double, ptr %759, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !11
  %763 = load ptr, ptr %18, align 8, !tbaa !5
  %764 = load i64, ptr %29, align 8, !tbaa !9
  %765 = getelementptr inbounds double, ptr %763, i64 %764
  %766 = load double, ptr %765, align 8, !tbaa !11
  %767 = call double @llvm.fmuladd.f64(double %758, double %762, double %766)
  store double %767, ptr %765, align 8, !tbaa !11
  br label %768

768:                                              ; preds = %757
  %769 = load i64, ptr %28, align 8, !tbaa !9
  %770 = add nsw i64 %769, 1
  store i64 %770, ptr %28, align 8, !tbaa !9
  br label %694, !llvm.loop !23

771:                                              ; preds = %694
  br label %772

772:                                              ; preds = %771
  %773 = load i64, ptr %29, align 8, !tbaa !9
  %774 = add nsw i64 %773, 1
  store i64 %774, ptr %29, align 8, !tbaa !9
  br label %659, !llvm.loop !24

775:                                              ; preds = %659
  br label %776

776:                                              ; preds = %775, %655
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  %777 = load ptr, ptr %12, align 8, !tbaa !5
  %778 = load i64, ptr %777, align 8, !tbaa !9
  store i64 %778, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %779

779:                                              ; preds = %794, %776
  %780 = load i64, ptr %28, align 8, !tbaa !9
  %781 = load i64, ptr %22, align 8, !tbaa !9
  %782 = icmp sle i64 %780, %781
  br i1 %782, label %783, label %797

783:                                              ; preds = %779
  %784 = load ptr, ptr %15, align 8, !tbaa !5
  %785 = load i64, ptr %28, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !11
  %788 = load ptr, ptr %18, align 8, !tbaa !5
  %789 = load i64, ptr %28, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = load double, ptr %37, align 8, !tbaa !11
  %793 = call double @llvm.fmuladd.f64(double %787, double %791, double %792)
  store double %793, ptr %37, align 8, !tbaa !11
  br label %794

794:                                              ; preds = %783
  %795 = load i64, ptr %28, align 8, !tbaa !9
  %796 = add nsw i64 %795, 1
  store i64 %796, ptr %28, align 8, !tbaa !9
  br label %779, !llvm.loop !25

797:                                              ; preds = %779
  %798 = load ptr, ptr %12, align 8, !tbaa !5
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = sitofp i64 %799 to double
  %801 = load double, ptr %37, align 8, !tbaa !11
  %802 = fdiv double %801, %800
  store double %802, ptr %37, align 8, !tbaa !11
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %803 = load ptr, ptr %12, align 8, !tbaa !5
  %804 = load i64, ptr %803, align 8, !tbaa !9
  %805 = mul nsw i64 %804, 3
  store i64 %805, ptr %22, align 8, !tbaa !9
  %806 = load ptr, ptr %12, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = shl i64 %807, 1
  %809 = add nsw i64 %808, 1
  store i64 %809, ptr %28, align 8, !tbaa !9
  br label %810

810:                                              ; preds = %837, %797
  %811 = load i64, ptr %28, align 8, !tbaa !9
  %812 = load i64, ptr %22, align 8, !tbaa !9
  %813 = icmp sle i64 %811, %812
  br i1 %813, label %814, label %840

814:                                              ; preds = %810
  %815 = load ptr, ptr %15, align 8, !tbaa !5
  %816 = load i64, ptr %28, align 8, !tbaa !9
  %817 = load ptr, ptr %12, align 8, !tbaa !5
  %818 = load i64, ptr %817, align 8, !tbaa !9
  %819 = shl i64 %818, 1
  %820 = sub nsw i64 %816, %819
  %821 = getelementptr inbounds double, ptr %815, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = load ptr, ptr %18, align 8, !tbaa !5
  %824 = load i64, ptr %28, align 8, !tbaa !9
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  %827 = shl i64 %826, 1
  %828 = sub nsw i64 %824, %827
  %829 = getelementptr inbounds double, ptr %823, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = load double, ptr %37, align 8, !tbaa !11
  %832 = fneg double %831
  %833 = call double @llvm.fmuladd.f64(double %822, double %830, double %832)
  %834 = load ptr, ptr %18, align 8, !tbaa !5
  %835 = load i64, ptr %28, align 8, !tbaa !9
  %836 = getelementptr inbounds double, ptr %834, i64 %835
  store double %833, ptr %836, align 8, !tbaa !11
  br label %837

837:                                              ; preds = %814
  %838 = load i64, ptr %28, align 8, !tbaa !9
  %839 = add nsw i64 %838, 1
  store i64 %839, ptr %28, align 8, !tbaa !9
  br label %810, !llvm.loop !26

840:                                              ; preds = %810
  %841 = load ptr, ptr %12, align 8, !tbaa !5
  %842 = load ptr, ptr %18, align 8, !tbaa !5
  %843 = load ptr, ptr %12, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  %845 = shl i64 %844, 1
  %846 = add nsw i64 %845, 1
  %847 = getelementptr inbounds double, ptr %842, i64 %846
  %848 = call i32 @dlassq_(ptr noundef %841, ptr noundef %847, ptr noundef @c__1, ptr noundef %44, ptr noundef %45)
  %849 = load double, ptr %44, align 8, !tbaa !11
  %850 = load double, ptr %45, align 8, !tbaa !11
  %851 = load ptr, ptr %12, align 8, !tbaa !5
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = sitofp i64 %852 to double
  %854 = fdiv double %850, %853
  %855 = call double @sqrt(double noundef %854) #5
  %856 = fmul double %849, %855
  store double %856, ptr %38, align 8, !tbaa !11
  %857 = load double, ptr %38, align 8, !tbaa !11
  %858 = load double, ptr %39, align 8, !tbaa !11
  %859 = load double, ptr %37, align 8, !tbaa !11
  %860 = fmul double %858, %859
  %861 = fcmp olt double %857, %860
  br i1 %861, label %862, label %863

862:                                              ; preds = %840
  br label %1157

863:                                              ; preds = %840
  %864 = load ptr, ptr %12, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  store i64 %865, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %866

866:                                              ; preds = %1149, %863
  %867 = load i64, ptr %28, align 8, !tbaa !9
  %868 = load i64, ptr %22, align 8, !tbaa !9
  %869 = icmp sle i64 %867, %868
  br i1 %869, label %870, label %1152

870:                                              ; preds = %866
  %871 = load ptr, ptr %13, align 8, !tbaa !5
  %872 = load i64, ptr %28, align 8, !tbaa !9
  %873 = load i64, ptr %28, align 8, !tbaa !9
  %874 = load i64, ptr %20, align 8, !tbaa !9
  %875 = mul nsw i64 %873, %874
  %876 = add nsw i64 %872, %875
  %877 = getelementptr inbounds double, ptr %871, i64 %876
  %878 = load double, ptr %877, align 8, !tbaa !11
  store double %878, ptr %24, align 8, !tbaa !11
  %879 = load double, ptr %24, align 8, !tbaa !11
  %880 = fcmp oge double %879, 0.000000e+00
  br i1 %880, label %881, label %883

881:                                              ; preds = %870
  %882 = load double, ptr %24, align 8, !tbaa !11
  br label %886

883:                                              ; preds = %870
  %884 = load double, ptr %24, align 8, !tbaa !11
  %885 = fneg double %884
  br label %886

886:                                              ; preds = %883, %881
  %887 = phi double [ %882, %881 ], [ %885, %883 ]
  store double %887, ptr %30, align 8, !tbaa !11
  %888 = load ptr, ptr %15, align 8, !tbaa !5
  %889 = load i64, ptr %28, align 8, !tbaa !9
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !11
  store double %891, ptr %35, align 8, !tbaa !11
  %892 = load ptr, ptr %12, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  %894 = sub nsw i64 %893, 1
  %895 = sitofp i64 %894 to double
  %896 = load double, ptr %30, align 8, !tbaa !11
  %897 = fmul double %895, %896
  store double %897, ptr %34, align 8, !tbaa !11
  %898 = load ptr, ptr %12, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = sub nsw i64 %899, 2
  %901 = sitofp i64 %900 to double
  %902 = load ptr, ptr %18, align 8, !tbaa !5
  %903 = load i64, ptr %28, align 8, !tbaa !9
  %904 = getelementptr inbounds double, ptr %902, i64 %903
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = load double, ptr %30, align 8, !tbaa !11
  %907 = load double, ptr %35, align 8, !tbaa !11
  %908 = fneg double %906
  %909 = call double @llvm.fmuladd.f64(double %908, double %907, double %905)
  %910 = fmul double %901, %909
  store double %910, ptr %33, align 8, !tbaa !11
  %911 = load double, ptr %30, align 8, !tbaa !11
  %912 = load double, ptr %35, align 8, !tbaa !11
  %913 = fmul double %911, %912
  %914 = fneg double %913
  %915 = load double, ptr %35, align 8, !tbaa !11
  %916 = load ptr, ptr %18, align 8, !tbaa !5
  %917 = load i64, ptr %28, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %916, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  %920 = fmul double %919, 2.000000e+00
  %921 = load double, ptr %35, align 8, !tbaa !11
  %922 = fmul double %920, %921
  %923 = call double @llvm.fmuladd.f64(double %914, double %915, double %922)
  %924 = load ptr, ptr %12, align 8, !tbaa !5
  %925 = load i64, ptr %924, align 8, !tbaa !9
  %926 = sitofp i64 %925 to double
  %927 = load double, ptr %37, align 8, !tbaa !11
  %928 = fneg double %926
  %929 = call double @llvm.fmuladd.f64(double %928, double %927, double %923)
  store double %929, ptr %32, align 8, !tbaa !11
  %930 = load double, ptr %33, align 8, !tbaa !11
  %931 = load double, ptr %33, align 8, !tbaa !11
  %932 = load double, ptr %32, align 8, !tbaa !11
  %933 = fmul double %932, 4.000000e+00
  %934 = load double, ptr %34, align 8, !tbaa !11
  %935 = fmul double %933, %934
  %936 = fneg double %935
  %937 = call double @llvm.fmuladd.f64(double %930, double %931, double %936)
  store double %937, ptr %27, align 8, !tbaa !11
  %938 = load double, ptr %27, align 8, !tbaa !11
  %939 = fcmp ole double %938, 0.000000e+00
  br i1 %939, label %940, label %942

940:                                              ; preds = %886
  %941 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %941, align 8, !tbaa !9
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1242

942:                                              ; preds = %886
  %943 = load double, ptr %32, align 8, !tbaa !11
  %944 = fmul double %943, -2.000000e+00
  %945 = load double, ptr %33, align 8, !tbaa !11
  %946 = load double, ptr %27, align 8, !tbaa !11
  %947 = call double @sqrt(double noundef %946) #5
  %948 = fadd double %945, %947
  %949 = fdiv double %944, %948
  store double %949, ptr %35, align 8, !tbaa !11
  %950 = load double, ptr %35, align 8, !tbaa !11
  %951 = load ptr, ptr %15, align 8, !tbaa !5
  %952 = load i64, ptr %28, align 8, !tbaa !9
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  %954 = load double, ptr %953, align 8, !tbaa !11
  %955 = fsub double %950, %954
  store double %955, ptr %27, align 8, !tbaa !11
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %956 = load i64, ptr %36, align 8, !tbaa !9
  %957 = icmp ne i64 %956, 0
  br i1 %957, label %958, label %1044

958:                                              ; preds = %942
  %959 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %959, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %960

960:                                              ; preds = %996, %958
  %961 = load i64, ptr %29, align 8, !tbaa !9
  %962 = load i64, ptr %23, align 8, !tbaa !9
  %963 = icmp sle i64 %961, %962
  br i1 %963, label %964, label %999

964:                                              ; preds = %960
  %965 = load ptr, ptr %13, align 8, !tbaa !5
  %966 = load i64, ptr %29, align 8, !tbaa !9
  %967 = load i64, ptr %28, align 8, !tbaa !9
  %968 = load i64, ptr %20, align 8, !tbaa !9
  %969 = mul nsw i64 %967, %968
  %970 = add nsw i64 %966, %969
  %971 = getelementptr inbounds double, ptr %965, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !11
  store double %972, ptr %24, align 8, !tbaa !11
  %973 = load double, ptr %24, align 8, !tbaa !11
  %974 = fcmp oge double %973, 0.000000e+00
  br i1 %974, label %975, label %977

975:                                              ; preds = %964
  %976 = load double, ptr %24, align 8, !tbaa !11
  br label %980

977:                                              ; preds = %964
  %978 = load double, ptr %24, align 8, !tbaa !11
  %979 = fneg double %978
  br label %980

980:                                              ; preds = %977, %975
  %981 = phi double [ %976, %975 ], [ %979, %977 ]
  store double %981, ptr %30, align 8, !tbaa !11
  %982 = load ptr, ptr %15, align 8, !tbaa !5
  %983 = load i64, ptr %29, align 8, !tbaa !9
  %984 = getelementptr inbounds double, ptr %982, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !11
  %986 = load double, ptr %30, align 8, !tbaa !11
  %987 = load double, ptr %31, align 8, !tbaa !11
  %988 = call double @llvm.fmuladd.f64(double %985, double %986, double %987)
  store double %988, ptr %31, align 8, !tbaa !11
  %989 = load double, ptr %27, align 8, !tbaa !11
  %990 = load double, ptr %30, align 8, !tbaa !11
  %991 = load ptr, ptr %18, align 8, !tbaa !5
  %992 = load i64, ptr %29, align 8, !tbaa !9
  %993 = getelementptr inbounds double, ptr %991, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !11
  %995 = call double @llvm.fmuladd.f64(double %989, double %990, double %994)
  store double %995, ptr %993, align 8, !tbaa !11
  br label %996

996:                                              ; preds = %980
  %997 = load i64, ptr %29, align 8, !tbaa !9
  %998 = add nsw i64 %997, 1
  store i64 %998, ptr %29, align 8, !tbaa !9
  br label %960, !llvm.loop !27

999:                                              ; preds = %960
  %1000 = load ptr, ptr %12, align 8, !tbaa !5
  %1001 = load i64, ptr %1000, align 8, !tbaa !9
  store i64 %1001, ptr %23, align 8, !tbaa !9
  %1002 = load i64, ptr %28, align 8, !tbaa !9
  %1003 = add nsw i64 %1002, 1
  store i64 %1003, ptr %29, align 8, !tbaa !9
  br label %1004

1004:                                             ; preds = %1040, %999
  %1005 = load i64, ptr %29, align 8, !tbaa !9
  %1006 = load i64, ptr %23, align 8, !tbaa !9
  %1007 = icmp sle i64 %1005, %1006
  br i1 %1007, label %1008, label %1043

1008:                                             ; preds = %1004
  %1009 = load ptr, ptr %13, align 8, !tbaa !5
  %1010 = load i64, ptr %28, align 8, !tbaa !9
  %1011 = load i64, ptr %29, align 8, !tbaa !9
  %1012 = load i64, ptr %20, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1010, %1013
  %1015 = getelementptr inbounds double, ptr %1009, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !11
  store double %1016, ptr %24, align 8, !tbaa !11
  %1017 = load double, ptr %24, align 8, !tbaa !11
  %1018 = fcmp oge double %1017, 0.000000e+00
  br i1 %1018, label %1019, label %1021

1019:                                             ; preds = %1008
  %1020 = load double, ptr %24, align 8, !tbaa !11
  br label %1024

1021:                                             ; preds = %1008
  %1022 = load double, ptr %24, align 8, !tbaa !11
  %1023 = fneg double %1022
  br label %1024

1024:                                             ; preds = %1021, %1019
  %1025 = phi double [ %1020, %1019 ], [ %1023, %1021 ]
  store double %1025, ptr %30, align 8, !tbaa !11
  %1026 = load ptr, ptr %15, align 8, !tbaa !5
  %1027 = load i64, ptr %29, align 8, !tbaa !9
  %1028 = getelementptr inbounds double, ptr %1026, i64 %1027
  %1029 = load double, ptr %1028, align 8, !tbaa !11
  %1030 = load double, ptr %30, align 8, !tbaa !11
  %1031 = load double, ptr %31, align 8, !tbaa !11
  %1032 = call double @llvm.fmuladd.f64(double %1029, double %1030, double %1031)
  store double %1032, ptr %31, align 8, !tbaa !11
  %1033 = load double, ptr %27, align 8, !tbaa !11
  %1034 = load double, ptr %30, align 8, !tbaa !11
  %1035 = load ptr, ptr %18, align 8, !tbaa !5
  %1036 = load i64, ptr %29, align 8, !tbaa !9
  %1037 = getelementptr inbounds double, ptr %1035, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = call double @llvm.fmuladd.f64(double %1033, double %1034, double %1038)
  store double %1039, ptr %1037, align 8, !tbaa !11
  br label %1040

1040:                                             ; preds = %1024
  %1041 = load i64, ptr %29, align 8, !tbaa !9
  %1042 = add nsw i64 %1041, 1
  store i64 %1042, ptr %29, align 8, !tbaa !9
  br label %1004, !llvm.loop !28

1043:                                             ; preds = %1004
  br label %1130

1044:                                             ; preds = %942
  %1045 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1045, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %1046

1046:                                             ; preds = %1082, %1044
  %1047 = load i64, ptr %29, align 8, !tbaa !9
  %1048 = load i64, ptr %23, align 8, !tbaa !9
  %1049 = icmp sle i64 %1047, %1048
  br i1 %1049, label %1050, label %1085

1050:                                             ; preds = %1046
  %1051 = load ptr, ptr %13, align 8, !tbaa !5
  %1052 = load i64, ptr %28, align 8, !tbaa !9
  %1053 = load i64, ptr %29, align 8, !tbaa !9
  %1054 = load i64, ptr %20, align 8, !tbaa !9
  %1055 = mul nsw i64 %1053, %1054
  %1056 = add nsw i64 %1052, %1055
  %1057 = getelementptr inbounds double, ptr %1051, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  store double %1058, ptr %24, align 8, !tbaa !11
  %1059 = load double, ptr %24, align 8, !tbaa !11
  %1060 = fcmp oge double %1059, 0.000000e+00
  br i1 %1060, label %1061, label %1063

1061:                                             ; preds = %1050
  %1062 = load double, ptr %24, align 8, !tbaa !11
  br label %1066

1063:                                             ; preds = %1050
  %1064 = load double, ptr %24, align 8, !tbaa !11
  %1065 = fneg double %1064
  br label %1066

1066:                                             ; preds = %1063, %1061
  %1067 = phi double [ %1062, %1061 ], [ %1065, %1063 ]
  store double %1067, ptr %30, align 8, !tbaa !11
  %1068 = load ptr, ptr %15, align 8, !tbaa !5
  %1069 = load i64, ptr %29, align 8, !tbaa !9
  %1070 = getelementptr inbounds double, ptr %1068, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !11
  %1072 = load double, ptr %30, align 8, !tbaa !11
  %1073 = load double, ptr %31, align 8, !tbaa !11
  %1074 = call double @llvm.fmuladd.f64(double %1071, double %1072, double %1073)
  store double %1074, ptr %31, align 8, !tbaa !11
  %1075 = load double, ptr %27, align 8, !tbaa !11
  %1076 = load double, ptr %30, align 8, !tbaa !11
  %1077 = load ptr, ptr %18, align 8, !tbaa !5
  %1078 = load i64, ptr %29, align 8, !tbaa !9
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !11
  %1081 = call double @llvm.fmuladd.f64(double %1075, double %1076, double %1080)
  store double %1081, ptr %1079, align 8, !tbaa !11
  br label %1082

1082:                                             ; preds = %1066
  %1083 = load i64, ptr %29, align 8, !tbaa !9
  %1084 = add nsw i64 %1083, 1
  store i64 %1084, ptr %29, align 8, !tbaa !9
  br label %1046, !llvm.loop !29

1085:                                             ; preds = %1046
  %1086 = load ptr, ptr %12, align 8, !tbaa !5
  %1087 = load i64, ptr %1086, align 8, !tbaa !9
  store i64 %1087, ptr %23, align 8, !tbaa !9
  %1088 = load i64, ptr %28, align 8, !tbaa !9
  %1089 = add nsw i64 %1088, 1
  store i64 %1089, ptr %29, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1126, %1085
  %1091 = load i64, ptr %29, align 8, !tbaa !9
  %1092 = load i64, ptr %23, align 8, !tbaa !9
  %1093 = icmp sle i64 %1091, %1092
  br i1 %1093, label %1094, label %1129

1094:                                             ; preds = %1090
  %1095 = load ptr, ptr %13, align 8, !tbaa !5
  %1096 = load i64, ptr %29, align 8, !tbaa !9
  %1097 = load i64, ptr %28, align 8, !tbaa !9
  %1098 = load i64, ptr %20, align 8, !tbaa !9
  %1099 = mul nsw i64 %1097, %1098
  %1100 = add nsw i64 %1096, %1099
  %1101 = getelementptr inbounds double, ptr %1095, i64 %1100
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  store double %1102, ptr %24, align 8, !tbaa !11
  %1103 = load double, ptr %24, align 8, !tbaa !11
  %1104 = fcmp oge double %1103, 0.000000e+00
  br i1 %1104, label %1105, label %1107

1105:                                             ; preds = %1094
  %1106 = load double, ptr %24, align 8, !tbaa !11
  br label %1110

1107:                                             ; preds = %1094
  %1108 = load double, ptr %24, align 8, !tbaa !11
  %1109 = fneg double %1108
  br label %1110

1110:                                             ; preds = %1107, %1105
  %1111 = phi double [ %1106, %1105 ], [ %1109, %1107 ]
  store double %1111, ptr %30, align 8, !tbaa !11
  %1112 = load ptr, ptr %15, align 8, !tbaa !5
  %1113 = load i64, ptr %29, align 8, !tbaa !9
  %1114 = getelementptr inbounds double, ptr %1112, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !11
  %1116 = load double, ptr %30, align 8, !tbaa !11
  %1117 = load double, ptr %31, align 8, !tbaa !11
  %1118 = call double @llvm.fmuladd.f64(double %1115, double %1116, double %1117)
  store double %1118, ptr %31, align 8, !tbaa !11
  %1119 = load double, ptr %27, align 8, !tbaa !11
  %1120 = load double, ptr %30, align 8, !tbaa !11
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load i64, ptr %29, align 8, !tbaa !9
  %1123 = getelementptr inbounds double, ptr %1121, i64 %1122
  %1124 = load double, ptr %1123, align 8, !tbaa !11
  %1125 = call double @llvm.fmuladd.f64(double %1119, double %1120, double %1124)
  store double %1125, ptr %1123, align 8, !tbaa !11
  br label %1126

1126:                                             ; preds = %1110
  %1127 = load i64, ptr %29, align 8, !tbaa !9
  %1128 = add nsw i64 %1127, 1
  store i64 %1128, ptr %29, align 8, !tbaa !9
  br label %1090, !llvm.loop !30

1129:                                             ; preds = %1090
  br label %1130

1130:                                             ; preds = %1129, %1043
  %1131 = load double, ptr %31, align 8, !tbaa !11
  %1132 = load ptr, ptr %18, align 8, !tbaa !5
  %1133 = load i64, ptr %28, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1132, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = fadd double %1131, %1135
  %1137 = load double, ptr %27, align 8, !tbaa !11
  %1138 = fmul double %1136, %1137
  %1139 = load ptr, ptr %12, align 8, !tbaa !5
  %1140 = load i64, ptr %1139, align 8, !tbaa !9
  %1141 = sitofp i64 %1140 to double
  %1142 = fdiv double %1138, %1141
  %1143 = load double, ptr %37, align 8, !tbaa !11
  %1144 = fadd double %1143, %1142
  store double %1144, ptr %37, align 8, !tbaa !11
  %1145 = load double, ptr %35, align 8, !tbaa !11
  %1146 = load ptr, ptr %15, align 8, !tbaa !5
  %1147 = load i64, ptr %28, align 8, !tbaa !9
  %1148 = getelementptr inbounds double, ptr %1146, i64 %1147
  store double %1145, ptr %1148, align 8, !tbaa !11
  br label %1149

1149:                                             ; preds = %1130
  %1150 = load i64, ptr %28, align 8, !tbaa !9
  %1151 = add nsw i64 %1150, 1
  store i64 %1151, ptr %28, align 8, !tbaa !9
  br label %866, !llvm.loop !31

1152:                                             ; preds = %866
  br label %1153

1153:                                             ; preds = %1152
  %1154 = load i64, ptr %41, align 8, !tbaa !9
  %1155 = add nsw i64 %1154, 1
  store i64 %1155, ptr %41, align 8, !tbaa !9
  br label %518, !llvm.loop !32

1156:                                             ; preds = %518
  br label %1157

1157:                                             ; preds = %1156, %862
  %1158 = call double @dlamch_(ptr noundef @.str.3)
  store double %1158, ptr %47, align 8, !tbaa !11
  %1159 = load double, ptr %47, align 8, !tbaa !11
  %1160 = fdiv double 1.000000e+00, %1159
  store double %1160, ptr %46, align 8, !tbaa !11
  %1161 = load double, ptr %46, align 8, !tbaa !11
  store double %1161, ptr %42, align 8, !tbaa !11
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %1162 = load double, ptr %37, align 8, !tbaa !11
  %1163 = call double @sqrt(double noundef %1162) #5
  %1164 = fdiv double 1.000000e+00, %1163
  store double %1164, ptr %30, align 8, !tbaa !11
  %1165 = call double @dlamch_(ptr noundef @.str.4)
  store double %1165, ptr %40, align 8, !tbaa !11
  %1166 = load double, ptr %40, align 8, !tbaa !11
  %1167 = call double @log(double noundef %1166) #5
  %1168 = fdiv double 1.000000e+00, %1167
  store double %1168, ptr %31, align 8, !tbaa !11
  %1169 = load ptr, ptr %12, align 8, !tbaa !5
  %1170 = load i64, ptr %1169, align 8, !tbaa !9
  store i64 %1170, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %1171

1171:                                             ; preds = %1218, %1157
  %1172 = load i64, ptr %28, align 8, !tbaa !9
  %1173 = load i64, ptr %22, align 8, !tbaa !9
  %1174 = icmp sle i64 %1172, %1173
  br i1 %1174, label %1175, label %1221

1175:                                             ; preds = %1171
  %1176 = load double, ptr %31, align 8, !tbaa !11
  %1177 = load ptr, ptr %15, align 8, !tbaa !5
  %1178 = load i64, ptr %28, align 8, !tbaa !9
  %1179 = getelementptr inbounds double, ptr %1177, i64 %1178
  %1180 = load double, ptr %1179, align 8, !tbaa !11
  %1181 = load double, ptr %30, align 8, !tbaa !11
  %1182 = fmul double %1180, %1181
  %1183 = call double @log(double noundef %1182) #5
  %1184 = fmul double %1176, %1183
  %1185 = fptosi double %1184 to i64
  store i64 %1185, ptr %23, align 8, !tbaa !9
  %1186 = call double @pow_di(ptr noundef %40, ptr noundef %23)
  %1187 = load ptr, ptr %15, align 8, !tbaa !5
  %1188 = load i64, ptr %28, align 8, !tbaa !9
  %1189 = getelementptr inbounds double, ptr %1187, i64 %1188
  store double %1186, ptr %1189, align 8, !tbaa !11
  %1190 = load double, ptr %42, align 8, !tbaa !11
  store double %1190, ptr %24, align 8, !tbaa !11
  %1191 = load ptr, ptr %15, align 8, !tbaa !5
  %1192 = load i64, ptr %28, align 8, !tbaa !9
  %1193 = getelementptr inbounds double, ptr %1191, i64 %1192
  %1194 = load double, ptr %1193, align 8, !tbaa !11
  store double %1194, ptr %25, align 8, !tbaa !11
  %1195 = load double, ptr %24, align 8, !tbaa !11
  %1196 = load double, ptr %25, align 8, !tbaa !11
  %1197 = fcmp ole double %1195, %1196
  br i1 %1197, label %1198, label %1200

1198:                                             ; preds = %1175
  %1199 = load double, ptr %24, align 8, !tbaa !11
  br label %1202

1200:                                             ; preds = %1175
  %1201 = load double, ptr %25, align 8, !tbaa !11
  br label %1202

1202:                                             ; preds = %1200, %1198
  %1203 = phi double [ %1199, %1198 ], [ %1201, %1200 ]
  store double %1203, ptr %42, align 8, !tbaa !11
  %1204 = load double, ptr %43, align 8, !tbaa !11
  store double %1204, ptr %24, align 8, !tbaa !11
  %1205 = load ptr, ptr %15, align 8, !tbaa !5
  %1206 = load i64, ptr %28, align 8, !tbaa !9
  %1207 = getelementptr inbounds double, ptr %1205, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  store double %1208, ptr %25, align 8, !tbaa !11
  %1209 = load double, ptr %24, align 8, !tbaa !11
  %1210 = load double, ptr %25, align 8, !tbaa !11
  %1211 = fcmp oge double %1209, %1210
  br i1 %1211, label %1212, label %1214

1212:                                             ; preds = %1202
  %1213 = load double, ptr %24, align 8, !tbaa !11
  br label %1216

1214:                                             ; preds = %1202
  %1215 = load double, ptr %25, align 8, !tbaa !11
  br label %1216

1216:                                             ; preds = %1214, %1212
  %1217 = phi double [ %1213, %1212 ], [ %1215, %1214 ]
  store double %1217, ptr %43, align 8, !tbaa !11
  br label %1218

1218:                                             ; preds = %1216
  %1219 = load i64, ptr %28, align 8, !tbaa !9
  %1220 = add nsw i64 %1219, 1
  store i64 %1220, ptr %28, align 8, !tbaa !9
  br label %1171, !llvm.loop !33

1221:                                             ; preds = %1171
  %1222 = load double, ptr %42, align 8, !tbaa !11
  %1223 = load double, ptr %47, align 8, !tbaa !11
  %1224 = fcmp oge double %1222, %1223
  br i1 %1224, label %1225, label %1227

1225:                                             ; preds = %1221
  %1226 = load double, ptr %42, align 8, !tbaa !11
  br label %1229

1227:                                             ; preds = %1221
  %1228 = load double, ptr %47, align 8, !tbaa !11
  br label %1229

1229:                                             ; preds = %1227, %1225
  %1230 = phi double [ %1226, %1225 ], [ %1228, %1227 ]
  %1231 = load double, ptr %43, align 8, !tbaa !11
  %1232 = load double, ptr %46, align 8, !tbaa !11
  %1233 = fcmp ole double %1231, %1232
  br i1 %1233, label %1234, label %1236

1234:                                             ; preds = %1229
  %1235 = load double, ptr %43, align 8, !tbaa !11
  br label %1238

1236:                                             ; preds = %1229
  %1237 = load double, ptr %46, align 8, !tbaa !11
  br label %1238

1238:                                             ; preds = %1236, %1234
  %1239 = phi double [ %1235, %1234 ], [ %1237, %1236 ]
  %1240 = fdiv double %1230, %1239
  %1241 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1240, ptr %1241, align 8, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %48, align 4
  br label %1242

1242:                                             ; preds = %1238, %940, %110, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, 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
  %1243 = load i32, ptr %10, align 4
  ret i32 %1243
}

; 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

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

declare double @dlamch_(ptr noundef) #2

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

declare double @pow_di(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 = !{!"double", !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 @dsyequb_(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 double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  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 8, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %17 = load i64, ptr %3, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds double, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  %21 = getelementptr inbounds i8, ptr %7, i64 -8
  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 %425

35:                                               ; preds = %31
  %36 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  store double 0.000000e+00, ptr %6, align 8, !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 double 1.000000e+00, ptr %5, align 8, !tbaa !9
  br label %425

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, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %41, i1 false), !tbaa !9
  store double 0.000000e+00, ptr %6, align 8, !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 double, ptr %19, i64 %44
  %45 = getelementptr inbounds double, ptr %20, i64 %.0489545
  br label %46

46:                                               ; preds = %.lr.ph542, %46
  %.1495540 = phi i64 [ 1, %.lr.ph542 ], [ %69, %46 ]
  %47 = getelementptr inbounds double, ptr %20, i64 %.1495540
  %48 = load double, ptr %47, align 8, !tbaa !9
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1495540
  %49 = load double, ptr %gep, align 8, !tbaa !9
  %50 = fcmp oge double %49, 0.000000e+00
  %51 = fneg double %49
  %52 = select i1 %50, double %49, double %51
  %53 = fcmp oge double %48, %52
  %54 = select i1 %53, double %48, double %52
  store double %54, ptr %47, align 8, !tbaa !9
  %55 = load double, ptr %45, align 8, !tbaa !9
  %56 = load double, ptr %gep, align 8, !tbaa !9
  %57 = fcmp oge double %56, 0.000000e+00
  %58 = fneg double %56
  %59 = select i1 %57, double %56, double %58
  %60 = fcmp oge double %55, %59
  %61 = select i1 %60, double %55, double %59
  store double %61, ptr %45, align 8, !tbaa !9
  %62 = load double, ptr %6, align 8, !tbaa !9
  %63 = load double, ptr %gep, align 8, !tbaa !9
  %64 = fcmp oge double %63, 0.000000e+00
  %65 = fneg double %63
  %66 = select i1 %64, double %63, double %65
  %67 = fcmp oge double %62, %66
  %68 = select i1 %67, double %62, double %66
  store double %68, ptr %6, align 8, !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 double, ptr %20, i64 %.0489545
  %71 = load double, ptr %70, align 8, !tbaa !9
  %72 = mul i64 %.0489545, %42
  %73 = getelementptr inbounds double, ptr %19, i64 %72
  %74 = load double, ptr %73, align 8, !tbaa !9
  %75 = fcmp oge double %74, 0.000000e+00
  %76 = fneg double %74
  %77 = select i1 %75, double %74, double %76
  %78 = fcmp oge double %71, %77
  %79 = select i1 %78, double %71, double %77
  store double %79, ptr %70, align 8, !tbaa !9
  %80 = load double, ptr %6, align 8, !tbaa !9
  %81 = load double, ptr %73, align 8, !tbaa !9
  %82 = fcmp oge double %81, 0.000000e+00
  %83 = fneg double %81
  %84 = select i1 %82, double %81, double %83
  %85 = fcmp oge double %80, %84
  %86 = select i1 %85, double %80, double %84
  store double %86, ptr %6, align 8, !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 double, ptr %20, i64 %.1490557
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = mul nsw i64 %.1490557, %17
  %91 = getelementptr double, ptr %19, i64 %.1490557
  %92 = getelementptr double, ptr %91, i64 %90
  %93 = load double, ptr %92, align 8, !tbaa !9
  %94 = fcmp oge double %93, 0.000000e+00
  %95 = fneg double %93
  %96 = select i1 %94, double %93, double %95
  %97 = fcmp oge double %89, %96
  %98 = select i1 %97, double %89, double %96
  store double %98, ptr %88, align 8, !tbaa !9
  %99 = load double, ptr %6, align 8, !tbaa !9
  %100 = load double, ptr %92, align 8, !tbaa !9
  %101 = fcmp oge double %100, 0.000000e+00
  %102 = fneg double %100
  %103 = select i1 %101, double %100, double %102
  %104 = fcmp oge double %99, %103
  %105 = select i1 %104, double %99, double %103
  store double %105, ptr %6, align 8, !tbaa !9
  %106 = add nuw i64 %.1490557, 1
  %invariant.gep548 = getelementptr double, 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 double, ptr %20, i64 %.2496551
  %108 = load double, ptr %107, align 8, !tbaa !9
  %gep549 = getelementptr double, ptr %invariant.gep548, i64 %.2496551
  %109 = load double, ptr %gep549, align 8, !tbaa !9
  %110 = fcmp oge double %109, 0.000000e+00
  %111 = fneg double %109
  %112 = select i1 %110, double %109, double %111
  %113 = fcmp oge double %108, %112
  %114 = select i1 %113, double %108, double %112
  store double %114, ptr %107, align 8, !tbaa !9
  %115 = load double, ptr %88, align 8, !tbaa !9
  %116 = load double, ptr %gep549, align 8, !tbaa !9
  %117 = fcmp oge double %116, 0.000000e+00
  %118 = fneg double %116
  %119 = select i1 %117, double %116, double %118
  %120 = fcmp oge double %115, %119
  %121 = select i1 %120, double %115, double %119
  store double %121, ptr %88, align 8, !tbaa !9
  %122 = load double, ptr %6, align 8, !tbaa !9
  %123 = load double, ptr %gep549, align 8, !tbaa !9
  %124 = fcmp oge double %123, 0.000000e+00
  %125 = fneg double %123
  %126 = select i1 %124, double %123, double %125
  %127 = fcmp oge double %122, %126
  %128 = select i1 %127, double %122, double %126
  store double %128, ptr %6, align 8, !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 eq i64 %37, 1
  br i1 %min.iters.check, label %.lr.ph563.preheader736, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph563.preheader
  %n.vec = and i64 %37, 9223372036854775806
  %ind.end = or i64 %37, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %131 = getelementptr double, ptr %4, i64 %index
  %wide.load = load <2 x double>, ptr %131, align 8, !tbaa !9
  %132 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %wide.load
  store <2 x double> %132, ptr %131, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %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 double, ptr %20, i64 %.2491561
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = fdiv double 1.000000e+00, %135
  store double %136, ptr %134, align 8, !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 double
  %139 = fmul double %138, 2.000000e+00
  %140 = tail call double @sqrt(double noundef %139) #7
  %141 = fdiv double 1.000000e+00, %140
  %142 = add i64 %17, 1
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  %143 = sub i64 %11, %10
  br label %144

144:                                              ; preds = %._crit_edge564, %._crit_edge635
  %145 = phi i64 [ %.pre, %._crit_edge564 ], [ %397, %._crit_edge635 ]
  %.0483637 = phi i64 [ 1, %._crit_edge564 ], [ %398, %._crit_edge635 ]
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  %.not514565 = icmp slt i64 %145, 1
  br i1 %.not514565, label %._crit_edge602, label %._crit_edge569.thread

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

.lr.ph582:                                        ; preds = %._crit_edge569.thread, %._crit_edge574
  %.3492580 = phi i64 [ %179, %._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 double, ptr %21, i64 %.3492580
  %.pre671 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %._crit_edge574

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

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

._crit_edge574:                                   ; preds = %150, %.lr.ph582.._crit_edge574_crit_edge
  %168 = phi double [ %.pre671, %.lr.ph582.._crit_edge574_crit_edge ], [ %166, %150 ]
  %169 = mul i64 %.3492580, %142
  %170 = getelementptr inbounds double, ptr %19, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !9
  %172 = fcmp oge double %171, 0.000000e+00
  %173 = fneg double %171
  %174 = select i1 %172, double %171, double %173
  %175 = getelementptr inbounds double, ptr %20, i64 %.3492580
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = getelementptr inbounds double, ptr %21, i64 %.3492580
  %178 = call double @llvm.fmuladd.f64(double %174, double %176, double %168)
  store double %178, ptr %177, align 8, !tbaa !9
  %179 = add nuw i64 %.3492580, 1
  %exitcond661.not = icmp eq i64 %.3492580, %145
  br i1 %exitcond661.not, label %.loopexit531, label %.lr.ph582, !llvm.loop !21

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

.lr.ph595:                                        ; preds = %._crit_edge569.thread, %.loopexit530
  %.4493593 = phi i64 [ %192, %.loopexit530 ], [ 1, %._crit_edge569.thread ]
  %180 = mul nsw i64 %.4493593, %17
  %181 = getelementptr double, ptr %19, i64 %.4493593
  %182 = getelementptr double, ptr %181, i64 %180
  %183 = load double, ptr %182, align 8, !tbaa !9
  %184 = fcmp oge double %183, 0.000000e+00
  %185 = fneg double %183
  %186 = select i1 %184, double %183, double %185
  %187 = getelementptr inbounds double, ptr %20, i64 %.4493593
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = getelementptr inbounds double, ptr %21, i64 %.4493593
  %190 = load double, ptr %189, align 8, !tbaa !9
  %191 = call double @llvm.fmuladd.f64(double %186, double %188, double %190)
  store double %191, ptr %189, align 8, !tbaa !9
  %192 = add nuw i64 %.4493593, 1
  %invariant.gep584 = getelementptr double, ptr %19, i64 %180
  %.not516586.not = icmp slt i64 %.4493593, %145
  br i1 %.not516586.not, label %.lr.ph589, label %.loopexit530

.lr.ph589:                                        ; preds = %.lr.ph595, %.lr.ph589
  %.5499587 = phi i64 [ %209, %.lr.ph589 ], [ %192, %.lr.ph595 ]
  %gep585 = getelementptr double, ptr %invariant.gep584, i64 %.5499587
  %193 = load double, ptr %gep585, align 8, !tbaa !9
  %194 = fcmp oge double %193, 0.000000e+00
  %195 = fneg double %193
  %196 = select i1 %194, double %193, double %195
  %197 = load double, ptr %187, align 8, !tbaa !9
  %198 = getelementptr inbounds double, ptr %21, i64 %.5499587
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = call double @llvm.fmuladd.f64(double %196, double %197, double %199)
  store double %200, ptr %198, align 8, !tbaa !9
  %201 = load double, ptr %gep585, align 8, !tbaa !9
  %202 = fcmp oge double %201, 0.000000e+00
  %203 = fneg double %201
  %204 = select i1 %202, double %201, double %203
  %205 = getelementptr inbounds double, ptr %20, i64 %.5499587
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = load double, ptr %189, align 8, !tbaa !9
  %208 = call double @llvm.fmuladd.f64(double %204, double %206, double %207)
  store double %208, ptr %189, align 8, !tbaa !9
  %209 = add nuw nsw i64 %.5499587, 1
  %.not516.not = icmp slt i64 %.5499587, %145
  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 %145, 3
  %210 = icmp ult i64 %145, 4
  br i1 %210, label %._crit_edge602.loopexit.unr-lcssa, label %.lr.ph601.preheader.new

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

.lr.ph601:                                        ; preds = %.lr.ph601, %.lr.ph601.preheader.new
  %.1599 = phi double [ 0.000000e+00, %.lr.ph601.preheader.new ], [ %232, %.lr.ph601 ]
  %.6500598 = phi i64 [ 1, %.lr.ph601.preheader.new ], [ %233, %.lr.ph601 ]
  %niter = phi i64 [ 0, %.lr.ph601.preheader.new ], [ %niter.next.3, %.lr.ph601 ]
  %211 = getelementptr inbounds double, ptr %20, i64 %.6500598
  %212 = load double, ptr %211, align 8, !tbaa !9
  %213 = getelementptr inbounds double, ptr %21, i64 %.6500598
  %214 = load double, ptr %213, align 8, !tbaa !9
  %215 = call double @llvm.fmuladd.f64(double %212, double %214, double %.1599)
  %216 = getelementptr double, ptr %4, i64 %.6500598
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = getelementptr double, ptr %7, i64 %.6500598
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = call double @llvm.fmuladd.f64(double %217, double %219, double %215)
  %221 = add nuw nsw i64 %.6500598, 2
  %222 = getelementptr inbounds double, ptr %20, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = getelementptr inbounds double, ptr %21, i64 %221
  %225 = load double, ptr %224, align 8, !tbaa !9
  %226 = call double @llvm.fmuladd.f64(double %223, double %225, double %220)
  %227 = add nuw i64 %.6500598, 3
  %228 = getelementptr inbounds double, ptr %20, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %21, i64 %227
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = call double @llvm.fmuladd.f64(double %229, double %231, double %226)
  %233 = 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 double [ poison, %.lr.ph601.preheader ], [ %232, %.lr.ph601 ]
  %.1599.unr = phi double [ 0.000000e+00, %.lr.ph601.preheader ], [ %232, %.lr.ph601 ]
  %.6500598.unr = phi i64 [ 1, %.lr.ph601.preheader ], [ %233, %.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 double [ %238, %.lr.ph601.epil ], [ %.1599.unr, %._crit_edge602.loopexit.unr-lcssa ]
  %.6500598.epil = phi i64 [ %239, %.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 ]
  %234 = getelementptr inbounds double, ptr %20, i64 %.6500598.epil
  %235 = load double, ptr %234, align 8, !tbaa !9
  %236 = getelementptr inbounds double, ptr %21, i64 %.6500598.epil
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = call double @llvm.fmuladd.f64(double %235, double %237, double %.1599.epil)
  %239 = 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, %144, %.loopexit531
  %.1.lcssa = phi double [ 0.000000e+00, %.loopexit531 ], [ 0.000000e+00, %144 ], [ %.lcssa729.ph, %._crit_edge602.loopexit.unr-lcssa ], [ %238, %.lr.ph601.epil ]
  %240 = sitofp i64 %145 to double
  %241 = fdiv double %.1.lcssa, %240
  %242 = mul nsw i64 %145, 3
  %243 = shl i64 %145, 1
  %.not519604.not = icmp slt i64 %243, %242
  br i1 %.not519604.not, label %.lr.ph607, label %._crit_edge608

.lr.ph607:                                        ; preds = %._crit_edge602
  %244 = or disjoint i64 %243, 1
  %245 = fneg double %241
  %min.iters.check710 = icmp ult i64 %145, 4
  br i1 %min.iters.check710, label %scalar.ph709.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph607
  %246 = shl i64 %145, 4
  %247 = add i64 %143, %246
  %diff.check = icmp ult i64 %247, 32
  %diff.check707 = icmp ult i64 %246, 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 %145, -4
  %ind.end714 = add i64 %244, %n.vec713
  %broadcast.splatinsert = insertelement <2 x double> poison, double %245, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 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 %244, %index717
  %248 = sub nsw i64 %offset.idx718, %243
  %249 = getelementptr inbounds double, ptr %20, i64 %248
  %250 = getelementptr inbounds i8, ptr %249, i64 16
  %wide.load719 = load <2 x double>, ptr %249, align 8, !tbaa !9
  %wide.load720 = load <2 x double>, ptr %250, align 8, !tbaa !9
  %251 = getelementptr inbounds double, ptr %21, i64 %248
  %252 = getelementptr inbounds i8, ptr %251, i64 16
  %wide.load721 = load <2 x double>, ptr %251, align 8, !tbaa !9
  %wide.load722 = load <2 x double>, ptr %252, align 8, !tbaa !9
  %253 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load719, <2 x double> %wide.load721, <2 x double> %broadcast.splat)
  %254 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load720, <2 x double> %wide.load722, <2 x double> %broadcast.splat)
  %255 = getelementptr inbounds double, ptr %21, i64 %offset.idx718
  %256 = getelementptr inbounds i8, ptr %255, i64 16
  store <2 x double> %253, ptr %255, align 8, !tbaa !9
  store <2 x double> %254, ptr %256, align 8, !tbaa !9
  %index.next723 = add nuw i64 %index717, 4
  %257 = icmp eq i64 %index.next723, %n.vec713
  br i1 %257, label %middle.block708, label %vector.body716, !llvm.loop !27

middle.block708:                                  ; preds = %vector.body716
  %cmp.n724 = icmp eq i64 %145, %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 [ %244, %vector.memcheck ], [ %244, %.lr.ph607 ], [ %ind.end714, %middle.block708 ]
  %258 = add i64 %242, %.7501605.ph
  %259 = and i64 %258, 1
  %lcmp.mod739.not.not = icmp eq i64 %259, 0
  br i1 %lcmp.mod739.not.not, label %scalar.ph709.prol, label %scalar.ph709.prol.loopexit

scalar.ph709.prol:                                ; preds = %scalar.ph709.preheader
  %260 = sub nsw i64 %.7501605.ph, %243
  %261 = getelementptr inbounds double, ptr %20, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = getelementptr inbounds double, ptr %21, i64 %260
  %264 = load double, ptr %263, align 8, !tbaa !9
  %265 = call double @llvm.fmuladd.f64(double %262, double %264, double %245)
  %266 = getelementptr inbounds double, ptr %21, i64 %.7501605.ph
  store double %265, ptr %266, align 8, !tbaa !9
  %267 = 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 ], [ %267, %scalar.ph709.prol ]
  %268 = icmp eq i64 %242, %.7501605.ph
  br i1 %268, label %._crit_edge608, label %scalar.ph709

scalar.ph709:                                     ; preds = %scalar.ph709.prol.loopexit, %scalar.ph709
  %.7501605 = phi i64 [ %284, %scalar.ph709 ], [ %.7501605.unr, %scalar.ph709.prol.loopexit ]
  %269 = sub nsw i64 %.7501605, %243
  %270 = getelementptr inbounds double, ptr %20, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = getelementptr inbounds double, ptr %21, i64 %269
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = call double @llvm.fmuladd.f64(double %271, double %273, double %245)
  %275 = getelementptr inbounds double, ptr %21, i64 %.7501605
  store double %274, ptr %275, align 8, !tbaa !9
  %276 = add i64 %.7501605, 1
  %277 = sub nsw i64 %276, %243
  %278 = getelementptr inbounds double, ptr %20, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = getelementptr inbounds double, ptr %21, i64 %277
  %281 = load double, ptr %280, align 8, !tbaa !9
  %282 = call double @llvm.fmuladd.f64(double %279, double %281, double %245)
  %283 = getelementptr double, ptr %7, i64 %.7501605
  store double %282, ptr %283, align 8, !tbaa !9
  %284 = add i64 %.7501605, 2
  %exitcond664.not.1 = icmp eq i64 %276, %242
  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 %145, 4
  %285 = getelementptr i8, ptr %7, i64 %.idx
  %286 = call i32 @dlassq_(ptr noundef nonnull %1, ptr noundef %285, ptr noundef nonnull @c__1, ptr noundef nonnull %15, ptr noundef nonnull %16) #7
  %287 = load double, ptr %15, align 8, !tbaa !9
  %288 = load double, ptr %16, align 8, !tbaa !9
  %289 = load i64, ptr %1, align 8, !tbaa !5
  %290 = sitofp i64 %289 to double
  %291 = fdiv double %288, %290
  %292 = call double @sqrt(double noundef %291) #7
  %293 = fmul double %287, %292
  %294 = fmul double %141, %241
  %295 = fcmp olt double %293, %294
  br i1 %295, label %399, label %296

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

.lr.ph634:                                        ; preds = %296, %.loopexit
  %298 = phi i64 [ %389, %.loopexit ], [ %297, %296 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %.loopexit ], [ 2, %296 ]
  %.2632 = phi double [ %395, %.loopexit ], [ %241, %296 ]
  %.8502630 = phi i64 [ %396, %.loopexit ], [ 1, %296 ]
  %299 = mul nsw i64 %.8502630, %17
  %300 = getelementptr double, ptr %19, i64 %.8502630
  %301 = getelementptr double, ptr %300, i64 %299
  %302 = load double, ptr %301, align 8, !tbaa !9
  %303 = fcmp oge double %302, 0.000000e+00
  %304 = fneg double %302
  %305 = select i1 %303, double %302, double %304
  %306 = getelementptr inbounds double, ptr %20, i64 %.8502630
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = add nsw i64 %298, -1
  %309 = sitofp i64 %308 to double
  %310 = fmul double %305, %309
  %311 = add nsw i64 %298, -2
  %312 = sitofp i64 %311 to double
  %313 = getelementptr inbounds double, ptr %21, i64 %.8502630
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fneg double %305
  %316 = call double @llvm.fmuladd.f64(double %315, double %307, double %314)
  %317 = fmul double %316, %312
  %318 = fmul double %307, %315
  %319 = fmul double %314, 2.000000e+00
  %320 = fmul double %307, %319
  %321 = call double @llvm.fmuladd.f64(double %318, double %307, double %320)
  %322 = sitofp i64 %298 to double
  %323 = fneg double %322
  %324 = call double @llvm.fmuladd.f64(double %323, double %.2632, double %321)
  %325 = fmul double %324, -4.000000e+00
  %326 = fmul double %310, %325
  %327 = call double @llvm.fmuladd.f64(double %317, double %317, double %326)
  %328 = fcmp ugt double %327, 0.000000e+00
  br i1 %328, label %330, label %329

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

330:                                              ; preds = %.lr.ph634
  %331 = fmul double %324, -2.000000e+00
  %332 = call double @sqrt(double noundef %327) #7
  %333 = fadd double %317, %332
  %334 = fdiv double %331, %333
  %335 = load double, ptr %306, align 8, !tbaa !9
  %336 = fsub double %334, %335
  br i1 %.not509673, label %.preheader, label %337

337:                                              ; preds = %330
  %invariant.gep609 = getelementptr double, ptr %19, i64 %299
  br label %338

338:                                              ; preds = %337, %338
  %.0485612 = phi double [ 0.000000e+00, %337 ], [ %345, %338 ]
  %.5611 = phi i64 [ 1, %337 ], [ %349, %338 ]
  %gep610 = getelementptr double, ptr %invariant.gep609, i64 %.5611
  %339 = load double, ptr %gep610, align 8, !tbaa !9
  %340 = fcmp oge double %339, 0.000000e+00
  %341 = fneg double %339
  %342 = select i1 %340, double %339, double %341
  %343 = getelementptr inbounds double, ptr %20, i64 %.5611
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = call double @llvm.fmuladd.f64(double %344, double %342, double %.0485612)
  %346 = getelementptr inbounds double, ptr %21, i64 %.5611
  %347 = load double, ptr %346, align 8, !tbaa !9
  %348 = call double @llvm.fmuladd.f64(double %336, double %342, double %347)
  store double %348, ptr %346, align 8, !tbaa !9
  %349 = add nuw i64 %.5611, 1
  %exitcond665.not = icmp eq i64 %349, %indvars.iv
  br i1 %exitcond665.not, label %350, label %338, !llvm.loop !29

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

.lr.ph617:                                        ; preds = %350, %.lr.ph617
  %.1486615 = phi double [ %360, %.lr.ph617 ], [ %345, %350 ]
  %.6.in614 = phi i64 [ %.6, %.lr.ph617 ], [ %.8502630, %350 ]
  %.6 = add nuw nsw i64 %.6.in614, 1
  %352 = mul nsw i64 %.6, %17
  %353 = getelementptr double, ptr %300, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = fcmp oge double %354, 0.000000e+00
  %356 = fneg double %354
  %357 = select i1 %355, double %354, double %356
  %358 = getelementptr double, ptr %4, i64 %.6.in614
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = call double @llvm.fmuladd.f64(double %359, double %357, double %.1486615)
  %361 = getelementptr double, ptr %7, i64 %.6.in614
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = call double @llvm.fmuladd.f64(double %336, double %357, double %362)
  store double %363, ptr %361, align 8, !tbaa !9
  %.not524.not = icmp slt i64 %.6, %351
  br i1 %.not524.not, label %.lr.ph617, label %.loopexit, !llvm.loop !30

.preheader:                                       ; preds = %330, %.preheader
  %.2487620 = phi double [ %372, %.preheader ], [ 0.000000e+00, %330 ]
  %.7619 = phi i64 [ %376, %.preheader ], [ 1, %330 ]
  %364 = mul nsw i64 %.7619, %17
  %365 = getelementptr double, ptr %300, i64 %364
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = fcmp oge double %366, 0.000000e+00
  %368 = fneg double %366
  %369 = select i1 %367, double %366, double %368
  %370 = getelementptr inbounds double, ptr %20, i64 %.7619
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = call double @llvm.fmuladd.f64(double %371, double %369, double %.2487620)
  %373 = getelementptr inbounds double, ptr %21, i64 %.7619
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = call double @llvm.fmuladd.f64(double %336, double %369, double %374)
  store double %375, ptr %373, align 8, !tbaa !9
  %376 = add nuw i64 %.7619, 1
  %exitcond666.not = icmp eq i64 %376, %indvars.iv
  br i1 %exitcond666.not, label %377, label %.preheader, !llvm.loop !31

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

.lr.ph627:                                        ; preds = %377, %.lr.ph627
  %.3488625 = phi double [ %385, %.lr.ph627 ], [ %372, %377 ]
  %.8.in624 = phi i64 [ %.8, %.lr.ph627 ], [ %.8502630, %377 ]
  %.8 = add nuw nsw i64 %.8.in624, 1
  %gep622 = getelementptr double, ptr %invariant.gep621, i64 %.8
  %379 = load double, ptr %gep622, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = getelementptr double, ptr %4, i64 %.8.in624
  %384 = load double, ptr %383, align 8, !tbaa !9
  %385 = call double @llvm.fmuladd.f64(double %384, double %382, double %.3488625)
  %386 = getelementptr double, ptr %7, i64 %.8.in624
  %387 = load double, ptr %386, align 8, !tbaa !9
  %388 = call double @llvm.fmuladd.f64(double %336, double %382, double %387)
  store double %388, ptr %386, align 8, !tbaa !9
  %.not522.not = icmp slt i64 %.8, %378
  br i1 %.not522.not, label %.lr.ph627, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %.lr.ph617, %.lr.ph627, %350, %377
  %389 = phi i64 [ %378, %377 ], [ %351, %350 ], [ %378, %.lr.ph627 ], [ %351, %.lr.ph617 ]
  %.4 = phi double [ %372, %377 ], [ %345, %350 ], [ %385, %.lr.ph627 ], [ %360, %.lr.ph617 ]
  %390 = load double, ptr %313, align 8, !tbaa !9
  %391 = fadd double %.4, %390
  %392 = fmul double %336, %391
  %393 = sitofp i64 %389 to double
  %394 = fdiv double %392, %393
  %395 = fadd double %.2632, %394
  store double %334, ptr %306, align 8, !tbaa !9
  %396 = add nuw nsw i64 %.8502630, 1
  %.not520.not = icmp slt i64 %.8502630, %297
  %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, %296
  %397 = phi i64 [ %297, %296 ], [ %389, %.loopexit ]
  %.2.lcssa = phi double [ %241, %296 ], [ %395, %.loopexit ]
  %398 = add nuw nsw i64 %.0483637, 1
  %exitcond667.not = icmp eq i64 %398, 101
  br i1 %exitcond667.not, label %399, label %144, !llvm.loop !34

399:                                              ; preds = %._crit_edge635, %._crit_edge608
  %.3 = phi double [ %241, %._crit_edge608 ], [ %.2.lcssa, %._crit_edge635 ]
  %400 = call double @dlamch_(ptr noundef nonnull @.str.3) #7
  %401 = fdiv double 1.000000e+00, %400
  %402 = call double @sqrt(double noundef %.3) #7
  %403 = fdiv double 1.000000e+00, %402
  %404 = call double @dlamch_(ptr noundef nonnull @.str.4) #7
  store double %404, ptr %14, align 8, !tbaa !9
  %405 = call double @log(double noundef %404) #7
  %406 = fdiv double 1.000000e+00, %405
  %407 = load i64, ptr %1, align 8, !tbaa !5
  %.not525638 = icmp slt i64 %407, 1
  br i1 %.not525638, label %._crit_edge644, label %.lr.ph643

.lr.ph643:                                        ; preds = %399, %.lr.ph643
  %.0481641 = phi double [ %418, %.lr.ph643 ], [ 0.000000e+00, %399 ]
  %.0482640 = phi double [ %416, %.lr.ph643 ], [ %401, %399 ]
  %.9639 = phi i64 [ %419, %.lr.ph643 ], [ 1, %399 ]
  %408 = getelementptr inbounds double, ptr %20, i64 %.9639
  %409 = load double, ptr %408, align 8, !tbaa !9
  %410 = fmul double %403, %409
  %411 = call double @log(double noundef %410) #7
  %412 = fmul double %406, %411
  %413 = fptosi double %412 to i64
  store i64 %413, ptr %13, align 8, !tbaa !5
  %414 = call double @pow_di(ptr noundef nonnull %14, ptr noundef nonnull %13) #7
  store double %414, ptr %408, align 8, !tbaa !9
  %415 = fcmp ole double %.0482640, %414
  %416 = select i1 %415, double %.0482640, double %414
  %417 = fcmp oge double %.0481641, %414
  %418 = select i1 %417, double %.0481641, double %414
  %419 = add nuw nsw i64 %.9639, 1
  %.not525.not = icmp slt i64 %.9639, %407
  br i1 %.not525.not, label %.lr.ph643, label %._crit_edge644, !llvm.loop !35

._crit_edge644:                                   ; preds = %.lr.ph643, %399
  %.0482.lcssa = phi double [ %401, %399 ], [ %416, %.lr.ph643 ]
  %.0481.lcssa = phi double [ 0.000000e+00, %399 ], [ %418, %.lr.ph643 ]
  %420 = fcmp oge double %.0482.lcssa, %400
  %421 = select i1 %420, double %.0482.lcssa, double %400
  %422 = fcmp ole double %.0481.lcssa, %401
  %423 = select i1 %422, double %.0481.lcssa, double %401
  %424 = fdiv double %421, %423
  store double %424, ptr %5, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %._crit_edge644, %329, %39, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, 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

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

declare double @dlamch_(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_di(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 <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = !{!"double", !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