; LLVM IR from james34602/quadprog :: solvopt (solvopt)

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

@__const.solvopt.default_options = external hidden unnamed_addr constant [13 x double], align 16
@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [53 x i8], align 1
@endwarn1 = external hidden global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@endwarn4 = external hidden global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [29 x i8], align 1
@endwarn2 = external hidden global ptr, align 8
@endwarn3 = external hidden global ptr, align 8
@appwarn = external hidden global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @apprgrdn(i32 noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #0

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @null_entry3(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local double @null_entry2(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local double @solvopt(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca double, align 8
  %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 [13 x double], align 16
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca [3 x double], align 16
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca [10 x double], align 16
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca double, align 8
  %111 = alloca double, align 8
  %112 = alloca double, align 8
  %113 = alloca double, align 8
  %114 = alloca double, align 8
  %115 = alloca double, align 8
  %116 = alloca double, align 8
  %117 = alloca double, align 8
  %118 = alloca double, align 8
  %119 = alloca double, align 8
  %120 = alloca double, align 8
  %121 = alloca double, align 8
  %122 = alloca double, align 8
  %123 = alloca double, align 8
  %124 = alloca double, align 8
  %125 = alloca double, align 8
  %126 = alloca double, align 8
  %127 = alloca double, align 8
  %128 = alloca ptr, align 8
  %129 = alloca ptr, align 8
  %130 = alloca ptr, align 8
  %131 = alloca ptr, align 8
  %132 = alloca ptr, align 8
  %133 = alloca ptr, align 8
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca ptr, align 8
  %137 = alloca ptr, align 8
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca ptr, align 8
  %141 = alloca ptr, align 8
  %142 = alloca ptr, align 8
  %143 = alloca i32, align 4
  %144 = alloca ptr, align 8
  store i32 %0, ptr %10, align 4, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !9
  store ptr %2, ptr %12, align 8, !tbaa !9
  store ptr %3, ptr %13, align 8, !tbaa !9
  store ptr %4, ptr %14, align 8, !tbaa !9
  store ptr %5, ptr %15, align 8, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !9
  store ptr %7, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 104, ptr %18) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %18, ptr align 16 @__const.solvopt.default_options, i64 104, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %61) #8
  call void @llvm.memset.p0.i64(ptr align 16 %61, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr %64) #8
  call void @llvm.memset.p0.i64(ptr align 16 %64, i8 0, i64 80, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #8
  store double 0.000000e+00, ptr %112, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  store double 1.000000e+00, ptr %113, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  store double 2.000000e+00, ptr %114, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  store double 3.000000e+00, ptr %115, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  store double 4.000000e+00, ptr %116, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  store double 5.000000e+00, ptr %117, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  store double 6.000000e+00, ptr %118, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  store double 7.000000e+00, ptr %119, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  store double 8.000000e+00, ptr %120, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  store double 9.000000e+00, ptr %121, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  store double 1.000000e+01, ptr %122, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  store double 1.000000e+02, ptr %123, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  store double 0x7FDFFFFFFFFFFFFF, ptr %124, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  store double 0x3CB0000000000000, ptr %125, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  store double 0x3970000000000000, ptr %126, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #8
  store double 0x3D719799812DEA11, ptr %127, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #8
  store ptr null, ptr %142, align 8, !tbaa !9
  %145 = load i32, ptr %10, align 4, !tbaa !5
  %146 = icmp ult i32 %145, 2
  br i1 %146, label %147, label %151

147:                                              ; preds = %8
  %148 = call i32 (ptr, ...) @printf(ptr noundef @.str)
  %149 = load ptr, ptr %14, align 8, !tbaa !9
  %150 = getelementptr inbounds double, ptr %149, i64 8
  store double -1.000000e+00, ptr %150, align 8, !tbaa !11
  store double 0.000000e+00, ptr %9, align 8
  store i32 1, ptr %143, align 4
  br label %3550

151:                                              ; preds = %8
  %152 = load i32, ptr %10, align 4, !tbaa !5
  %153 = uitofp i32 %152 to double
  store double %153, ptr %72, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #8
  %154 = load i32, ptr %10, align 4, !tbaa !5
  %155 = load i32, ptr %10, align 4, !tbaa !5
  %156 = mul i32 %154, %155
  %157 = zext i32 %156 to i64
  %158 = mul i64 %157, 8
  %159 = load i32, ptr %10, align 4, !tbaa !5
  %160 = mul i32 13, %159
  %161 = zext i32 %160 to i64
  %162 = mul i64 %161, 8
  %163 = add i64 %158, %162
  %164 = load i32, ptr %10, align 4, !tbaa !5
  %165 = zext i32 %164 to i64
  %166 = mul i64 %165, 4
  %167 = add i64 %163, %166
  %168 = call noalias ptr @malloc(i64 noundef %167) #9
  store ptr %168, ptr %144, align 8, !tbaa !9
  %169 = load ptr, ptr %144, align 8, !tbaa !9
  %170 = load i32, ptr %10, align 4, !tbaa !5
  %171 = load i32, ptr %10, align 4, !tbaa !5
  %172 = mul i32 %170, %171
  %173 = zext i32 %172 to i64
  %174 = mul i64 %173, 8
  %175 = load i32, ptr %10, align 4, !tbaa !5
  %176 = mul i32 13, %175
  %177 = zext i32 %176 to i64
  %178 = mul i64 %177, 8
  %179 = add i64 %174, %178
  %180 = load i32, ptr %10, align 4, !tbaa !5
  %181 = zext i32 %180 to i64
  %182 = mul i64 %181, 4
  %183 = add i64 %179, %182
  call void @llvm.memset.p0.i64(ptr align 1 %169, i8 0, i64 %183, i1 false)
  %184 = load ptr, ptr %144, align 8, !tbaa !9
  store ptr %184, ptr %128, align 8, !tbaa !9
  %185 = load ptr, ptr %128, align 8, !tbaa !9
  %186 = load i32, ptr %10, align 4, !tbaa !5
  %187 = load i32, ptr %10, align 4, !tbaa !5
  %188 = mul i32 %186, %187
  %189 = zext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %185, i64 %189
  store ptr %190, ptr %129, align 8, !tbaa !9
  %191 = load ptr, ptr %129, align 8, !tbaa !9
  %192 = load i32, ptr %10, align 4, !tbaa !5
  %193 = zext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %191, i64 %193
  store ptr %194, ptr %130, align 8, !tbaa !9
  %195 = load ptr, ptr %130, align 8, !tbaa !9
  %196 = load i32, ptr %10, align 4, !tbaa !5
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %195, i64 %197
  store ptr %198, ptr %131, align 8, !tbaa !9
  %199 = load ptr, ptr %131, align 8, !tbaa !9
  %200 = load i32, ptr %10, align 4, !tbaa !5
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %199, i64 %201
  store ptr %202, ptr %132, align 8, !tbaa !9
  %203 = load ptr, ptr %132, align 8, !tbaa !9
  %204 = load i32, ptr %10, align 4, !tbaa !5
  %205 = zext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %203, i64 %205
  store ptr %206, ptr %133, align 8, !tbaa !9
  %207 = load ptr, ptr %133, align 8, !tbaa !9
  %208 = load i32, ptr %10, align 4, !tbaa !5
  %209 = zext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %207, i64 %209
  store ptr %210, ptr %134, align 8, !tbaa !9
  %211 = load ptr, ptr %134, align 8, !tbaa !9
  %212 = load i32, ptr %10, align 4, !tbaa !5
  %213 = zext i32 %212 to i64
  %214 = getelementptr inbounds double, ptr %211, i64 %213
  store ptr %214, ptr %135, align 8, !tbaa !9
  %215 = load ptr, ptr %135, align 8, !tbaa !9
  %216 = load i32, ptr %10, align 4, !tbaa !5
  %217 = zext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %215, i64 %217
  store ptr %218, ptr %136, align 8, !tbaa !9
  %219 = load ptr, ptr %136, align 8, !tbaa !9
  %220 = load i32, ptr %10, align 4, !tbaa !5
  %221 = zext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %219, i64 %221
  store ptr %222, ptr %137, align 8, !tbaa !9
  %223 = load ptr, ptr %137, align 8, !tbaa !9
  %224 = load i32, ptr %10, align 4, !tbaa !5
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %223, i64 %225
  store ptr %226, ptr %138, align 8, !tbaa !9
  %227 = load ptr, ptr %138, align 8, !tbaa !9
  %228 = load i32, ptr %10, align 4, !tbaa !5
  %229 = zext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %227, i64 %229
  store ptr %230, ptr %139, align 8, !tbaa !9
  %231 = load ptr, ptr %139, align 8, !tbaa !9
  %232 = load i32, ptr %10, align 4, !tbaa !5
  %233 = zext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %231, i64 %233
  store ptr %234, ptr %140, align 8, !tbaa !9
  %235 = load ptr, ptr %140, align 8, !tbaa !9
  %236 = load i32, ptr %10, align 4, !tbaa !5
  %237 = zext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %235, i64 %237
  store ptr %238, ptr %141, align 8, !tbaa !9
  %239 = load ptr, ptr %144, align 8, !tbaa !9
  %240 = icmp eq ptr %239, null
  br i1 %240, label %241, label %245

241:                                              ; preds = %151
  %242 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %243 = load ptr, ptr %14, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %243, i64 8
  store double -1.000000e+00, ptr %244, align 8, !tbaa !11
  store double 0.000000e+00, ptr %9, align 8
  store i32 1, ptr %143, align 4
  br label %3549

245:                                              ; preds = %151
  %246 = load ptr, ptr %13, align 8, !tbaa !9
  %247 = icmp eq ptr %246, @null_entry3
  br i1 %247, label %248, label %249

248:                                              ; preds = %245
  store i32 1, ptr %20, align 4, !tbaa !5
  br label %250

249:                                              ; preds = %245
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %250

250:                                              ; preds = %249, %248
  %251 = load ptr, ptr %15, align 8, !tbaa !9
  %252 = icmp eq ptr %251, @null_entry2
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %260

254:                                              ; preds = %250
  store i32 1, ptr %19, align 4, !tbaa !5
  %255 = load ptr, ptr %16, align 8, !tbaa !9
  %256 = icmp eq ptr %255, @null_entry3
  br i1 %256, label %257, label %258

257:                                              ; preds = %254
  store i32 1, ptr %21, align 4, !tbaa !5
  br label %259

258:                                              ; preds = %254
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %259

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

260:                                              ; preds = %259, %253
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %261

261:                                              ; preds = %383, %260
  %262 = load i32, ptr %46, align 4, !tbaa !5
  %263 = icmp ule i32 %262, 7
  br i1 %263, label %264, label %386

264:                                              ; preds = %261
  %265 = load ptr, ptr %14, align 8, !tbaa !9
  %266 = load i32, ptr %46, align 4, !tbaa !5
  %267 = zext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %265, i64 %267
  %269 = load double, ptr %268, align 8, !tbaa !11
  %270 = fcmp oeq double %269, 0.000000e+00
  br i1 %270, label %271, label %280

271:                                              ; preds = %264
  %272 = load i32, ptr %46, align 4, !tbaa !5
  %273 = zext i32 %272 to i64
  %274 = getelementptr inbounds [13 x double], ptr %18, i64 0, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = load ptr, ptr %14, align 8, !tbaa !9
  %277 = load i32, ptr %46, align 4, !tbaa !5
  %278 = zext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %276, i64 %278
  store double %275, ptr %279, align 8, !tbaa !11
  br label %382

280:                                              ; preds = %264
  %281 = load i32, ptr %46, align 4, !tbaa !5
  %282 = icmp eq i32 %281, 1
  br i1 %282, label %289, label %283

283:                                              ; preds = %280
  %284 = load i32, ptr %46, align 4, !tbaa !5
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %289, label %286

286:                                              ; preds = %283
  %287 = load i32, ptr %46, align 4, !tbaa !5
  %288 = icmp eq i32 %287, 5
  br i1 %288, label %289, label %359

289:                                              ; preds = %286, %283, %280
  %290 = load ptr, ptr %14, align 8, !tbaa !9
  %291 = load i32, ptr %46, align 4, !tbaa !5
  %292 = zext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %290, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !11
  %295 = fcmp ogt double %294, 0x3D719799812DEA11
  br i1 %295, label %296, label %302

296:                                              ; preds = %289
  %297 = load ptr, ptr %14, align 8, !tbaa !9
  %298 = load i32, ptr %46, align 4, !tbaa !5
  %299 = zext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  br label %303

302:                                              ; preds = %289
  br label %303

303:                                              ; preds = %302, %296
  %304 = phi double [ %301, %296 ], [ 0x3D719799812DEA11, %302 ]
  %305 = load ptr, ptr %14, align 8, !tbaa !9
  %306 = load i32, ptr %46, align 4, !tbaa !5
  %307 = zext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  store double %304, ptr %308, align 8, !tbaa !11
  %309 = load ptr, ptr %14, align 8, !tbaa !9
  %310 = load i32, ptr %46, align 4, !tbaa !5
  %311 = zext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !11
  %314 = fcmp olt double %313, 1.000000e+00
  br i1 %314, label %315, label %321

315:                                              ; preds = %303
  %316 = load ptr, ptr %14, align 8, !tbaa !9
  %317 = load i32, ptr %46, align 4, !tbaa !5
  %318 = zext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %316, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !11
  br label %322

321:                                              ; preds = %303
  br label %322

322:                                              ; preds = %321, %315
  %323 = phi double [ %320, %315 ], [ 1.000000e+00, %321 ]
  %324 = load ptr, ptr %14, align 8, !tbaa !9
  %325 = load i32, ptr %46, align 4, !tbaa !5
  %326 = zext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  store double %323, ptr %327, align 8, !tbaa !11
  %328 = load i32, ptr %46, align 4, !tbaa !5
  %329 = icmp eq i32 %328, 1
  br i1 %329, label %330, label %358

330:                                              ; preds = %322
  %331 = load ptr, ptr %14, align 8, !tbaa !9
  %332 = load i32, ptr %46, align 4, !tbaa !5
  %333 = zext i32 %332 to i64
  %334 = getelementptr inbounds double, ptr %331, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !11
  %336 = load ptr, ptr %14, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %336, i64 8
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = fmul double %338, 1.000000e+02
  %340 = fcmp ogt double %335, %339
  br i1 %340, label %341, label %347

341:                                              ; preds = %330
  %342 = load ptr, ptr %14, align 8, !tbaa !9
  %343 = load i32, ptr %46, align 4, !tbaa !5
  %344 = zext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %342, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !11
  br label %352

347:                                              ; preds = %330
  %348 = load ptr, ptr %14, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %348, i64 8
  %350 = load double, ptr %349, align 8, !tbaa !11
  %351 = fmul double %350, 1.000000e+02
  br label %352

352:                                              ; preds = %347, %341
  %353 = phi double [ %346, %341 ], [ %351, %347 ]
  %354 = load ptr, ptr %14, align 8, !tbaa !9
  %355 = load i32, ptr %46, align 4, !tbaa !5
  %356 = zext i32 %355 to i64
  %357 = getelementptr inbounds double, ptr %354, i64 %356
  store double %353, ptr %357, align 8, !tbaa !11
  br label %358

358:                                              ; preds = %352, %322
  br label %381

359:                                              ; preds = %286
  %360 = load i32, ptr %46, align 4, !tbaa !5
  %361 = icmp eq i32 %360, 6
  br i1 %361, label %362, label %380

362:                                              ; preds = %359
  %363 = load ptr, ptr %14, align 8, !tbaa !9
  %364 = load i32, ptr %46, align 4, !tbaa !5
  %365 = zext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %363, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = fcmp ogt double %367, 1.500000e+00
  br i1 %368, label %369, label %375

369:                                              ; preds = %362
  %370 = load ptr, ptr %14, align 8, !tbaa !9
  %371 = load i32, ptr %46, align 4, !tbaa !5
  %372 = zext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %370, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !11
  br label %376

375:                                              ; preds = %362
  br label %376

376:                                              ; preds = %375, %369
  %377 = phi double [ %374, %369 ], [ 1.500000e+00, %375 ]
  %378 = load ptr, ptr %14, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %378, i64 6
  store double %377, ptr %379, align 8, !tbaa !11
  br label %380

380:                                              ; preds = %376, %359
  br label %381

381:                                              ; preds = %380, %358
  br label %382

382:                                              ; preds = %381, %271
  br label %383

383:                                              ; preds = %382
  %384 = load i32, ptr %46, align 4, !tbaa !5
  %385 = add i32 %384, 1
  store i32 %385, ptr %46, align 4, !tbaa !5
  br label %261, !llvm.loop !13

386:                                              ; preds = %261
  store i32 8, ptr %46, align 4, !tbaa !5
  br label %387

387:                                              ; preds = %395, %386
  %388 = load i32, ptr %46, align 4, !tbaa !5
  %389 = icmp ule i32 %388, 12
  br i1 %389, label %390, label %398

390:                                              ; preds = %387
  %391 = load ptr, ptr %14, align 8, !tbaa !9
  %392 = load i32, ptr %46, align 4, !tbaa !5
  %393 = zext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %391, i64 %393
  store double 0.000000e+00, ptr %394, align 8, !tbaa !11
  br label %395

395:                                              ; preds = %390
  %396 = load i32, ptr %46, align 4, !tbaa !5
  %397 = add i32 %396, 1
  store i32 %397, ptr %46, align 4, !tbaa !5
  br label %387, !llvm.loop !15

398:                                              ; preds = %387
  %399 = load ptr, ptr %14, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %399, i64 3
  %401 = load double, ptr %400, align 8, !tbaa !11
  %402 = fptoui double %401 to i32
  store i32 %402, ptr %54, align 4, !tbaa !5
  %403 = load i32, ptr %19, align 4, !tbaa !5
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %409

405:                                              ; preds = %398
  store double -1.000000e+00, ptr %99, align 8, !tbaa !11
  %406 = load ptr, ptr %14, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %406, i64 5
  %408 = load double, ptr %407, align 8, !tbaa !11
  store double %408, ptr %73, align 8, !tbaa !11
  br label %417

409:                                              ; preds = %398
  %410 = load ptr, ptr %14, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %410, i64 0
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = fcmp olt double %412, 0.000000e+00
  br i1 %413, label %414, label %415

414:                                              ; preds = %409
  store double -1.000000e+00, ptr %99, align 8, !tbaa !11
  br label %416

415:                                              ; preds = %409
  store double 1.000000e+00, ptr %99, align 8, !tbaa !11
  br label %416

416:                                              ; preds = %415, %414
  br label %417

417:                                              ; preds = %416, %405
  %418 = load ptr, ptr %14, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %418, i64 6
  %420 = load double, ptr %419, align 8, !tbaa !11
  %421 = fdiv double 1.000000e+00, %420
  %422 = fsub double %421, 1.000000e+00
  store double %422, ptr %98, align 8, !tbaa !11
  store i32 0, ptr %34, align 4, !tbaa !5
  %423 = load double, ptr %72, align 8, !tbaa !11
  %424 = load double, ptr %72, align 8, !tbaa !11
  %425 = fmul double %423, %424
  %426 = fdiv double 1.000000e-01, %425
  %427 = fadd double 1.000000e+00, %426
  store double %427, ptr %65, align 8, !tbaa !11
  store i64 20, ptr %37, align 8, !tbaa !16
  %428 = load i64, ptr %37, align 8, !tbaa !16
  store i64 %428, ptr %38, align 8, !tbaa !16
  store double 1.150000e+00, ptr %66, align 8, !tbaa !11
  store i32 0, ptr %33, align 4, !tbaa !5
  %429 = load ptr, ptr %14, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %429, i64 4
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = fcmp ole double %431, 0.000000e+00
  br i1 %432, label %433, label %441

433:                                              ; preds = %417
  store i32 0, ptr %59, align 4, !tbaa !5
  %434 = load ptr, ptr %14, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %434, i64 4
  %436 = load double, ptr %435, align 8, !tbaa !11
  %437 = fcmp oeq double %436, -1.000000e+00
  br i1 %437, label %438, label %439

438:                                              ; preds = %433
  store i32 0, ptr %27, align 4, !tbaa !5
  br label %440

439:                                              ; preds = %433
  store i32 1, ptr %27, align 4, !tbaa !5
  br label %440

440:                                              ; preds = %439, %438
  br label %448

441:                                              ; preds = %417
  %442 = load ptr, ptr %14, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %442, i64 4
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fadd double %444, 1.000000e-01
  %446 = call double @llvm.floor.f64(double %445)
  %447 = fptosi double %446 to i32
  store i32 %447, ptr %59, align 4, !tbaa !5
  store i32 1, ptr %27, align 4, !tbaa !5
  br label %448

448:                                              ; preds = %441, %440
  store double 5.100000e+00, ptr %68, align 8, !tbaa !11
  store double 2.000000e+00, ptr %69, align 8, !tbaa !11
  store double 1.500000e+00, ptr %70, align 8, !tbaa !11
  store double 1.050000e+00, ptr %71, align 8, !tbaa !11
  store i32 3, ptr %32, align 4, !tbaa !5
  %449 = load i32, ptr %20, align 4, !tbaa !5
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %448
  store double 6.300000e+00, ptr %67, align 8, !tbaa !11
  br label %453

452:                                              ; preds = %448
  store double 3.300000e+00, ptr %67, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %452, %451
  store i32 3, ptr %39, align 4, !tbaa !5
  store i32 0, ptr %40, align 4, !tbaa !5
  store i32 50, ptr %41, align 4, !tbaa !5
  %454 = load ptr, ptr %14, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %454, i64 7
  %456 = load double, ptr %455, align 8, !tbaa !11
  %457 = fcmp ogt double 0x3DA5FD7FE1796495, %456
  br i1 %457, label %458, label %459

458:                                              ; preds = %453
  br label %463

459:                                              ; preds = %453
  %460 = load ptr, ptr %14, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %460, i64 7
  %462 = load double, ptr %461, align 8, !tbaa !11
  br label %463

463:                                              ; preds = %459, %458
  %464 = phi double [ 0x3DA5FD7FE1796495, %458 ], [ %462, %459 ]
  store double %464, ptr %76, align 8, !tbaa !11
  store double -9.999000e-01, ptr %74, align 8, !tbaa !11
  %465 = load double, ptr %72, align 8, !tbaa !11
  %466 = fmul double %465, 0x3CB0000000000000
  store double %466, ptr %75, align 8, !tbaa !11
  store i32 0, ptr %42, align 4, !tbaa !5
  %467 = load ptr, ptr %14, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %467, i64 1
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = fcmp ogt double %469, 1.000000e-03
  br i1 %470, label %471, label %475

471:                                              ; preds = %463
  %472 = load ptr, ptr %14, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %472, i64 1
  %474 = load double, ptr %473, align 8, !tbaa !11
  br label %476

475:                                              ; preds = %463
  br label %476

476:                                              ; preds = %475, %471
  %477 = phi double [ %474, %471 ], [ 1.000000e-03, %475 ]
  store double %477, ptr %78, align 8, !tbaa !11
  %478 = load ptr, ptr %14, align 8, !tbaa !9
  %479 = getelementptr inbounds double, ptr %478, i64 2
  %480 = load double, ptr %479, align 8, !tbaa !11
  %481 = load ptr, ptr %14, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %481, i64 2
  %483 = load double, ptr %482, align 8, !tbaa !11
  %484 = fmul double %480, %483
  store double %484, ptr %79, align 8, !tbaa !11
  store i32 0, ptr %43, align 4, !tbaa !5
  %485 = load ptr, ptr %14, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %485, i64 2
  %487 = load double, ptr %486, align 8, !tbaa !11
  %488 = fmul double %487, 1.000000e+02
  store double %488, ptr %80, align 8, !tbaa !11
  %489 = load ptr, ptr %14, align 8, !tbaa !9
  %490 = getelementptr inbounds double, ptr %489, i64 1
  %491 = load double, ptr %490, align 8, !tbaa !11
  %492 = fmul double %491, 1.000000e+01
  store double %492, ptr %81, align 8, !tbaa !11
  store i32 0, ptr %60, align 4, !tbaa !5
  store i32 0, ptr %44, align 4, !tbaa !5
  store i32 0, ptr %45, align 4, !tbaa !5
  store i32 0, ptr %25, align 4, !tbaa !5
  %493 = load ptr, ptr %12, align 8, !tbaa !9
  %494 = load ptr, ptr %11, align 8, !tbaa !9
  %495 = load ptr, ptr %17, align 8, !tbaa !9
  %496 = call double %493(ptr noundef %494, ptr noundef %495)
  store double %496, ptr %83, align 8, !tbaa !11
  %497 = load ptr, ptr %14, align 8, !tbaa !9
  %498 = getelementptr inbounds double, ptr %497, i64 9
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = fadd double %499, 1.000000e+00
  store double %500, ptr %498, align 8, !tbaa !11
  %501 = load double, ptr %83, align 8, !tbaa !11
  %502 = call double @llvm.fabs.f64(double %501)
  %503 = fcmp oge double %502, 0x7FDFFFFFFFFFFFFF
  br i1 %503, label %504, label %513

504:                                              ; preds = %476
  %505 = load i32, ptr %27, align 4, !tbaa !5
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %510

507:                                              ; preds = %504
  %508 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  %509 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %510

510:                                              ; preds = %507, %504
  %511 = load ptr, ptr %14, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %511, i64 8
  store double -3.000000e+00, ptr %512, align 8, !tbaa !11
  br label %3546

513:                                              ; preds = %476
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %514

514:                                              ; preds = %528, %513
  %515 = load i32, ptr %46, align 4, !tbaa !5
  %516 = load i32, ptr %10, align 4, !tbaa !5
  %517 = icmp ult i32 %515, %516
  br i1 %517, label %518, label %531

518:                                              ; preds = %514
  %519 = load ptr, ptr %11, align 8, !tbaa !9
  %520 = load i32, ptr %46, align 4, !tbaa !5
  %521 = zext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %519, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !11
  %524 = load ptr, ptr %137, align 8, !tbaa !9
  %525 = load i32, ptr %46, align 4, !tbaa !5
  %526 = zext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  store double %523, ptr %527, align 8, !tbaa !11
  br label %528

528:                                              ; preds = %518
  %529 = load i32, ptr %46, align 4, !tbaa !5
  %530 = add i32 %529, 1
  store i32 %530, ptr %46, align 4, !tbaa !5
  br label %514, !llvm.loop !18

531:                                              ; preds = %514
  %532 = load double, ptr %83, align 8, !tbaa !11
  store double %532, ptr %91, align 8, !tbaa !11
  %533 = load i32, ptr %19, align 4, !tbaa !5
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %535, label %568

535:                                              ; preds = %531
  store i32 0, ptr %58, align 4, !tbaa !5
  %536 = load double, ptr %83, align 8, !tbaa !11
  store double %536, ptr %84, align 8, !tbaa !11
  %537 = load ptr, ptr %15, align 8, !tbaa !9
  %538 = load ptr, ptr %11, align 8, !tbaa !9
  %539 = load ptr, ptr %17, align 8, !tbaa !9
  %540 = call double %537(ptr noundef %538, ptr noundef %539)
  store double %540, ptr %86, align 8, !tbaa !11
  %541 = load ptr, ptr %14, align 8, !tbaa !9
  %542 = getelementptr inbounds double, ptr %541, i64 11
  %543 = load double, ptr %542, align 8, !tbaa !11
  %544 = fadd double %543, 1.000000e+00
  store double %544, ptr %542, align 8, !tbaa !11
  %545 = load double, ptr %86, align 8, !tbaa !11
  %546 = call double @llvm.fabs.f64(double %545)
  %547 = fcmp oge double %546, 0x7FDFFFFFFFFFFFFF
  br i1 %547, label %548, label %557

548:                                              ; preds = %535
  %549 = load i32, ptr %27, align 4, !tbaa !5
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %554

551:                                              ; preds = %548
  %552 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  %553 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %554

554:                                              ; preds = %551, %548
  %555 = load ptr, ptr %14, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %555, i64 8
  store double -5.000000e+00, ptr %556, align 8, !tbaa !11
  br label %3546

557:                                              ; preds = %535
  store double 1.000000e+00, ptr %94, align 8, !tbaa !11
  %558 = load double, ptr %86, align 8, !tbaa !11
  %559 = load double, ptr %73, align 8, !tbaa !11
  %560 = fcmp ole double %558, %559
  br i1 %560, label %561, label %562

561:                                              ; preds = %557
  store i32 1, ptr %22, align 4, !tbaa !5
  store double 0.000000e+00, ptr %86, align 8, !tbaa !11
  br label %563

562:                                              ; preds = %557
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %563

563:                                              ; preds = %562, %561
  %564 = load double, ptr %83, align 8, !tbaa !11
  %565 = load double, ptr %94, align 8, !tbaa !11
  %566 = load double, ptr %86, align 8, !tbaa !11
  %567 = call double @llvm.fmuladd.f64(double %565, double %566, double %564)
  store double %567, ptr %83, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %563, %531
  %569 = load i32, ptr %20, align 4, !tbaa !5
  %570 = icmp ne i32 %569, 0
  br i1 %570, label %571, label %614

571:                                              ; preds = %568
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %572

572:                                              ; preds = %584, %571
  %573 = load i32, ptr %46, align 4, !tbaa !5
  %574 = load i32, ptr %10, align 4, !tbaa !5
  %575 = icmp ult i32 %573, %574
  br i1 %575, label %576, label %587

576:                                              ; preds = %572
  %577 = load double, ptr %99, align 8, !tbaa !11
  %578 = load double, ptr %76, align 8, !tbaa !11
  %579 = fmul double %577, %578
  %580 = load ptr, ptr %140, align 8, !tbaa !9
  %581 = load i32, ptr %46, align 4, !tbaa !5
  %582 = zext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  store double %579, ptr %583, align 8, !tbaa !11
  br label %584

584:                                              ; preds = %576
  %585 = load i32, ptr %46, align 4, !tbaa !5
  %586 = add i32 %585, 1
  store i32 %586, ptr %46, align 4, !tbaa !5
  br label %572, !llvm.loop !19

587:                                              ; preds = %572
  store i32 1, ptr %31, align 4, !tbaa !5
  %588 = load i32, ptr %19, align 4, !tbaa !5
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %599

590:                                              ; preds = %587
  %591 = load i32, ptr %10, align 4, !tbaa !5
  %592 = load ptr, ptr %129, align 8, !tbaa !9
  %593 = load ptr, ptr %11, align 8, !tbaa !9
  %594 = load double, ptr %84, align 8, !tbaa !11
  %595 = load ptr, ptr %12, align 8, !tbaa !9
  %596 = load ptr, ptr %140, align 8, !tbaa !9
  %597 = load i32, ptr %31, align 4, !tbaa !5
  %598 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %591, ptr noundef %592, ptr noundef %593, double noundef %594, ptr noundef %595, ptr noundef %596, i32 noundef %597, ptr noundef %598)
  br label %608

599:                                              ; preds = %587
  %600 = load i32, ptr %10, align 4, !tbaa !5
  %601 = load ptr, ptr %129, align 8, !tbaa !9
  %602 = load ptr, ptr %11, align 8, !tbaa !9
  %603 = load double, ptr %83, align 8, !tbaa !11
  %604 = load ptr, ptr %12, align 8, !tbaa !9
  %605 = load ptr, ptr %140, align 8, !tbaa !9
  %606 = load i32, ptr %31, align 4, !tbaa !5
  %607 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %600, ptr noundef %601, ptr noundef %602, double noundef %603, ptr noundef %604, ptr noundef %605, i32 noundef %606, ptr noundef %607)
  br label %608

608:                                              ; preds = %599, %590
  %609 = load double, ptr %72, align 8, !tbaa !11
  %610 = load ptr, ptr %14, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %610, i64 9
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = fadd double %612, %609
  store double %613, ptr %611, align 8, !tbaa !11
  br label %623

614:                                              ; preds = %568
  %615 = load ptr, ptr %13, align 8, !tbaa !9
  %616 = load ptr, ptr %11, align 8, !tbaa !9
  %617 = load ptr, ptr %129, align 8, !tbaa !9
  %618 = load ptr, ptr %17, align 8, !tbaa !9
  call void %615(ptr noundef %616, ptr noundef %617, ptr noundef %618)
  %619 = load ptr, ptr %14, align 8, !tbaa !9
  %620 = getelementptr inbounds double, ptr %619, i64 10
  %621 = load double, ptr %620, align 8, !tbaa !11
  %622 = fadd double %621, 1.000000e+00
  store double %622, ptr %620, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %614, %608
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %624

624:                                              ; preds = %641, %623
  %625 = load i32, ptr %46, align 4, !tbaa !5
  %626 = load i32, ptr %10, align 4, !tbaa !5
  %627 = icmp ult i32 %625, %626
  br i1 %627, label %628, label %644

628:                                              ; preds = %624
  %629 = load ptr, ptr %129, align 8, !tbaa !9
  %630 = load i32, ptr %46, align 4, !tbaa !5
  %631 = zext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !11
  %634 = load ptr, ptr %129, align 8, !tbaa !9
  %635 = load i32, ptr %46, align 4, !tbaa !5
  %636 = zext i32 %635 to i64
  %637 = getelementptr inbounds double, ptr %634, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = load double, ptr %103, align 8, !tbaa !11
  %640 = call double @llvm.fmuladd.f64(double %633, double %638, double %639)
  store double %640, ptr %103, align 8, !tbaa !11
  br label %641

641:                                              ; preds = %628
  %642 = load i32, ptr %46, align 4, !tbaa !5
  %643 = add i32 %642, 1
  store i32 %643, ptr %46, align 4, !tbaa !5
  br label %624, !llvm.loop !20

644:                                              ; preds = %624
  %645 = load double, ptr %103, align 8, !tbaa !11
  %646 = call double @sqrt(double noundef %645) #8
  store double %646, ptr %103, align 8, !tbaa !11
  %647 = load double, ptr %103, align 8, !tbaa !11
  %648 = fcmp oge double %647, 0x7FDFFFFFFFFFFFFF
  br i1 %648, label %649, label %658

649:                                              ; preds = %644
  %650 = load i32, ptr %27, align 4, !tbaa !5
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %655

652:                                              ; preds = %649
  %653 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  %654 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %655

655:                                              ; preds = %652, %649
  %656 = load ptr, ptr %14, align 8, !tbaa !9
  %657 = getelementptr inbounds double, ptr %656, i64 8
  store double -4.000000e+00, ptr %657, align 8, !tbaa !11
  br label %3546

658:                                              ; preds = %644
  %659 = load double, ptr %103, align 8, !tbaa !11
  %660 = load double, ptr %75, align 8, !tbaa !11
  %661 = fcmp olt double %659, %660
  br i1 %661, label %662, label %671

662:                                              ; preds = %658
  %663 = load i32, ptr %27, align 4, !tbaa !5
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %668

665:                                              ; preds = %662
  %666 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  %667 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %668

668:                                              ; preds = %665, %662
  %669 = load ptr, ptr %14, align 8, !tbaa !9
  %670 = getelementptr inbounds double, ptr %669, i64 8
  store double -4.000000e+00, ptr %670, align 8, !tbaa !11
  br label %3546

671:                                              ; preds = %658
  br label %672

672:                                              ; preds = %671
  %673 = load i32, ptr %19, align 4, !tbaa !5
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %809

675:                                              ; preds = %672
  %676 = load i32, ptr %22, align 4, !tbaa !5
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %808, label %678

678:                                              ; preds = %675
  %679 = load i32, ptr %21, align 4, !tbaa !5
  %680 = icmp ne i32 %679, 0
  br i1 %680, label %681, label %719

681:                                              ; preds = %678
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %682

682:                                              ; preds = %707, %681
  %683 = load i32, ptr %47, align 4, !tbaa !5
  %684 = load i32, ptr %10, align 4, !tbaa !5
  %685 = icmp ult i32 %683, %684
  br i1 %685, label %686, label %710

686:                                              ; preds = %682
  %687 = load ptr, ptr %11, align 8, !tbaa !9
  %688 = load i32, ptr %47, align 4, !tbaa !5
  %689 = zext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = fcmp oge double %691, 0.000000e+00
  br i1 %692, label %693, label %699

693:                                              ; preds = %686
  %694 = load double, ptr %76, align 8, !tbaa !11
  %695 = load ptr, ptr %140, align 8, !tbaa !9
  %696 = load i32, ptr %47, align 4, !tbaa !5
  %697 = zext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %695, i64 %697
  store double %694, ptr %698, align 8, !tbaa !11
  br label %706

699:                                              ; preds = %686
  %700 = load double, ptr %76, align 8, !tbaa !11
  %701 = fneg double %700
  %702 = load ptr, ptr %140, align 8, !tbaa !9
  %703 = load i32, ptr %47, align 4, !tbaa !5
  %704 = zext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  store double %701, ptr %705, align 8, !tbaa !11
  br label %706

706:                                              ; preds = %699, %693
  br label %707

707:                                              ; preds = %706
  %708 = load i32, ptr %47, align 4, !tbaa !5
  %709 = add i32 %708, 1
  store i32 %709, ptr %47, align 4, !tbaa !5
  br label %682, !llvm.loop !21

710:                                              ; preds = %682
  store i32 0, ptr %31, align 4, !tbaa !5
  %711 = load i32, ptr %10, align 4, !tbaa !5
  %712 = load ptr, ptr %133, align 8, !tbaa !9
  %713 = load ptr, ptr %11, align 8, !tbaa !9
  %714 = load double, ptr %86, align 8, !tbaa !11
  %715 = load ptr, ptr %15, align 8, !tbaa !9
  %716 = load ptr, ptr %140, align 8, !tbaa !9
  %717 = load i32, ptr %31, align 4, !tbaa !5
  %718 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %711, ptr noundef %712, ptr noundef %713, double noundef %714, ptr noundef %715, ptr noundef %716, i32 noundef %717, ptr noundef %718)
  br label %724

719:                                              ; preds = %678
  %720 = load ptr, ptr %16, align 8, !tbaa !9
  %721 = load ptr, ptr %11, align 8, !tbaa !9
  %722 = load ptr, ptr %133, align 8, !tbaa !9
  %723 = load ptr, ptr %17, align 8, !tbaa !9
  call void %720(ptr noundef %721, ptr noundef %722, ptr noundef %723)
  br label %724

724:                                              ; preds = %719, %710
  store double 0.000000e+00, ptr %104, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %725

725:                                              ; preds = %742, %724
  %726 = load i32, ptr %46, align 4, !tbaa !5
  %727 = load i32, ptr %10, align 4, !tbaa !5
  %728 = icmp ult i32 %726, %727
  br i1 %728, label %729, label %745

729:                                              ; preds = %725
  %730 = load ptr, ptr %133, align 8, !tbaa !9
  %731 = load i32, ptr %46, align 4, !tbaa !5
  %732 = zext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !11
  %735 = load ptr, ptr %133, align 8, !tbaa !9
  %736 = load i32, ptr %46, align 4, !tbaa !5
  %737 = zext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  %740 = load double, ptr %104, align 8, !tbaa !11
  %741 = call double @llvm.fmuladd.f64(double %734, double %739, double %740)
  store double %741, ptr %104, align 8, !tbaa !11
  br label %742

742:                                              ; preds = %729
  %743 = load i32, ptr %46, align 4, !tbaa !5
  %744 = add i32 %743, 1
  store i32 %744, ptr %46, align 4, !tbaa !5
  br label %725, !llvm.loop !22

745:                                              ; preds = %725
  %746 = load double, ptr %104, align 8, !tbaa !11
  %747 = call double @sqrt(double noundef %746) #8
  store double %747, ptr %104, align 8, !tbaa !11
  %748 = load double, ptr %104, align 8, !tbaa !11
  %749 = fcmp oge double %748, 0x7FDFFFFFFFFFFFFF
  br i1 %749, label %750, label %759

750:                                              ; preds = %745
  %751 = load i32, ptr %27, align 4, !tbaa !5
  %752 = icmp ne i32 %751, 0
  br i1 %752, label %753, label %756

753:                                              ; preds = %750
  %754 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  %755 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %756

756:                                              ; preds = %753, %750
  %757 = load ptr, ptr %14, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %757, i64 8
  store double -6.000000e+00, ptr %758, align 8, !tbaa !11
  br label %3546

759:                                              ; preds = %745
  %760 = load double, ptr %104, align 8, !tbaa !11
  %761 = load double, ptr %75, align 8, !tbaa !11
  %762 = fcmp olt double %760, %761
  br i1 %762, label %763, label %771

763:                                              ; preds = %759
  %764 = load i32, ptr %27, align 4, !tbaa !5
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %766, label %768

766:                                              ; preds = %763
  %767 = call i32 (ptr, ...) @printf(ptr noundef @.str.8)
  br label %768

768:                                              ; preds = %766, %763
  %769 = load ptr, ptr %14, align 8, !tbaa !9
  %770 = getelementptr inbounds double, ptr %769, i64 8
  store double -6.000000e+00, ptr %770, align 8, !tbaa !11
  br label %3546

771:                                              ; preds = %759
  br label %772

772:                                              ; preds = %771
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %773

773:                                              ; preds = %802, %772
  %774 = load i32, ptr %46, align 4, !tbaa !5
  %775 = load i32, ptr %10, align 4, !tbaa !5
  %776 = icmp ult i32 %774, %775
  br i1 %776, label %777, label %805

777:                                              ; preds = %773
  %778 = load double, ptr %94, align 8, !tbaa !11
  %779 = load ptr, ptr %133, align 8, !tbaa !9
  %780 = load i32, ptr %46, align 4, !tbaa !5
  %781 = zext i32 %780 to i64
  %782 = getelementptr inbounds double, ptr %779, i64 %781
  %783 = load double, ptr %782, align 8, !tbaa !11
  %784 = load ptr, ptr %129, align 8, !tbaa !9
  %785 = load i32, ptr %46, align 4, !tbaa !5
  %786 = zext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %784, i64 %786
  %788 = load double, ptr %787, align 8, !tbaa !11
  %789 = call double @llvm.fmuladd.f64(double %778, double %783, double %788)
  store double %789, ptr %787, align 8, !tbaa !11
  %790 = load ptr, ptr %129, align 8, !tbaa !9
  %791 = load i32, ptr %46, align 4, !tbaa !5
  %792 = zext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %790, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !11
  %795 = load ptr, ptr %129, align 8, !tbaa !9
  %796 = load i32, ptr %46, align 4, !tbaa !5
  %797 = zext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !11
  %800 = load double, ptr %103, align 8, !tbaa !11
  %801 = call double @llvm.fmuladd.f64(double %794, double %799, double %800)
  store double %801, ptr %103, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %777
  %803 = load i32, ptr %46, align 4, !tbaa !5
  %804 = add i32 %803, 1
  store i32 %804, ptr %46, align 4, !tbaa !5
  br label %773, !llvm.loop !23

805:                                              ; preds = %773
  %806 = load double, ptr %103, align 8, !tbaa !11
  %807 = call double @sqrt(double noundef %806) #8
  store double %807, ptr %103, align 8, !tbaa !11
  br label %808

808:                                              ; preds = %805, %675
  br label %809

809:                                              ; preds = %808, %672
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %810

810:                                              ; preds = %824, %809
  %811 = load i32, ptr %46, align 4, !tbaa !5
  %812 = load i32, ptr %10, align 4, !tbaa !5
  %813 = icmp ult i32 %811, %812
  br i1 %813, label %814, label %827

814:                                              ; preds = %810
  %815 = load ptr, ptr %129, align 8, !tbaa !9
  %816 = load i32, ptr %46, align 4, !tbaa !5
  %817 = zext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %815, i64 %817
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = load ptr, ptr %138, align 8, !tbaa !9
  %821 = load i32, ptr %46, align 4, !tbaa !5
  %822 = zext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %820, i64 %822
  store double %819, ptr %823, align 8, !tbaa !11
  br label %824

824:                                              ; preds = %814
  %825 = load i32, ptr %46, align 4, !tbaa !5
  %826 = add i32 %825, 1
  store i32 %826, ptr %46, align 4, !tbaa !5
  br label %810, !llvm.loop !24

827:                                              ; preds = %810
  %828 = load double, ptr %103, align 8, !tbaa !11
  store double %828, ptr %105, align 8, !tbaa !11
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %829

829:                                              ; preds = %850, %827
  %830 = load i32, ptr %46, align 4, !tbaa !5
  %831 = load i32, ptr %10, align 4, !tbaa !5
  %832 = icmp ult i32 %830, %831
  br i1 %832, label %833, label %853

833:                                              ; preds = %829
  %834 = load double, ptr %109, align 8, !tbaa !11
  %835 = load ptr, ptr %11, align 8, !tbaa !9
  %836 = load i32, ptr %46, align 4, !tbaa !5
  %837 = zext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %835, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  %840 = call double @llvm.fabs.f64(double %839)
  %841 = fcmp olt double %834, %840
  br i1 %841, label %842, label %849

842:                                              ; preds = %833
  %843 = load ptr, ptr %11, align 8, !tbaa !9
  %844 = load i32, ptr %46, align 4, !tbaa !5
  %845 = zext i32 %844 to i64
  %846 = getelementptr inbounds double, ptr %843, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = call double @llvm.fabs.f64(double %847)
  store double %848, ptr %109, align 8, !tbaa !11
  br label %849

849:                                              ; preds = %842, %833
  br label %850

850:                                              ; preds = %849
  %851 = load i32, ptr %46, align 4, !tbaa !5
  %852 = add i32 %851, 1
  store i32 %852, ptr %46, align 4, !tbaa !5
  br label %829, !llvm.loop !25

853:                                              ; preds = %829
  %854 = load double, ptr %99, align 8, !tbaa !11
  %855 = load ptr, ptr %14, align 8, !tbaa !9
  %856 = getelementptr inbounds double, ptr %855, i64 1
  %857 = load double, ptr %856, align 8, !tbaa !11
  %858 = call double @sqrt(double noundef %857) #8
  %859 = fmul double %854, %858
  %860 = load double, ptr %109, align 8, !tbaa !11
  %861 = fmul double %859, %860
  store double %861, ptr %100, align 8, !tbaa !11
  %862 = load ptr, ptr %14, align 8, !tbaa !9
  %863 = getelementptr inbounds double, ptr %862, i64 0
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = call double @llvm.fabs.f64(double %864)
  %866 = fcmp une double %865, 1.000000e+00
  br i1 %866, label %867, label %887

867:                                              ; preds = %853
  %868 = load double, ptr %99, align 8, !tbaa !11
  %869 = load ptr, ptr %14, align 8, !tbaa !9
  %870 = getelementptr inbounds double, ptr %869, i64 0
  %871 = load double, ptr %870, align 8, !tbaa !11
  %872 = call double @llvm.fabs.f64(double %871)
  %873 = load double, ptr %100, align 8, !tbaa !11
  %874 = call double @llvm.fabs.f64(double %873)
  %875 = fcmp ogt double %872, %874
  br i1 %875, label %876, label %881

876:                                              ; preds = %867
  %877 = load ptr, ptr %14, align 8, !tbaa !9
  %878 = getelementptr inbounds double, ptr %877, i64 0
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = call double @llvm.fabs.f64(double %879)
  br label %884

881:                                              ; preds = %867
  %882 = load double, ptr %100, align 8, !tbaa !11
  %883 = call double @llvm.fabs.f64(double %882)
  br label %884

884:                                              ; preds = %881, %876
  %885 = phi double [ %880, %876 ], [ %883, %881 ]
  %886 = fmul double %868, %885
  store double %886, ptr %100, align 8, !tbaa !11
  br label %907

887:                                              ; preds = %853
  %888 = load double, ptr %99, align 8, !tbaa !11
  %889 = load double, ptr %103, align 8, !tbaa !11
  %890 = fadd double %889, 1.100000e+00
  %891 = call double @log(double noundef %890) #8
  %892 = fdiv double 1.000000e+00, %891
  %893 = load double, ptr %100, align 8, !tbaa !11
  %894 = call double @llvm.fabs.f64(double %893)
  %895 = fcmp ogt double %892, %894
  br i1 %895, label %896, label %901

896:                                              ; preds = %887
  %897 = load double, ptr %103, align 8, !tbaa !11
  %898 = fadd double %897, 1.100000e+00
  %899 = call double @log(double noundef %898) #8
  %900 = fdiv double 1.000000e+00, %899
  br label %904

901:                                              ; preds = %887
  %902 = load double, ptr %100, align 8, !tbaa !11
  %903 = call double @llvm.fabs.f64(double %902)
  br label %904

904:                                              ; preds = %901, %896
  %905 = phi double [ %900, %896 ], [ %903, %901 ]
  %906 = fmul double %888, %905
  store double %906, ptr %100, align 8, !tbaa !11
  br label %907

907:                                              ; preds = %904, %884
  br label %908

908:                                              ; preds = %3545, %907
  br label %909

909:                                              ; preds = %908
  store i32 0, ptr %35, align 4, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !5
  store i32 0, ptr %51, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %910

910:                                              ; preds = %949, %909
  %911 = load i32, ptr %46, align 4, !tbaa !5
  %912 = load i32, ptr %10, align 4, !tbaa !5
  %913 = icmp ult i32 %911, %912
  br i1 %913, label %914, label %952

914:                                              ; preds = %910
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %915

915:                                              ; preds = %928, %914
  %916 = load i32, ptr %47, align 4, !tbaa !5
  %917 = load i32, ptr %10, align 4, !tbaa !5
  %918 = icmp ult i32 %916, %917
  br i1 %918, label %919, label %931

919:                                              ; preds = %915
  %920 = load ptr, ptr %128, align 8, !tbaa !9
  %921 = load i32, ptr %46, align 4, !tbaa !5
  %922 = load i32, ptr %10, align 4, !tbaa !5
  %923 = mul i32 %921, %922
  %924 = load i32, ptr %47, align 4, !tbaa !5
  %925 = add i32 %923, %924
  %926 = zext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %920, i64 %926
  store double 0.000000e+00, ptr %927, align 8, !tbaa !11
  br label %928

928:                                              ; preds = %919
  %929 = load i32, ptr %47, align 4, !tbaa !5
  %930 = add i32 %929, 1
  store i32 %930, ptr %47, align 4, !tbaa !5
  br label %915, !llvm.loop !26

931:                                              ; preds = %915
  %932 = load ptr, ptr %128, align 8, !tbaa !9
  %933 = load i32, ptr %46, align 4, !tbaa !5
  %934 = load i32, ptr %10, align 4, !tbaa !5
  %935 = mul i32 %933, %934
  %936 = load i32, ptr %46, align 4, !tbaa !5
  %937 = add i32 %935, %936
  %938 = zext i32 %937 to i64
  %939 = getelementptr inbounds double, ptr %932, i64 %938
  store double 1.000000e+00, ptr %939, align 8, !tbaa !11
  %940 = load ptr, ptr %129, align 8, !tbaa !9
  %941 = load i32, ptr %46, align 4, !tbaa !5
  %942 = zext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !11
  %945 = load ptr, ptr %131, align 8, !tbaa !9
  %946 = load i32, ptr %46, align 4, !tbaa !5
  %947 = zext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  store double %944, ptr %948, align 8, !tbaa !11
  br label %949

949:                                              ; preds = %931
  %950 = load i32, ptr %46, align 4, !tbaa !5
  %951 = add i32 %950, 1
  store i32 %951, ptr %46, align 4, !tbaa !5
  br label %910, !llvm.loop !27

952:                                              ; preds = %910
  %953 = load double, ptr %83, align 8, !tbaa !11
  store double %953, ptr %92, align 8, !tbaa !11
  store double 0.000000e+00, ptr %102, align 8, !tbaa !11
  br label %954

954:                                              ; preds = %3544, %952
  br label %955

955:                                              ; preds = %954
  %956 = load i32, ptr %34, align 4, !tbaa !5
  %957 = add i32 %956, 1
  store i32 %957, ptr %34, align 4, !tbaa !5
  %958 = load i32, ptr %35, align 4, !tbaa !5
  %959 = add i32 %958, 1
  store i32 %959, ptr %35, align 4, !tbaa !5
  %960 = load double, ptr %102, align 8, !tbaa !11
  store double %960, ptr %111, align 8, !tbaa !11
  %961 = load double, ptr %65, align 8, !tbaa !11
  %962 = load i64, ptr %37, align 8, !tbaa !16
  %963 = load i32, ptr %35, align 4, !tbaa !5
  %964 = zext i32 %963 to i64
  %965 = sub nsw i64 %962, %964
  %966 = load i32, ptr %10, align 4, !tbaa !5
  %967 = zext i32 %966 to i64
  %968 = mul nsw i64 %965, %967
  %969 = sitofp i64 %968 to double
  %970 = call double @pow(double noundef %961, double noundef %969) #8
  %971 = load ptr, ptr %14, align 8, !tbaa !9
  %972 = getelementptr inbounds double, ptr %971, i64 2
  %973 = load double, ptr %972, align 8, !tbaa !11
  %974 = fmul double 2.000000e+00, %973
  %975 = fcmp ogt double %970, %974
  br i1 %975, label %976, label %987

976:                                              ; preds = %955
  %977 = load double, ptr %65, align 8, !tbaa !11
  %978 = load i64, ptr %37, align 8, !tbaa !16
  %979 = load i32, ptr %35, align 4, !tbaa !5
  %980 = zext i32 %979 to i64
  %981 = sub nsw i64 %978, %980
  %982 = load i32, ptr %10, align 4, !tbaa !5
  %983 = zext i32 %982 to i64
  %984 = mul nsw i64 %981, %983
  %985 = sitofp i64 %984 to double
  %986 = call double @pow(double noundef %977, double noundef %985) #8
  br label %992

987:                                              ; preds = %955
  %988 = load ptr, ptr %14, align 8, !tbaa !9
  %989 = getelementptr inbounds double, ptr %988, i64 2
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = fmul double 2.000000e+00, %990
  br label %992

992:                                              ; preds = %987, %976
  %993 = phi double [ %986, %976 ], [ %991, %987 ]
  %994 = fadd double 1.000000e+00, %993
  store double %994, ptr %96, align 8, !tbaa !11
  %995 = load double, ptr %96, align 8, !tbaa !11
  %996 = load double, ptr %66, align 8, !tbaa !11
  %997 = load double, ptr %105, align 8, !tbaa !11
  %998 = fadd double %997, 1.000000e+00
  %999 = call double @log10(double noundef %998) #8
  %1000 = fcmp ogt double 1.000000e+00, %999
  br i1 %1000, label %1001, label %1002

1001:                                             ; preds = %992
  br label %1006

1002:                                             ; preds = %992
  %1003 = load double, ptr %105, align 8, !tbaa !11
  %1004 = fadd double %1003, 1.000000e+00
  %1005 = call double @log10(double noundef %1004) #8
  br label %1006

1006:                                             ; preds = %1002, %1001
  %1007 = phi double [ 1.000000e+00, %1001 ], [ %1005, %1002 ]
  %1008 = call double @pow(double noundef %996, double noundef %1007) #8
  %1009 = fcmp olt double %995, %1008
  br i1 %1009, label %1010, label %1012

1010:                                             ; preds = %1006
  %1011 = load double, ptr %96, align 8, !tbaa !11
  br label %1026

1012:                                             ; preds = %1006
  %1013 = load double, ptr %66, align 8, !tbaa !11
  %1014 = load double, ptr %105, align 8, !tbaa !11
  %1015 = fadd double %1014, 1.000000e+00
  %1016 = call double @log10(double noundef %1015) #8
  %1017 = fcmp ogt double 1.000000e+00, %1016
  br i1 %1017, label %1018, label %1019

1018:                                             ; preds = %1012
  br label %1023

1019:                                             ; preds = %1012
  %1020 = load double, ptr %105, align 8, !tbaa !11
  %1021 = fadd double %1020, 1.000000e+00
  %1022 = call double @log10(double noundef %1021) #8
  br label %1023

1023:                                             ; preds = %1019, %1018
  %1024 = phi double [ 1.000000e+00, %1018 ], [ %1022, %1019 ]
  %1025 = call double @pow(double noundef %1013, double noundef %1024) #8
  br label %1026

1026:                                             ; preds = %1023, %1010
  %1027 = phi double [ %1011, %1010 ], [ %1025, %1023 ]
  store double %1027, ptr %96, align 8, !tbaa !11
  store double 0.000000e+00, ptr %106, align 8, !tbaa !11
  store double 0.000000e+00, ptr %108, align 8, !tbaa !11
  store double 0.000000e+00, ptr %110, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1028

1028:                                             ; preds = %1087, %1026
  %1029 = load i32, ptr %46, align 4, !tbaa !5
  %1030 = load i32, ptr %10, align 4, !tbaa !5
  %1031 = icmp ult i32 %1029, %1030
  br i1 %1031, label %1032, label %1090

1032:                                             ; preds = %1028
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %1033

1033:                                             ; preds = %1054, %1032
  %1034 = load i32, ptr %47, align 4, !tbaa !5
  %1035 = load i32, ptr %10, align 4, !tbaa !5
  %1036 = icmp ult i32 %1034, %1035
  br i1 %1036, label %1037, label %1057

1037:                                             ; preds = %1033
  %1038 = load ptr, ptr %128, align 8, !tbaa !9
  %1039 = load i32, ptr %47, align 4, !tbaa !5
  %1040 = load i32, ptr %46, align 4, !tbaa !5
  %1041 = load i32, ptr %10, align 4, !tbaa !5
  %1042 = mul i32 %1040, %1041
  %1043 = add i32 %1039, %1042
  %1044 = zext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1038, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  %1047 = load ptr, ptr %129, align 8, !tbaa !9
  %1048 = load i32, ptr %47, align 4, !tbaa !5
  %1049 = zext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = load double, ptr %109, align 8, !tbaa !11
  %1053 = call double @llvm.fmuladd.f64(double %1046, double %1051, double %1052)
  store double %1053, ptr %109, align 8, !tbaa !11
  br label %1054

1054:                                             ; preds = %1037
  %1055 = load i32, ptr %47, align 4, !tbaa !5
  %1056 = add i32 %1055, 1
  store i32 %1056, ptr %47, align 4, !tbaa !5
  br label %1033, !llvm.loop !28

1057:                                             ; preds = %1033
  %1058 = load double, ptr %109, align 8, !tbaa !11
  %1059 = load ptr, ptr %132, align 8, !tbaa !9
  %1060 = load i32, ptr %46, align 4, !tbaa !5
  %1061 = zext i32 %1060 to i64
  %1062 = getelementptr inbounds double, ptr %1059, i64 %1061
  store double %1058, ptr %1062, align 8, !tbaa !11
  %1063 = load double, ptr %109, align 8, !tbaa !11
  %1064 = load ptr, ptr %131, align 8, !tbaa !9
  %1065 = load i32, ptr %46, align 4, !tbaa !5
  %1066 = zext i32 %1065 to i64
  %1067 = getelementptr inbounds double, ptr %1064, i64 %1066
  %1068 = load double, ptr %1067, align 8, !tbaa !11
  %1069 = load double, ptr %110, align 8, !tbaa !11
  %1070 = call double @llvm.fmuladd.f64(double %1063, double %1068, double %1069)
  store double %1070, ptr %110, align 8, !tbaa !11
  %1071 = load double, ptr %109, align 8, !tbaa !11
  %1072 = load double, ptr %109, align 8, !tbaa !11
  %1073 = load double, ptr %106, align 8, !tbaa !11
  %1074 = call double @llvm.fmuladd.f64(double %1071, double %1072, double %1073)
  store double %1074, ptr %106, align 8, !tbaa !11
  %1075 = load ptr, ptr %131, align 8, !tbaa !9
  %1076 = load i32, ptr %46, align 4, !tbaa !5
  %1077 = zext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1075, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  %1080 = load ptr, ptr %131, align 8, !tbaa !9
  %1081 = load i32, ptr %46, align 4, !tbaa !5
  %1082 = zext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1080, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = load double, ptr %108, align 8, !tbaa !11
  %1086 = call double @llvm.fmuladd.f64(double %1079, double %1084, double %1085)
  store double %1086, ptr %108, align 8, !tbaa !11
  br label %1087

1087:                                             ; preds = %1057
  %1088 = load i32, ptr %46, align 4, !tbaa !5
  %1089 = add i32 %1088, 1
  store i32 %1089, ptr %46, align 4, !tbaa !5
  br label %1028, !llvm.loop !29

1090:                                             ; preds = %1028
  %1091 = load double, ptr %106, align 8, !tbaa !11
  %1092 = call double @sqrt(double noundef %1091) #8
  store double %1092, ptr %106, align 8, !tbaa !11
  %1093 = load double, ptr %108, align 8, !tbaa !11
  %1094 = call double @sqrt(double noundef %1093) #8
  store double %1094, ptr %108, align 8, !tbaa !11
  %1095 = load double, ptr %106, align 8, !tbaa !11
  %1096 = load double, ptr %108, align 8, !tbaa !11
  %1097 = fmul double %1095, %1096
  %1098 = load double, ptr %110, align 8, !tbaa !11
  %1099 = fdiv double %1098, %1097
  store double %1099, ptr %110, align 8, !tbaa !11
  %1100 = load double, ptr %98, align 8, !tbaa !11
  store double %1100, ptr %97, align 8, !tbaa !11
  %1101 = load double, ptr %110, align 8, !tbaa !11
  %1102 = load double, ptr %74, align 8, !tbaa !11
  %1103 = fcmp olt double %1101, %1102
  br i1 %1103, label %1104, label %1180

1104:                                             ; preds = %1090
  %1105 = load i32, ptr %51, align 4, !tbaa !5
  %1106 = icmp eq i32 %1105, 2
  br i1 %1106, label %1107, label %1126

1107:                                             ; preds = %1104
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1108

1108:                                             ; preds = %1122, %1107
  %1109 = load i32, ptr %46, align 4, !tbaa !5
  %1110 = load i32, ptr %10, align 4, !tbaa !5
  %1111 = icmp ult i32 %1109, %1110
  br i1 %1111, label %1112, label %1125

1112:                                             ; preds = %1108
  %1113 = load ptr, ptr %11, align 8, !tbaa !9
  %1114 = load i32, ptr %46, align 4, !tbaa !5
  %1115 = zext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1113, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = load ptr, ptr %139, align 8, !tbaa !9
  %1119 = load i32, ptr %46, align 4, !tbaa !5
  %1120 = zext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %1118, i64 %1120
  store double %1117, ptr %1121, align 8, !tbaa !11
  br label %1122

1122:                                             ; preds = %1112
  %1123 = load i32, ptr %46, align 4, !tbaa !5
  %1124 = add i32 %1123, 1
  store i32 %1124, ptr %46, align 4, !tbaa !5
  br label %1108, !llvm.loop !30

1125:                                             ; preds = %1108
  br label %1126

1126:                                             ; preds = %1125, %1104
  %1127 = load i32, ptr %51, align 4, !tbaa !5
  %1128 = icmp eq i32 %1127, 0
  br i1 %1128, label %1129, label %1130

1129:                                             ; preds = %1126
  store i32 4, ptr %50, align 4, !tbaa !5
  br label %1130

1130:                                             ; preds = %1129, %1126
  %1131 = load i32, ptr %51, align 4, !tbaa !5
  %1132 = add i32 %1131, 1
  store i32 %1132, ptr %51, align 4, !tbaa !5
  store double -9.000000e-01, ptr %97, align 8, !tbaa !11
  %1133 = load double, ptr %100, align 8, !tbaa !11
  %1134 = fmul double %1133, 2.000000e+00
  store double %1134, ptr %100, align 8, !tbaa !11
  %1135 = load i32, ptr %51, align 4, !tbaa !5
  %1136 = load i32, ptr %50, align 4, !tbaa !5
  %1137 = mul i32 2, %1136
  %1138 = icmp ugt i32 %1135, %1137
  br i1 %1138, label %1139, label %1179

1139:                                             ; preds = %1130
  %1140 = load i32, ptr %50, align 4, !tbaa !5
  %1141 = add i32 %1140, 1
  store i32 %1141, ptr %50, align 4, !tbaa !5
  store i32 1, ptr %60, align 4, !tbaa !5
  %1142 = load ptr, ptr @endwarn1, align 8, !tbaa !9
  store ptr %1142, ptr %142, align 8, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1143

1143:                                             ; preds = %1175, %1139
  %1144 = load i32, ptr %46, align 4, !tbaa !5
  %1145 = load i32, ptr %10, align 4, !tbaa !5
  %1146 = icmp ult i32 %1144, %1145
  br i1 %1146, label %1147, label %1178

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %11, align 8, !tbaa !9
  %1149 = load i32, ptr %46, align 4, !tbaa !5
  %1150 = zext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1148, i64 %1150
  %1152 = load double, ptr %1151, align 8, !tbaa !11
  %1153 = load ptr, ptr %139, align 8, !tbaa !9
  %1154 = load i32, ptr %46, align 4, !tbaa !5
  %1155 = zext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1153, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !11
  %1158 = fsub double %1152, %1157
  %1159 = call double @llvm.fabs.f64(double %1158)
  %1160 = load ptr, ptr %11, align 8, !tbaa !9
  %1161 = load i32, ptr %46, align 4, !tbaa !5
  %1162 = zext i32 %1161 to i64
  %1163 = getelementptr inbounds double, ptr %1160, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  %1165 = call double @llvm.fabs.f64(double %1164)
  %1166 = fmul double 0x3CB0000000000000, %1165
  %1167 = fcmp olt double %1159, %1166
  br i1 %1167, label %1168, label %1174

1168:                                             ; preds = %1147
  %1169 = load i32, ptr %27, align 4, !tbaa !5
  %1170 = icmp ne i32 %1169, 0
  br i1 %1170, label %1171, label %1173

1171:                                             ; preds = %1168
  %1172 = call i32 (ptr, ...) @printf(ptr noundef @.str.9)
  br label %1173

1173:                                             ; preds = %1171, %1168
  br label %1174

1174:                                             ; preds = %1173, %1147
  br label %1175

1175:                                             ; preds = %1174
  %1176 = load i32, ptr %46, align 4, !tbaa !5
  %1177 = add i32 %1176, 1
  store i32 %1177, ptr %46, align 4, !tbaa !5
  br label %1143, !llvm.loop !31

1178:                                             ; preds = %1143
  br label %1179

1179:                                             ; preds = %1178, %1130
  br label %1181

1180:                                             ; preds = %1090
  store i32 0, ptr %51, align 4, !tbaa !5
  br label %1181

1181:                                             ; preds = %1180, %1179
  store double 0.000000e+00, ptr %107, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1182

1182:                                             ; preds = %1214, %1181
  %1183 = load i32, ptr %46, align 4, !tbaa !5
  %1184 = load i32, ptr %10, align 4, !tbaa !5
  %1185 = icmp ult i32 %1183, %1184
  br i1 %1185, label %1186, label %1217

1186:                                             ; preds = %1182
  %1187 = load ptr, ptr %132, align 8, !tbaa !9
  %1188 = load i32, ptr %46, align 4, !tbaa !5
  %1189 = zext i32 %1188 to i64
  %1190 = getelementptr inbounds double, ptr %1187, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !11
  %1192 = load ptr, ptr %131, align 8, !tbaa !9
  %1193 = load i32, ptr %46, align 4, !tbaa !5
  %1194 = zext i32 %1193 to i64
  %1195 = getelementptr inbounds double, ptr %1192, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = fsub double %1191, %1196
  %1198 = load ptr, ptr %134, align 8, !tbaa !9
  %1199 = load i32, ptr %46, align 4, !tbaa !5
  %1200 = zext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1198, i64 %1200
  store double %1197, ptr %1201, align 8, !tbaa !11
  %1202 = load ptr, ptr %134, align 8, !tbaa !9
  %1203 = load i32, ptr %46, align 4, !tbaa !5
  %1204 = zext i32 %1203 to i64
  %1205 = getelementptr inbounds double, ptr %1202, i64 %1204
  %1206 = load double, ptr %1205, align 8, !tbaa !11
  %1207 = load ptr, ptr %134, align 8, !tbaa !9
  %1208 = load i32, ptr %46, align 4, !tbaa !5
  %1209 = zext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1207, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load double, ptr %107, align 8, !tbaa !11
  %1213 = call double @llvm.fmuladd.f64(double %1206, double %1211, double %1212)
  store double %1213, ptr %107, align 8, !tbaa !11
  br label %1214

1214:                                             ; preds = %1186
  %1215 = load i32, ptr %46, align 4, !tbaa !5
  %1216 = add i32 %1215, 1
  store i32 %1216, ptr %46, align 4, !tbaa !5
  br label %1182, !llvm.loop !32

1217:                                             ; preds = %1182
  %1218 = load double, ptr %107, align 8, !tbaa !11
  %1219 = call double @sqrt(double noundef %1218) #8
  store double %1219, ptr %107, align 8, !tbaa !11
  %1220 = load double, ptr %107, align 8, !tbaa !11
  %1221 = load double, ptr %106, align 8, !tbaa !11
  %1222 = fmul double 0x3CB0000000000000, %1221
  %1223 = fcmp ogt double %1220, %1222
  br i1 %1223, label %1224, label %1357

1224:                                             ; preds = %1217
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1225

1225:                                             ; preds = %1237, %1224
  %1226 = load i32, ptr %46, align 4, !tbaa !5
  %1227 = load i32, ptr %10, align 4, !tbaa !5
  %1228 = icmp ult i32 %1226, %1227
  br i1 %1228, label %1229, label %1240

1229:                                             ; preds = %1225
  %1230 = load double, ptr %107, align 8, !tbaa !11
  %1231 = load ptr, ptr %134, align 8, !tbaa !9
  %1232 = load i32, ptr %46, align 4, !tbaa !5
  %1233 = zext i32 %1232 to i64
  %1234 = getelementptr inbounds double, ptr %1231, i64 %1233
  %1235 = load double, ptr %1234, align 8, !tbaa !11
  %1236 = fdiv double %1235, %1230
  store double %1236, ptr %1234, align 8, !tbaa !11
  br label %1237

1237:                                             ; preds = %1229
  %1238 = load i32, ptr %46, align 4, !tbaa !5
  %1239 = add i32 %1238, 1
  store i32 %1239, ptr %46, align 4, !tbaa !5
  br label %1225, !llvm.loop !33

1240:                                             ; preds = %1225
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1241

1241:                                             ; preds = %1258, %1240
  %1242 = load i32, ptr %46, align 4, !tbaa !5
  %1243 = load i32, ptr %10, align 4, !tbaa !5
  %1244 = icmp ult i32 %1242, %1243
  br i1 %1244, label %1245, label %1261

1245:                                             ; preds = %1241
  %1246 = load ptr, ptr %134, align 8, !tbaa !9
  %1247 = load i32, ptr %46, align 4, !tbaa !5
  %1248 = zext i32 %1247 to i64
  %1249 = getelementptr inbounds double, ptr %1246, i64 %1248
  %1250 = load double, ptr %1249, align 8, !tbaa !11
  %1251 = load ptr, ptr %132, align 8, !tbaa !9
  %1252 = load i32, ptr %46, align 4, !tbaa !5
  %1253 = zext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1251, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  %1256 = load double, ptr %109, align 8, !tbaa !11
  %1257 = call double @llvm.fmuladd.f64(double %1250, double %1255, double %1256)
  store double %1257, ptr %109, align 8, !tbaa !11
  br label %1258

1258:                                             ; preds = %1245
  %1259 = load i32, ptr %46, align 4, !tbaa !5
  %1260 = add i32 %1259, 1
  store i32 %1260, ptr %46, align 4, !tbaa !5
  br label %1241, !llvm.loop !34

1261:                                             ; preds = %1241
  store double 0.000000e+00, ptr %108, align 8, !tbaa !11
  %1262 = load double, ptr %97, align 8, !tbaa !11
  %1263 = load double, ptr %109, align 8, !tbaa !11
  %1264 = fmul double %1263, %1262
  store double %1264, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1265

1265:                                             ; preds = %1351, %1261
  %1266 = load i32, ptr %46, align 4, !tbaa !5
  %1267 = load i32, ptr %10, align 4, !tbaa !5
  %1268 = icmp ult i32 %1266, %1267
  br i1 %1268, label %1269, label %1354

1269:                                             ; preds = %1265
  store double 0.000000e+00, ptr %110, align 8, !tbaa !11
  %1270 = load ptr, ptr %132, align 8, !tbaa !9
  %1271 = load i32, ptr %46, align 4, !tbaa !5
  %1272 = zext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1270, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !11
  %1275 = load double, ptr %109, align 8, !tbaa !11
  %1276 = load ptr, ptr %134, align 8, !tbaa !9
  %1277 = load i32, ptr %46, align 4, !tbaa !5
  %1278 = zext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1276, i64 %1278
  %1280 = load double, ptr %1279, align 8, !tbaa !11
  %1281 = call double @llvm.fmuladd.f64(double %1275, double %1280, double %1274)
  %1282 = load ptr, ptr %131, align 8, !tbaa !9
  %1283 = load i32, ptr %46, align 4, !tbaa !5
  %1284 = zext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1282, i64 %1284
  store double %1281, ptr %1285, align 8, !tbaa !11
  %1286 = load ptr, ptr %131, align 8, !tbaa !9
  %1287 = load i32, ptr %46, align 4, !tbaa !5
  %1288 = zext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1286, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = load ptr, ptr %131, align 8, !tbaa !9
  %1292 = load i32, ptr %46, align 4, !tbaa !5
  %1293 = zext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1291, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = load double, ptr %108, align 8, !tbaa !11
  %1297 = call double @llvm.fmuladd.f64(double %1290, double %1295, double %1296)
  store double %1297, ptr %108, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %1298

1298:                                             ; preds = %1319, %1269
  %1299 = load i32, ptr %47, align 4, !tbaa !5
  %1300 = load i32, ptr %10, align 4, !tbaa !5
  %1301 = icmp ult i32 %1299, %1300
  br i1 %1301, label %1302, label %1322

1302:                                             ; preds = %1298
  %1303 = load ptr, ptr %128, align 8, !tbaa !9
  %1304 = load i32, ptr %47, align 4, !tbaa !5
  %1305 = load i32, ptr %10, align 4, !tbaa !5
  %1306 = mul i32 %1304, %1305
  %1307 = load i32, ptr %46, align 4, !tbaa !5
  %1308 = add i32 %1306, %1307
  %1309 = zext i32 %1308 to i64
  %1310 = getelementptr inbounds double, ptr %1303, i64 %1309
  %1311 = load double, ptr %1310, align 8, !tbaa !11
  %1312 = load ptr, ptr %134, align 8, !tbaa !9
  %1313 = load i32, ptr %47, align 4, !tbaa !5
  %1314 = zext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %1312, i64 %1314
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  %1317 = load double, ptr %110, align 8, !tbaa !11
  %1318 = call double @llvm.fmuladd.f64(double %1311, double %1316, double %1317)
  store double %1318, ptr %110, align 8, !tbaa !11
  br label %1319

1319:                                             ; preds = %1302
  %1320 = load i32, ptr %47, align 4, !tbaa !5
  %1321 = add i32 %1320, 1
  store i32 %1321, ptr %47, align 4, !tbaa !5
  br label %1298, !llvm.loop !35

1322:                                             ; preds = %1298
  %1323 = load double, ptr %97, align 8, !tbaa !11
  %1324 = load double, ptr %110, align 8, !tbaa !11
  %1325 = fmul double %1324, %1323
  store double %1325, ptr %110, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %1326

1326:                                             ; preds = %1347, %1322
  %1327 = load i32, ptr %47, align 4, !tbaa !5
  %1328 = load i32, ptr %10, align 4, !tbaa !5
  %1329 = icmp ult i32 %1327, %1328
  br i1 %1329, label %1330, label %1350

1330:                                             ; preds = %1326
  %1331 = load double, ptr %110, align 8, !tbaa !11
  %1332 = load ptr, ptr %134, align 8, !tbaa !9
  %1333 = load i32, ptr %47, align 4, !tbaa !5
  %1334 = zext i32 %1333 to i64
  %1335 = getelementptr inbounds double, ptr %1332, i64 %1334
  %1336 = load double, ptr %1335, align 8, !tbaa !11
  %1337 = load ptr, ptr %128, align 8, !tbaa !9
  %1338 = load i32, ptr %47, align 4, !tbaa !5
  %1339 = load i32, ptr %10, align 4, !tbaa !5
  %1340 = mul i32 %1338, %1339
  %1341 = load i32, ptr %46, align 4, !tbaa !5
  %1342 = add i32 %1340, %1341
  %1343 = zext i32 %1342 to i64
  %1344 = getelementptr inbounds double, ptr %1337, i64 %1343
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = call double @llvm.fmuladd.f64(double %1331, double %1336, double %1345)
  store double %1346, ptr %1344, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1330
  %1348 = load i32, ptr %47, align 4, !tbaa !5
  %1349 = add i32 %1348, 1
  store i32 %1349, ptr %47, align 4, !tbaa !5
  br label %1326, !llvm.loop !36

1350:                                             ; preds = %1326
  br label %1351

1351:                                             ; preds = %1350
  %1352 = load i32, ptr %46, align 4, !tbaa !5
  %1353 = add i32 %1352, 1
  store i32 %1353, ptr %46, align 4, !tbaa !5
  br label %1265, !llvm.loop !37

1354:                                             ; preds = %1265
  %1355 = load double, ptr %108, align 8, !tbaa !11
  %1356 = call double @sqrt(double noundef %1355) #8
  store double %1356, ptr %108, align 8, !tbaa !11
  br label %1371

1357:                                             ; preds = %1217
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1358

1358:                                             ; preds = %1367, %1357
  %1359 = load i32, ptr %46, align 4, !tbaa !5
  %1360 = load i32, ptr %10, align 4, !tbaa !5
  %1361 = icmp ult i32 %1359, %1360
  br i1 %1361, label %1362, label %1370

1362:                                             ; preds = %1358
  %1363 = load ptr, ptr %134, align 8, !tbaa !9
  %1364 = load i32, ptr %46, align 4, !tbaa !5
  %1365 = zext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1363, i64 %1365
  store double 0.000000e+00, ptr %1366, align 8, !tbaa !11
  br label %1367

1367:                                             ; preds = %1362
  %1368 = load i32, ptr %46, align 4, !tbaa !5
  %1369 = add i32 %1368, 1
  store i32 %1369, ptr %46, align 4, !tbaa !5
  br label %1358, !llvm.loop !38

1370:                                             ; preds = %1358
  store double 0.000000e+00, ptr %107, align 8, !tbaa !11
  br label %1371

1371:                                             ; preds = %1370, %1354
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1372

1372:                                             ; preds = %1388, %1371
  %1373 = load i32, ptr %46, align 4, !tbaa !5
  %1374 = load i32, ptr %10, align 4, !tbaa !5
  %1375 = icmp ult i32 %1373, %1374
  br i1 %1375, label %1376, label %1391

1376:                                             ; preds = %1372
  %1377 = load ptr, ptr %131, align 8, !tbaa !9
  %1378 = load i32, ptr %46, align 4, !tbaa !5
  %1379 = zext i32 %1378 to i64
  %1380 = getelementptr inbounds double, ptr %1377, i64 %1379
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  %1382 = load double, ptr %108, align 8, !tbaa !11
  %1383 = fdiv double %1381, %1382
  %1384 = load ptr, ptr %132, align 8, !tbaa !9
  %1385 = load i32, ptr %46, align 4, !tbaa !5
  %1386 = zext i32 %1385 to i64
  %1387 = getelementptr inbounds double, ptr %1384, i64 %1386
  store double %1383, ptr %1387, align 8, !tbaa !11
  br label %1388

1388:                                             ; preds = %1376
  %1389 = load i32, ptr %46, align 4, !tbaa !5
  %1390 = add i32 %1389, 1
  store i32 %1390, ptr %46, align 4, !tbaa !5
  br label %1372, !llvm.loop !39

1391:                                             ; preds = %1372
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1392

1392:                                             ; preds = %1427, %1391
  %1393 = load i32, ptr %46, align 4, !tbaa !5
  %1394 = load i32, ptr %10, align 4, !tbaa !5
  %1395 = icmp ult i32 %1393, %1394
  br i1 %1395, label %1396, label %1430

1396:                                             ; preds = %1392
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %1397

1397:                                             ; preds = %1418, %1396
  %1398 = load i32, ptr %47, align 4, !tbaa !5
  %1399 = load i32, ptr %10, align 4, !tbaa !5
  %1400 = icmp ult i32 %1398, %1399
  br i1 %1400, label %1401, label %1421

1401:                                             ; preds = %1397
  %1402 = load ptr, ptr %128, align 8, !tbaa !9
  %1403 = load i32, ptr %47, align 4, !tbaa !5
  %1404 = load i32, ptr %10, align 4, !tbaa !5
  %1405 = mul i32 %1403, %1404
  %1406 = load i32, ptr %46, align 4, !tbaa !5
  %1407 = add i32 %1405, %1406
  %1408 = zext i32 %1407 to i64
  %1409 = getelementptr inbounds double, ptr %1402, i64 %1408
  %1410 = load double, ptr %1409, align 8, !tbaa !11
  %1411 = load ptr, ptr %132, align 8, !tbaa !9
  %1412 = load i32, ptr %47, align 4, !tbaa !5
  %1413 = zext i32 %1412 to i64
  %1414 = getelementptr inbounds double, ptr %1411, i64 %1413
  %1415 = load double, ptr %1414, align 8, !tbaa !11
  %1416 = load double, ptr %109, align 8, !tbaa !11
  %1417 = call double @llvm.fmuladd.f64(double %1410, double %1415, double %1416)
  store double %1417, ptr %109, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1401
  %1419 = load i32, ptr %47, align 4, !tbaa !5
  %1420 = add i32 %1419, 1
  store i32 %1420, ptr %47, align 4, !tbaa !5
  br label %1397, !llvm.loop !40

1421:                                             ; preds = %1397
  %1422 = load double, ptr %109, align 8, !tbaa !11
  %1423 = load ptr, ptr %130, align 8, !tbaa !9
  %1424 = load i32, ptr %46, align 4, !tbaa !5
  %1425 = zext i32 %1424 to i64
  %1426 = getelementptr inbounds double, ptr %1423, i64 %1425
  store double %1422, ptr %1426, align 8, !tbaa !11
  br label %1427

1427:                                             ; preds = %1421
  %1428 = load i32, ptr %46, align 4, !tbaa !5
  %1429 = add i32 %1428, 1
  store i32 %1429, ptr %46, align 4, !tbaa !5
  br label %1392, !llvm.loop !41

1430:                                             ; preds = %1392
  %1431 = load i32, ptr %35, align 4, !tbaa !5
  %1432 = icmp ugt i32 %1431, 1
  br i1 %1432, label %1433, label %1538

1433:                                             ; preds = %1430
  store i32 0, ptr %36, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1434

1434:                                             ; preds = %1456, %1433
  %1435 = load i32, ptr %46, align 4, !tbaa !5
  %1436 = load i32, ptr %10, align 4, !tbaa !5
  %1437 = icmp ult i32 %1435, %1436
  br i1 %1437, label %1438, label %1459

1438:                                             ; preds = %1434
  %1439 = load ptr, ptr %129, align 8, !tbaa !9
  %1440 = load i32, ptr %46, align 4, !tbaa !5
  %1441 = zext i32 %1440 to i64
  %1442 = getelementptr inbounds double, ptr %1439, i64 %1441
  %1443 = load double, ptr %1442, align 8, !tbaa !11
  %1444 = call double @llvm.fabs.f64(double %1443)
  %1445 = load double, ptr %75, align 8, !tbaa !11
  %1446 = fcmp ogt double %1444, %1445
  br i1 %1446, label %1447, label %1455

1447:                                             ; preds = %1438
  %1448 = load i32, ptr %46, align 4, !tbaa !5
  %1449 = load ptr, ptr %141, align 8, !tbaa !9
  %1450 = load i32, ptr %36, align 4, !tbaa !5
  %1451 = zext i32 %1450 to i64
  %1452 = getelementptr inbounds i32, ptr %1449, i64 %1451
  store i32 %1448, ptr %1452, align 4, !tbaa !5
  %1453 = load i32, ptr %36, align 4, !tbaa !5
  %1454 = add i32 %1453, 1
  store i32 %1454, ptr %36, align 4, !tbaa !5
  br label %1455

1455:                                             ; preds = %1447, %1438
  br label %1456

1456:                                             ; preds = %1455
  %1457 = load i32, ptr %46, align 4, !tbaa !5
  %1458 = add i32 %1457, 1
  store i32 %1458, ptr %46, align 4, !tbaa !5
  br label %1434, !llvm.loop !42

1459:                                             ; preds = %1434
  %1460 = load i32, ptr %36, align 4, !tbaa !5
  %1461 = icmp ugt i32 %1460, 0
  br i1 %1461, label %1462, label %1537

1462:                                             ; preds = %1459
  %1463 = load i32, ptr %36, align 4, !tbaa !5
  %1464 = load i32, ptr %36, align 4, !tbaa !5
  %1465 = mul i32 %1463, %1464
  %1466 = uitofp i32 %1465 to double
  %1467 = fmul double 0x3CB0000000000000, %1466
  store double %1467, ptr %82, align 8, !tbaa !11
  store i32 0, ptr %49, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1468

1468:                                             ; preds = %1497, %1462
  %1469 = load i32, ptr %46, align 4, !tbaa !5
  %1470 = load i32, ptr %36, align 4, !tbaa !5
  %1471 = icmp ult i32 %1469, %1470
  br i1 %1471, label %1472, label %1500

1472:                                             ; preds = %1468
  %1473 = load ptr, ptr %141, align 8, !tbaa !9
  %1474 = load i32, ptr %46, align 4, !tbaa !5
  %1475 = zext i32 %1474 to i64
  %1476 = getelementptr inbounds i32, ptr %1473, i64 %1475
  %1477 = load i32, ptr %1476, align 4, !tbaa !5
  store i32 %1477, ptr %47, align 4, !tbaa !5
  %1478 = load ptr, ptr %131, align 8, !tbaa !9
  %1479 = load i32, ptr %47, align 4, !tbaa !5
  %1480 = zext i32 %1479 to i64
  %1481 = getelementptr inbounds double, ptr %1478, i64 %1480
  %1482 = load double, ptr %1481, align 8, !tbaa !11
  %1483 = call double @llvm.fabs.f64(double %1482)
  %1484 = load ptr, ptr %129, align 8, !tbaa !9
  %1485 = load i32, ptr %47, align 4, !tbaa !5
  %1486 = zext i32 %1485 to i64
  %1487 = getelementptr inbounds double, ptr %1484, i64 %1486
  %1488 = load double, ptr %1487, align 8, !tbaa !11
  %1489 = call double @llvm.fabs.f64(double %1488)
  %1490 = load double, ptr %82, align 8, !tbaa !11
  %1491 = fmul double %1489, %1490
  %1492 = fcmp ole double %1483, %1491
  br i1 %1492, label %1493, label %1496

1493:                                             ; preds = %1472
  %1494 = load i32, ptr %49, align 4, !tbaa !5
  %1495 = add i32 %1494, 1
  store i32 %1495, ptr %49, align 4, !tbaa !5
  br label %1496

1496:                                             ; preds = %1493, %1472
  br label %1497

1497:                                             ; preds = %1496
  %1498 = load i32, ptr %46, align 4, !tbaa !5
  %1499 = add i32 %1498, 1
  store i32 %1499, ptr %46, align 4, !tbaa !5
  br label %1468, !llvm.loop !43

1500:                                             ; preds = %1468
  %1501 = load i32, ptr %49, align 4, !tbaa !5
  %1502 = load i32, ptr %10, align 4, !tbaa !5
  %1503 = icmp eq i32 %1501, %1502
  br i1 %1503, label %1507, label %1504

1504:                                             ; preds = %1500
  %1505 = load double, ptr %107, align 8, !tbaa !11
  %1506 = fcmp oeq double %1505, 0.000000e+00
  br i1 %1506, label %1507, label %1536

1507:                                             ; preds = %1504, %1500
  %1508 = load i32, ptr %27, align 4, !tbaa !5
  %1509 = icmp ne i32 %1508, 0
  br i1 %1509, label %1510, label %1512

1510:                                             ; preds = %1507
  %1511 = call i32 (ptr, ...) @printf(ptr noundef @.str.10)
  br label %1512

1512:                                             ; preds = %1510, %1507
  %1513 = load double, ptr %92, align 8, !tbaa !11
  %1514 = load double, ptr %83, align 8, !tbaa !11
  %1515 = fsub double %1513, %1514
  %1516 = call double @llvm.fabs.f64(double %1515)
  %1517 = load double, ptr %83, align 8, !tbaa !11
  %1518 = call double @llvm.fabs.f64(double %1517)
  %1519 = fmul double %1518, 1.000000e-02
  %1520 = fcmp olt double %1516, %1519
  br i1 %1520, label %1521, label %1527

1521:                                             ; preds = %1512
  %1522 = load i32, ptr %10, align 4, !tbaa !5
  %1523 = mul i32 10, %1522
  %1524 = zext i32 %1523 to i64
  %1525 = load i64, ptr %37, align 8, !tbaa !16
  %1526 = sub nsw i64 %1525, %1524
  store i64 %1526, ptr %37, align 8, !tbaa !16
  br label %1529

1527:                                             ; preds = %1512
  %1528 = load i64, ptr %38, align 8, !tbaa !16
  store i64 %1528, ptr %37, align 8, !tbaa !16
  br label %1529

1529:                                             ; preds = %1527, %1521
  %1530 = load double, ptr %99, align 8, !tbaa !11
  %1531 = load double, ptr %102, align 8, !tbaa !11
  %1532 = fmul double %1530, %1531
  %1533 = fdiv double %1532, 3.000000e+00
  store double %1533, ptr %100, align 8, !tbaa !11
  %1534 = load i32, ptr %34, align 4, !tbaa !5
  %1535 = sub i32 %1534, 1
  store i32 %1535, ptr %34, align 4, !tbaa !5
  br label %3545

1536:                                             ; preds = %1504
  br label %1537

1537:                                             ; preds = %1536, %1459
  br label %1538

1538:                                             ; preds = %1537, %1430
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1539

1539:                                             ; preds = %1553, %1538
  %1540 = load i32, ptr %46, align 4, !tbaa !5
  %1541 = load i32, ptr %10, align 4, !tbaa !5
  %1542 = icmp ult i32 %1540, %1541
  br i1 %1542, label %1543, label %1556

1543:                                             ; preds = %1539
  %1544 = load ptr, ptr %11, align 8, !tbaa !9
  %1545 = load i32, ptr %46, align 4, !tbaa !5
  %1546 = zext i32 %1545 to i64
  %1547 = getelementptr inbounds double, ptr %1544, i64 %1546
  %1548 = load double, ptr %1547, align 8, !tbaa !11
  %1549 = load ptr, ptr %136, align 8, !tbaa !9
  %1550 = load i32, ptr %46, align 4, !tbaa !5
  %1551 = zext i32 %1550 to i64
  %1552 = getelementptr inbounds double, ptr %1549, i64 %1551
  store double %1548, ptr %1552, align 8, !tbaa !11
  br label %1553

1553:                                             ; preds = %1543
  %1554 = load i32, ptr %46, align 4, !tbaa !5
  %1555 = add i32 %1554, 1
  store i32 %1555, ptr %46, align 4, !tbaa !5
  br label %1539, !llvm.loop !44

1556:                                             ; preds = %1539
  %1557 = load double, ptr %100, align 8, !tbaa !11
  store double %1557, ptr %101, align 8, !tbaa !11
  %1558 = load double, ptr %83, align 8, !tbaa !11
  store double %1558, ptr %90, align 8, !tbaa !11
  store i32 0, ptr %56, align 4, !tbaa !5
  store i32 0, ptr %57, align 4, !tbaa !5
  store i32 0, ptr %29, align 4, !tbaa !5
  store i32 0, ptr %52, align 4, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !5
  %1559 = load i32, ptr %19, align 4, !tbaa !5
  %1560 = icmp ne i32 %1559, 0
  br i1 %1560, label %1561, label %1562

1561:                                             ; preds = %1556
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %1562

1562:                                             ; preds = %1561, %1556
  br label %1563

1563:                                             ; preds = %1960, %1562
  br label %1564

1564:                                             ; preds = %1563
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1565

1565:                                             ; preds = %1579, %1564
  %1566 = load i32, ptr %46, align 4, !tbaa !5
  %1567 = load i32, ptr %10, align 4, !tbaa !5
  %1568 = icmp ult i32 %1566, %1567
  br i1 %1568, label %1569, label %1582

1569:                                             ; preds = %1565
  %1570 = load ptr, ptr %11, align 8, !tbaa !9
  %1571 = load i32, ptr %46, align 4, !tbaa !5
  %1572 = zext i32 %1571 to i64
  %1573 = getelementptr inbounds double, ptr %1570, i64 %1572
  %1574 = load double, ptr %1573, align 8, !tbaa !11
  %1575 = load ptr, ptr %135, align 8, !tbaa !9
  %1576 = load i32, ptr %46, align 4, !tbaa !5
  %1577 = zext i32 %1576 to i64
  %1578 = getelementptr inbounds double, ptr %1575, i64 %1577
  store double %1574, ptr %1578, align 8, !tbaa !11
  br label %1579

1579:                                             ; preds = %1569
  %1580 = load i32, ptr %46, align 4, !tbaa !5
  %1581 = add i32 %1580, 1
  store i32 %1581, ptr %46, align 4, !tbaa !5
  br label %1565, !llvm.loop !45

1582:                                             ; preds = %1565
  %1583 = load double, ptr %83, align 8, !tbaa !11
  store double %1583, ptr %87, align 8, !tbaa !11
  %1584 = load double, ptr %87, align 8, !tbaa !11
  %1585 = fcmp olt double %1584, 0.000000e+00
  br i1 %1585, label %1586, label %1587

1586:                                             ; preds = %1582
  store double -1.000000e+00, ptr %110, align 8, !tbaa !11
  br label %1588

1587:                                             ; preds = %1582
  store double 1.000000e+00, ptr %110, align 8, !tbaa !11
  br label %1588

1588:                                             ; preds = %1587, %1586
  %1589 = load i32, ptr %19, align 4, !tbaa !5
  %1590 = icmp ne i32 %1589, 0
  br i1 %1590, label %1591, label %1594

1591:                                             ; preds = %1588
  %1592 = load i32, ptr %22, align 4, !tbaa !5
  store i32 %1592, ptr %23, align 4, !tbaa !5
  %1593 = load double, ptr %84, align 8, !tbaa !11
  store double %1593, ptr %85, align 8, !tbaa !11
  br label %1594

1594:                                             ; preds = %1591, %1588
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1595

1595:                                             ; preds = %1612, %1594
  %1596 = load i32, ptr %46, align 4, !tbaa !5
  %1597 = load i32, ptr %10, align 4, !tbaa !5
  %1598 = icmp ult i32 %1596, %1597
  br i1 %1598, label %1599, label %1615

1599:                                             ; preds = %1595
  %1600 = load double, ptr %101, align 8, !tbaa !11
  %1601 = load ptr, ptr %130, align 8, !tbaa !9
  %1602 = load i32, ptr %46, align 4, !tbaa !5
  %1603 = zext i32 %1602 to i64
  %1604 = getelementptr inbounds double, ptr %1601, i64 %1603
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  %1606 = load ptr, ptr %11, align 8, !tbaa !9
  %1607 = load i32, ptr %46, align 4, !tbaa !5
  %1608 = zext i32 %1607 to i64
  %1609 = getelementptr inbounds double, ptr %1606, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  %1611 = call double @llvm.fmuladd.f64(double %1600, double %1605, double %1610)
  store double %1611, ptr %1609, align 8, !tbaa !11
  br label %1612

1612:                                             ; preds = %1599
  %1613 = load i32, ptr %46, align 4, !tbaa !5
  %1614 = add i32 %1613, 1
  store i32 %1614, ptr %46, align 4, !tbaa !5
  br label %1595, !llvm.loop !46

1615:                                             ; preds = %1595
  store i32 0, ptr %49, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1616

1616:                                             ; preds = %1645, %1615
  %1617 = load i32, ptr %46, align 4, !tbaa !5
  %1618 = load i32, ptr %10, align 4, !tbaa !5
  %1619 = icmp ult i32 %1617, %1618
  br i1 %1619, label %1620, label %1648

1620:                                             ; preds = %1616
  %1621 = load ptr, ptr %11, align 8, !tbaa !9
  %1622 = load i32, ptr %46, align 4, !tbaa !5
  %1623 = zext i32 %1622 to i64
  %1624 = getelementptr inbounds double, ptr %1621, i64 %1623
  %1625 = load double, ptr %1624, align 8, !tbaa !11
  %1626 = load ptr, ptr %135, align 8, !tbaa !9
  %1627 = load i32, ptr %46, align 4, !tbaa !5
  %1628 = zext i32 %1627 to i64
  %1629 = getelementptr inbounds double, ptr %1626, i64 %1628
  %1630 = load double, ptr %1629, align 8, !tbaa !11
  %1631 = fsub double %1625, %1630
  %1632 = call double @llvm.fabs.f64(double %1631)
  %1633 = load ptr, ptr %11, align 8, !tbaa !9
  %1634 = load i32, ptr %46, align 4, !tbaa !5
  %1635 = zext i32 %1634 to i64
  %1636 = getelementptr inbounds double, ptr %1633, i64 %1635
  %1637 = load double, ptr %1636, align 8, !tbaa !11
  %1638 = call double @llvm.fabs.f64(double %1637)
  %1639 = fmul double %1638, 0x3CB0000000000000
  %1640 = fcmp olt double %1632, %1639
  br i1 %1640, label %1641, label %1644

1641:                                             ; preds = %1620
  %1642 = load i32, ptr %49, align 4, !tbaa !5
  %1643 = add i32 %1642, 1
  store i32 %1643, ptr %49, align 4, !tbaa !5
  br label %1644

1644:                                             ; preds = %1641, %1620
  br label %1645

1645:                                             ; preds = %1644
  %1646 = load i32, ptr %46, align 4, !tbaa !5
  %1647 = add i32 %1646, 1
  store i32 %1647, ptr %46, align 4, !tbaa !5
  br label %1616, !llvm.loop !47

1648:                                             ; preds = %1616
  %1649 = load ptr, ptr %12, align 8, !tbaa !9
  %1650 = load ptr, ptr %11, align 8, !tbaa !9
  %1651 = load ptr, ptr %17, align 8, !tbaa !9
  %1652 = call double %1649(ptr noundef %1650, ptr noundef %1651)
  store double %1652, ptr %83, align 8, !tbaa !11
  %1653 = load ptr, ptr %14, align 8, !tbaa !9
  %1654 = getelementptr inbounds double, ptr %1653, i64 9
  %1655 = load double, ptr %1654, align 8, !tbaa !11
  %1656 = fadd double %1655, 1.000000e+00
  store double %1656, ptr %1654, align 8, !tbaa !11
  %1657 = load double, ptr %99, align 8, !tbaa !11
  %1658 = load double, ptr %83, align 8, !tbaa !11
  %1659 = fmul double %1657, %1658
  %1660 = fcmp oge double %1659, 0x7FDFFFFFFFFFFFFF
  br i1 %1660, label %1661, label %1669

1661:                                             ; preds = %1648
  %1662 = load i32, ptr %27, align 4, !tbaa !5
  %1663 = icmp ne i32 %1662, 0
  br i1 %1663, label %1664, label %1666

1664:                                             ; preds = %1661
  %1665 = call i32 (ptr, ...) @printf(ptr noundef @.str.11)
  br label %1666

1666:                                             ; preds = %1664, %1661
  %1667 = load ptr, ptr %14, align 8, !tbaa !9
  %1668 = getelementptr inbounds double, ptr %1667, i64 8
  store double -7.000000e+00, ptr %1668, align 8, !tbaa !11
  br label %3546

1669:                                             ; preds = %1648
  %1670 = load i32, ptr %19, align 4, !tbaa !5
  %1671 = icmp ne i32 %1670, 0
  br i1 %1671, label %1672, label %1766

1672:                                             ; preds = %1669
  %1673 = load double, ptr %83, align 8, !tbaa !11
  store double %1673, ptr %84, align 8, !tbaa !11
  %1674 = load ptr, ptr %15, align 8, !tbaa !9
  %1675 = load ptr, ptr %11, align 8, !tbaa !9
  %1676 = load ptr, ptr %17, align 8, !tbaa !9
  %1677 = call double %1674(ptr noundef %1675, ptr noundef %1676)
  store double %1677, ptr %86, align 8, !tbaa !11
  %1678 = load ptr, ptr %14, align 8, !tbaa !9
  %1679 = getelementptr inbounds double, ptr %1678, i64 11
  %1680 = load double, ptr %1679, align 8, !tbaa !11
  %1681 = fadd double %1680, 1.000000e+00
  store double %1681, ptr %1679, align 8, !tbaa !11
  %1682 = load double, ptr %86, align 8, !tbaa !11
  %1683 = call double @llvm.fabs.f64(double %1682)
  %1684 = fcmp oge double %1683, 0x7FDFFFFFFFFFFFFF
  br i1 %1684, label %1685, label %1694

1685:                                             ; preds = %1672
  %1686 = load i32, ptr %27, align 4, !tbaa !5
  %1687 = icmp ne i32 %1686, 0
  br i1 %1687, label %1688, label %1691

1688:                                             ; preds = %1685
  %1689 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  %1690 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1691

1691:                                             ; preds = %1688, %1685
  %1692 = load ptr, ptr %14, align 8, !tbaa !9
  %1693 = getelementptr inbounds double, ptr %1692, i64 8
  store double -5.000000e+00, ptr %1693, align 8, !tbaa !11
  br label %3546

1694:                                             ; preds = %1672
  %1695 = load double, ptr %86, align 8, !tbaa !11
  %1696 = load double, ptr %73, align 8, !tbaa !11
  %1697 = fcmp ole double %1695, %1696
  br i1 %1697, label %1698, label %1699

1698:                                             ; preds = %1694
  store i32 1, ptr %22, align 4, !tbaa !5
  store double 0.000000e+00, ptr %86, align 8, !tbaa !11
  br label %1765

1699:                                             ; preds = %1694
  store i32 0, ptr %22, align 4, !tbaa !5
  %1700 = load double, ptr %84, align 8, !tbaa !11
  %1701 = load double, ptr %85, align 8, !tbaa !11
  %1702 = fsub double %1700, %1701
  store double %1702, ptr %93, align 8, !tbaa !11
  %1703 = load double, ptr %93, align 8, !tbaa !11
  %1704 = fcmp olt double %1703, 0xBCB0000000000000
  br i1 %1704, label %1705, label %1760

1705:                                             ; preds = %1699
  %1706 = load i32, ptr %23, align 4, !tbaa !5
  %1707 = icmp ne i32 %1706, 0
  br i1 %1707, label %1759, label %1708

1708:                                             ; preds = %1705
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1709

1709:                                             ; preds = %1738, %1708
  %1710 = load i32, ptr %46, align 4, !tbaa !5
  %1711 = load i32, ptr %10, align 4, !tbaa !5
  %1712 = icmp ult i32 %1710, %1711
  br i1 %1712, label %1713, label %1741

1713:                                             ; preds = %1709
  %1714 = load ptr, ptr %11, align 8, !tbaa !9
  %1715 = load i32, ptr %46, align 4, !tbaa !5
  %1716 = zext i32 %1715 to i64
  %1717 = getelementptr inbounds double, ptr %1714, i64 %1716
  %1718 = load double, ptr %1717, align 8, !tbaa !11
  %1719 = load ptr, ptr %135, align 8, !tbaa !9
  %1720 = load i32, ptr %46, align 4, !tbaa !5
  %1721 = zext i32 %1720 to i64
  %1722 = getelementptr inbounds double, ptr %1719, i64 %1721
  %1723 = load double, ptr %1722, align 8, !tbaa !11
  %1724 = fsub double %1718, %1723
  %1725 = load ptr, ptr %11, align 8, !tbaa !9
  %1726 = load i32, ptr %46, align 4, !tbaa !5
  %1727 = zext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1725, i64 %1727
  %1729 = load double, ptr %1728, align 8, !tbaa !11
  %1730 = load ptr, ptr %135, align 8, !tbaa !9
  %1731 = load i32, ptr %46, align 4, !tbaa !5
  %1732 = zext i32 %1731 to i64
  %1733 = getelementptr inbounds double, ptr %1730, i64 %1732
  %1734 = load double, ptr %1733, align 8, !tbaa !11
  %1735 = fsub double %1729, %1734
  %1736 = load double, ptr %109, align 8, !tbaa !11
  %1737 = call double @llvm.fmuladd.f64(double %1724, double %1735, double %1736)
  store double %1737, ptr %109, align 8, !tbaa !11
  br label %1738

1738:                                             ; preds = %1713
  %1739 = load i32, ptr %46, align 4, !tbaa !5
  %1740 = add i32 %1739, 1
  store i32 %1740, ptr %46, align 4, !tbaa !5
  br label %1709, !llvm.loop !48

1741:                                             ; preds = %1709
  %1742 = load double, ptr %109, align 8, !tbaa !11
  %1743 = call double @sqrt(double noundef %1742) #8
  store double %1743, ptr %109, align 8, !tbaa !11
  %1744 = load double, ptr %93, align 8, !tbaa !11
  %1745 = fmul double -1.500000e+01, %1744
  %1746 = load double, ptr %109, align 8, !tbaa !11
  %1747 = fdiv double %1745, %1746
  store double %1747, ptr %95, align 8, !tbaa !11
  %1748 = load double, ptr %95, align 8, !tbaa !11
  %1749 = load double, ptr %94, align 8, !tbaa !11
  %1750 = fmul double 1.200000e+00, %1749
  %1751 = fcmp ogt double %1748, %1750
  br i1 %1751, label %1752, label %1758

1752:                                             ; preds = %1741
  %1753 = load double, ptr %95, align 8, !tbaa !11
  store double %1753, ptr %94, align 8, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %58, align 4, !tbaa !5
  %1754 = load double, ptr %94, align 8, !tbaa !11
  %1755 = load double, ptr %86, align 8, !tbaa !11
  %1756 = load double, ptr %83, align 8, !tbaa !11
  %1757 = call double @llvm.fmuladd.f64(double %1754, double %1755, double %1756)
  store double %1757, ptr %83, align 8, !tbaa !11
  br label %1961

1758:                                             ; preds = %1741
  br label %1759

1759:                                             ; preds = %1758, %1705
  br label %1760

1760:                                             ; preds = %1759, %1699
  %1761 = load double, ptr %94, align 8, !tbaa !11
  %1762 = load double, ptr %86, align 8, !tbaa !11
  %1763 = load double, ptr %83, align 8, !tbaa !11
  %1764 = call double @llvm.fmuladd.f64(double %1761, double %1762, double %1763)
  store double %1764, ptr %83, align 8, !tbaa !11
  br label %1765

1765:                                             ; preds = %1760, %1698
  br label %1766

1766:                                             ; preds = %1765, %1669
  %1767 = load double, ptr %83, align 8, !tbaa !11
  %1768 = call double @llvm.fabs.f64(double %1767)
  %1769 = fcmp oge double %1768, 0x7FDFFFFFFFFFFFFF
  br i1 %1769, label %1770, label %1817

1770:                                             ; preds = %1766
  %1771 = load i32, ptr %27, align 4, !tbaa !5
  %1772 = icmp ne i32 %1771, 0
  br i1 %1772, label %1773, label %1775

1773:                                             ; preds = %1770
  %1774 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1775

1775:                                             ; preds = %1773, %1770
  %1776 = load i32, ptr %29, align 4, !tbaa !5
  %1777 = icmp ne i32 %1776, 0
  br i1 %1777, label %1782, label %1778

1778:                                             ; preds = %1775
  %1779 = load i32, ptr %52, align 4, !tbaa !5
  %1780 = load i32, ptr %39, align 4, !tbaa !5
  %1781 = icmp uge i32 %1779, %1780
  br i1 %1781, label %1782, label %1785

1782:                                             ; preds = %1778, %1775
  %1783 = load ptr, ptr %14, align 8, !tbaa !9
  %1784 = getelementptr inbounds double, ptr %1783, i64 8
  store double -3.000000e+00, ptr %1784, align 8, !tbaa !11
  br label %3546

1785:                                             ; preds = %1778
  %1786 = load i32, ptr %57, align 4, !tbaa !5
  %1787 = add i32 %1786, 1
  store i32 %1787, ptr %57, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  %1788 = load double, ptr %68, align 8, !tbaa !11
  %1789 = load double, ptr %101, align 8, !tbaa !11
  %1790 = fdiv double %1789, %1788
  store double %1790, ptr %101, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1791

1791:                                             ; preds = %1805, %1785
  %1792 = load i32, ptr %46, align 4, !tbaa !5
  %1793 = load i32, ptr %10, align 4, !tbaa !5
  %1794 = icmp ult i32 %1792, %1793
  br i1 %1794, label %1795, label %1808

1795:                                             ; preds = %1791
  %1796 = load ptr, ptr %135, align 8, !tbaa !9
  %1797 = load i32, ptr %46, align 4, !tbaa !5
  %1798 = zext i32 %1797 to i64
  %1799 = getelementptr inbounds double, ptr %1796, i64 %1798
  %1800 = load double, ptr %1799, align 8, !tbaa !11
  %1801 = load ptr, ptr %11, align 8, !tbaa !9
  %1802 = load i32, ptr %46, align 4, !tbaa !5
  %1803 = zext i32 %1802 to i64
  %1804 = getelementptr inbounds double, ptr %1801, i64 %1803
  store double %1800, ptr %1804, align 8, !tbaa !11
  br label %1805

1805:                                             ; preds = %1795
  %1806 = load i32, ptr %46, align 4, !tbaa !5
  %1807 = add i32 %1806, 1
  store i32 %1807, ptr %46, align 4, !tbaa !5
  br label %1791, !llvm.loop !49

1808:                                             ; preds = %1791
  %1809 = load double, ptr %87, align 8, !tbaa !11
  store double %1809, ptr %83, align 8, !tbaa !11
  store i32 1, ptr %30, align 4, !tbaa !5
  %1810 = load i32, ptr %19, align 4, !tbaa !5
  %1811 = icmp ne i32 %1810, 0
  br i1 %1811, label %1812, label %1815

1812:                                             ; preds = %1808
  %1813 = load i32, ptr %23, align 4, !tbaa !5
  store i32 %1813, ptr %22, align 4, !tbaa !5
  %1814 = load double, ptr %85, align 8, !tbaa !11
  store double %1814, ptr %84, align 8, !tbaa !11
  br label %1815

1815:                                             ; preds = %1812, %1808
  br label %1816

1816:                                             ; preds = %1815
  br label %1960

1817:                                             ; preds = %1766
  %1818 = load i32, ptr %49, align 4, !tbaa !5
  %1819 = load i32, ptr %10, align 4, !tbaa !5
  %1820 = icmp eq i32 %1818, %1819
  br i1 %1820, label %1821, label %1865

1821:                                             ; preds = %1817
  %1822 = load i32, ptr %45, align 4, !tbaa !5
  %1823 = add i32 %1822, 1
  store i32 %1823, ptr %45, align 4, !tbaa !5
  %1824 = load i32, ptr %45, align 4, !tbaa !5
  %1825 = icmp uge i32 %1824, 5
  br i1 %1825, label %1826, label %1836

1826:                                             ; preds = %1821
  %1827 = load i32, ptr %27, align 4, !tbaa !5
  %1828 = icmp ne i32 %1827, 0
  br i1 %1828, label %1829, label %1833

1829:                                             ; preds = %1826
  %1830 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %1831 = load ptr, ptr @endwarn4, align 8, !tbaa !9
  %1832 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %1831)
  br label %1833

1833:                                             ; preds = %1829, %1826
  %1834 = load ptr, ptr %14, align 8, !tbaa !9
  %1835 = getelementptr inbounds double, ptr %1834, i64 8
  store double -1.400000e+01, ptr %1835, align 8, !tbaa !11
  br label %3546

1836:                                             ; preds = %1821
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1837

1837:                                             ; preds = %1851, %1836
  %1838 = load i32, ptr %46, align 4, !tbaa !5
  %1839 = load i32, ptr %10, align 4, !tbaa !5
  %1840 = icmp ult i32 %1838, %1839
  br i1 %1840, label %1841, label %1854

1841:                                             ; preds = %1837
  %1842 = load ptr, ptr %135, align 8, !tbaa !9
  %1843 = load i32, ptr %46, align 4, !tbaa !5
  %1844 = zext i32 %1843 to i64
  %1845 = getelementptr inbounds double, ptr %1842, i64 %1844
  %1846 = load double, ptr %1845, align 8, !tbaa !11
  %1847 = load ptr, ptr %11, align 8, !tbaa !9
  %1848 = load i32, ptr %46, align 4, !tbaa !5
  %1849 = zext i32 %1848 to i64
  %1850 = getelementptr inbounds double, ptr %1847, i64 %1849
  store double %1846, ptr %1850, align 8, !tbaa !11
  br label %1851

1851:                                             ; preds = %1841
  %1852 = load i32, ptr %46, align 4, !tbaa !5
  %1853 = add i32 %1852, 1
  store i32 %1853, ptr %46, align 4, !tbaa !5
  br label %1837, !llvm.loop !50

1854:                                             ; preds = %1837
  %1855 = load double, ptr %87, align 8, !tbaa !11
  store double %1855, ptr %83, align 8, !tbaa !11
  %1856 = load double, ptr %101, align 8, !tbaa !11
  %1857 = fmul double %1856, 1.000000e+01
  store double %1857, ptr %101, align 8, !tbaa !11
  store i32 1, ptr %29, align 4, !tbaa !5
  %1858 = load i32, ptr %19, align 4, !tbaa !5
  %1859 = icmp ne i32 %1858, 0
  br i1 %1859, label %1860, label %1863

1860:                                             ; preds = %1854
  %1861 = load i32, ptr %23, align 4, !tbaa !5
  store i32 %1861, ptr %22, align 4, !tbaa !5
  %1862 = load double, ptr %85, align 8, !tbaa !11
  store double %1862, ptr %84, align 8, !tbaa !11
  br label %1863

1863:                                             ; preds = %1860, %1854
  br label %1864

1864:                                             ; preds = %1863
  br label %1959

1865:                                             ; preds = %1817
  %1866 = load double, ptr %99, align 8, !tbaa !11
  %1867 = load double, ptr %83, align 8, !tbaa !11
  %1868 = fmul double %1866, %1867
  %1869 = load double, ptr %99, align 8, !tbaa !11
  %1870 = load double, ptr %96, align 8, !tbaa !11
  %1871 = load double, ptr %110, align 8, !tbaa !11
  %1872 = call double @pow(double noundef %1870, double noundef %1871) #8
  %1873 = fmul double %1869, %1872
  %1874 = load double, ptr %87, align 8, !tbaa !11
  %1875 = fmul double %1873, %1874
  %1876 = fcmp olt double %1868, %1875
  br i1 %1876, label %1877, label %1917

1877:                                             ; preds = %1865
  %1878 = load i32, ptr %29, align 4, !tbaa !5
  %1879 = icmp ne i32 %1878, 0
  br i1 %1879, label %1880, label %1881

1880:                                             ; preds = %1877
  br label %1961

1881:                                             ; preds = %1877
  %1882 = load i32, ptr %57, align 4, !tbaa !5
  %1883 = add i32 %1882, 1
  store i32 %1883, ptr %57, align 4, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !5
  %1884 = load double, ptr %68, align 8, !tbaa !11
  %1885 = load double, ptr %101, align 8, !tbaa !11
  %1886 = fdiv double %1885, %1884
  store double %1886, ptr %101, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1887

1887:                                             ; preds = %1901, %1881
  %1888 = load i32, ptr %46, align 4, !tbaa !5
  %1889 = load i32, ptr %10, align 4, !tbaa !5
  %1890 = icmp ult i32 %1888, %1889
  br i1 %1890, label %1891, label %1904

1891:                                             ; preds = %1887
  %1892 = load ptr, ptr %135, align 8, !tbaa !9
  %1893 = load i32, ptr %46, align 4, !tbaa !5
  %1894 = zext i32 %1893 to i64
  %1895 = getelementptr inbounds double, ptr %1892, i64 %1894
  %1896 = load double, ptr %1895, align 8, !tbaa !11
  %1897 = load ptr, ptr %11, align 8, !tbaa !9
  %1898 = load i32, ptr %46, align 4, !tbaa !5
  %1899 = zext i32 %1898 to i64
  %1900 = getelementptr inbounds double, ptr %1897, i64 %1899
  store double %1896, ptr %1900, align 8, !tbaa !11
  br label %1901

1901:                                             ; preds = %1891
  %1902 = load i32, ptr %46, align 4, !tbaa !5
  %1903 = add i32 %1902, 1
  store i32 %1903, ptr %46, align 4, !tbaa !5
  br label %1887, !llvm.loop !51

1904:                                             ; preds = %1887
  %1905 = load double, ptr %87, align 8, !tbaa !11
  store double %1905, ptr %83, align 8, !tbaa !11
  %1906 = load i32, ptr %19, align 4, !tbaa !5
  %1907 = icmp ne i32 %1906, 0
  br i1 %1907, label %1908, label %1911

1908:                                             ; preds = %1904
  %1909 = load i32, ptr %23, align 4, !tbaa !5
  store i32 %1909, ptr %22, align 4, !tbaa !5
  %1910 = load double, ptr %85, align 8, !tbaa !11
  store double %1910, ptr %84, align 8, !tbaa !11
  br label %1911

1911:                                             ; preds = %1908, %1904
  %1912 = load i32, ptr %52, align 4, !tbaa !5
  %1913 = load i32, ptr %39, align 4, !tbaa !5
  %1914 = icmp uge i32 %1912, %1913
  br i1 %1914, label %1915, label %1916

1915:                                             ; preds = %1911
  br label %1961

1916:                                             ; preds = %1911
  br label %1958

1917:                                             ; preds = %1865
  %1918 = load double, ptr %99, align 8, !tbaa !11
  %1919 = load double, ptr %83, align 8, !tbaa !11
  %1920 = fmul double %1918, %1919
  %1921 = load double, ptr %99, align 8, !tbaa !11
  %1922 = load double, ptr %87, align 8, !tbaa !11
  %1923 = fmul double %1921, %1922
  %1924 = fcmp ole double %1920, %1923
  br i1 %1924, label %1925, label %1926

1925:                                             ; preds = %1917
  br label %1961

1926:                                             ; preds = %1917
  %1927 = load i32, ptr %56, align 4, !tbaa !5
  %1928 = add i32 %1927, 1
  store i32 %1928, ptr %56, align 4, !tbaa !5
  %1929 = load i32, ptr %57, align 4, !tbaa !5
  %1930 = icmp ugt i32 %1929, 0
  br i1 %1930, label %1931, label %1934

1931:                                             ; preds = %1926
  %1932 = load i32, ptr %52, align 4, !tbaa !5
  %1933 = add i32 %1932, 1
  store i32 %1933, ptr %52, align 4, !tbaa !5
  br label %1934

1934:                                             ; preds = %1931, %1926
  store i32 0, ptr %57, align 4, !tbaa !5
  %1935 = load i32, ptr %56, align 4, !tbaa !5
  %1936 = icmp uge i32 %1935, 20
  br i1 %1936, label %1937, label %1941

1937:                                             ; preds = %1934
  %1938 = load double, ptr %69, align 8, !tbaa !11
  %1939 = load double, ptr %101, align 8, !tbaa !11
  %1940 = fmul double %1939, %1938
  store double %1940, ptr %101, align 8, !tbaa !11
  br label %1957

1941:                                             ; preds = %1934
  %1942 = load i32, ptr %56, align 4, !tbaa !5
  %1943 = icmp uge i32 %1942, 10
  br i1 %1943, label %1944, label %1948

1944:                                             ; preds = %1941
  %1945 = load double, ptr %70, align 8, !tbaa !11
  %1946 = load double, ptr %101, align 8, !tbaa !11
  %1947 = fmul double %1946, %1945
  store double %1947, ptr %101, align 8, !tbaa !11
  br label %1956

1948:                                             ; preds = %1941
  %1949 = load i32, ptr %56, align 4, !tbaa !5
  %1950 = icmp uge i32 %1949, 3
  br i1 %1950, label %1951, label %1955

1951:                                             ; preds = %1948
  %1952 = load double, ptr %71, align 8, !tbaa !11
  %1953 = load double, ptr %101, align 8, !tbaa !11
  %1954 = fmul double %1953, %1952
  store double %1954, ptr %101, align 8, !tbaa !11
  br label %1955

1955:                                             ; preds = %1951, %1948
  br label %1956

1956:                                             ; preds = %1955, %1944
  br label %1957

1957:                                             ; preds = %1956, %1937
  br label %1958

1958:                                             ; preds = %1957, %1916
  br label %1959

1959:                                             ; preds = %1958, %1864
  br label %1960

1960:                                             ; preds = %1959, %1816
  br label %1563

1961:                                             ; preds = %1925, %1915, %1880, %1752
  store double 0.000000e+00, ptr %102, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %1962

1962:                                             ; preds = %1991, %1961
  %1963 = load i32, ptr %46, align 4, !tbaa !5
  %1964 = load i32, ptr %10, align 4, !tbaa !5
  %1965 = icmp ult i32 %1963, %1964
  br i1 %1965, label %1966, label %1994

1966:                                             ; preds = %1962
  %1967 = load ptr, ptr %136, align 8, !tbaa !9
  %1968 = load i32, ptr %46, align 4, !tbaa !5
  %1969 = zext i32 %1968 to i64
  %1970 = getelementptr inbounds double, ptr %1967, i64 %1969
  %1971 = load double, ptr %1970, align 8, !tbaa !11
  %1972 = load ptr, ptr %11, align 8, !tbaa !9
  %1973 = load i32, ptr %46, align 4, !tbaa !5
  %1974 = zext i32 %1973 to i64
  %1975 = getelementptr inbounds double, ptr %1972, i64 %1974
  %1976 = load double, ptr %1975, align 8, !tbaa !11
  %1977 = fsub double %1971, %1976
  %1978 = load ptr, ptr %136, align 8, !tbaa !9
  %1979 = load i32, ptr %46, align 4, !tbaa !5
  %1980 = zext i32 %1979 to i64
  %1981 = getelementptr inbounds double, ptr %1978, i64 %1980
  %1982 = load double, ptr %1981, align 8, !tbaa !11
  %1983 = load ptr, ptr %11, align 8, !tbaa !9
  %1984 = load i32, ptr %46, align 4, !tbaa !5
  %1985 = zext i32 %1984 to i64
  %1986 = getelementptr inbounds double, ptr %1983, i64 %1985
  %1987 = load double, ptr %1986, align 8, !tbaa !11
  %1988 = fsub double %1982, %1987
  %1989 = load double, ptr %102, align 8, !tbaa !11
  %1990 = call double @llvm.fmuladd.f64(double %1977, double %1988, double %1989)
  store double %1990, ptr %102, align 8, !tbaa !11
  br label %1991

1991:                                             ; preds = %1966
  %1992 = load i32, ptr %46, align 4, !tbaa !5
  %1993 = add i32 %1992, 1
  store i32 %1993, ptr %46, align 4, !tbaa !5
  br label %1962, !llvm.loop !52

1994:                                             ; preds = %1962
  %1995 = load double, ptr %102, align 8, !tbaa !11
  %1996 = call double @sqrt(double noundef %1995) #8
  store double %1996, ptr %102, align 8, !tbaa !11
  %1997 = load i32, ptr %55, align 4, !tbaa !5
  %1998 = load i32, ptr %32, align 4, !tbaa !5
  %1999 = icmp ult i32 %1997, %1998
  br i1 %1999, label %2000, label %2003

2000:                                             ; preds = %1994
  %2001 = load i32, ptr %55, align 4, !tbaa !5
  %2002 = add i32 %2001, 1
  store i32 %2002, ptr %55, align 4, !tbaa !5
  br label %2003

2003:                                             ; preds = %2000, %1994
  %2004 = load i32, ptr %55, align 4, !tbaa !5
  %2005 = icmp uge i32 %2004, 2
  br i1 %2005, label %2006, label %2025

2006:                                             ; preds = %2003
  %2007 = load i32, ptr %55, align 4, !tbaa !5
  %2008 = sub i32 %2007, 1
  store i32 %2008, ptr %46, align 4, !tbaa !5
  br label %2009

2009:                                             ; preds = %2021, %2006
  %2010 = load i32, ptr %46, align 4, !tbaa !5
  %2011 = icmp ugt i32 %2010, 0
  br i1 %2011, label %2012, label %2024

2012:                                             ; preds = %2009
  %2013 = load i32, ptr %46, align 4, !tbaa !5
  %2014 = sub i32 %2013, 1
  %2015 = zext i32 %2014 to i64
  %2016 = getelementptr inbounds [3 x double], ptr %61, i64 0, i64 %2015
  %2017 = load double, ptr %2016, align 8, !tbaa !11
  %2018 = load i32, ptr %46, align 4, !tbaa !5
  %2019 = zext i32 %2018 to i64
  %2020 = getelementptr inbounds [3 x double], ptr %61, i64 0, i64 %2019
  store double %2017, ptr %2020, align 8, !tbaa !11
  br label %2021

2021:                                             ; preds = %2012
  %2022 = load i32, ptr %46, align 4, !tbaa !5
  %2023 = add i32 %2022, -1
  store i32 %2023, ptr %46, align 4, !tbaa !5
  br label %2009, !llvm.loop !53

2024:                                             ; preds = %2009
  br label %2025

2025:                                             ; preds = %2024, %2003
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2026

2026:                                             ; preds = %2043, %2025
  %2027 = load i32, ptr %46, align 4, !tbaa !5
  %2028 = load i32, ptr %10, align 4, !tbaa !5
  %2029 = icmp ult i32 %2027, %2028
  br i1 %2029, label %2030, label %2046

2030:                                             ; preds = %2026
  %2031 = load ptr, ptr %130, align 8, !tbaa !9
  %2032 = load i32, ptr %46, align 4, !tbaa !5
  %2033 = zext i32 %2032 to i64
  %2034 = getelementptr inbounds double, ptr %2031, i64 %2033
  %2035 = load double, ptr %2034, align 8, !tbaa !11
  %2036 = load ptr, ptr %130, align 8, !tbaa !9
  %2037 = load i32, ptr %46, align 4, !tbaa !5
  %2038 = zext i32 %2037 to i64
  %2039 = getelementptr inbounds double, ptr %2036, i64 %2038
  %2040 = load double, ptr %2039, align 8, !tbaa !11
  %2041 = load double, ptr %109, align 8, !tbaa !11
  %2042 = call double @llvm.fmuladd.f64(double %2035, double %2040, double %2041)
  store double %2042, ptr %109, align 8, !tbaa !11
  br label %2043

2043:                                             ; preds = %2030
  %2044 = load i32, ptr %46, align 4, !tbaa !5
  %2045 = add i32 %2044, 1
  store i32 %2045, ptr %46, align 4, !tbaa !5
  br label %2026, !llvm.loop !54

2046:                                             ; preds = %2026
  %2047 = load double, ptr %109, align 8, !tbaa !11
  %2048 = call double @sqrt(double noundef %2047) #8
  store double %2048, ptr %109, align 8, !tbaa !11
  %2049 = load double, ptr %102, align 8, !tbaa !11
  %2050 = load double, ptr %100, align 8, !tbaa !11
  %2051 = call double @llvm.fabs.f64(double %2050)
  %2052 = load double, ptr %109, align 8, !tbaa !11
  %2053 = fmul double %2051, %2052
  %2054 = fdiv double %2049, %2053
  %2055 = getelementptr inbounds [3 x double], ptr %61, i64 0, i64 0
  store double %2054, ptr %2055, align 16, !tbaa !11
  store double 0.000000e+00, ptr %62, align 8, !tbaa !11
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %2056

2056:                                             ; preds = %2077, %2046
  %2057 = load i32, ptr %46, align 4, !tbaa !5
  %2058 = load i32, ptr %55, align 4, !tbaa !5
  %2059 = icmp ule i32 %2057, %2058
  br i1 %2059, label %2060, label %2080

2060:                                             ; preds = %2056
  %2061 = load i32, ptr %55, align 4, !tbaa !5
  %2062 = load i32, ptr %46, align 4, !tbaa !5
  %2063 = sub i32 %2061, %2062
  %2064 = add i32 %2063, 1
  %2065 = uitofp i32 %2064 to double
  store double %2065, ptr %110, align 8, !tbaa !11
  %2066 = load double, ptr %110, align 8, !tbaa !11
  %2067 = load double, ptr %109, align 8, !tbaa !11
  %2068 = fadd double %2067, %2066
  store double %2068, ptr %109, align 8, !tbaa !11
  %2069 = load i32, ptr %46, align 4, !tbaa !5
  %2070 = sub i32 %2069, 1
  %2071 = zext i32 %2070 to i64
  %2072 = getelementptr inbounds [3 x double], ptr %61, i64 0, i64 %2071
  %2073 = load double, ptr %2072, align 8, !tbaa !11
  %2074 = load double, ptr %110, align 8, !tbaa !11
  %2075 = load double, ptr %62, align 8, !tbaa !11
  %2076 = call double @llvm.fmuladd.f64(double %2073, double %2074, double %2075)
  store double %2076, ptr %62, align 8, !tbaa !11
  br label %2077

2077:                                             ; preds = %2060
  %2078 = load i32, ptr %46, align 4, !tbaa !5
  %2079 = add i32 %2078, 1
  store i32 %2079, ptr %46, align 4, !tbaa !5
  br label %2056, !llvm.loop !55

2080:                                             ; preds = %2056
  %2081 = load double, ptr %109, align 8, !tbaa !11
  %2082 = load double, ptr %62, align 8, !tbaa !11
  %2083 = fdiv double %2082, %2081
  store double %2083, ptr %62, align 8, !tbaa !11
  %2084 = load double, ptr %62, align 8, !tbaa !11
  %2085 = load double, ptr %67, align 8, !tbaa !11
  %2086 = fcmp ogt double %2084, %2085
  br i1 %2086, label %2087, label %2106

2087:                                             ; preds = %2080
  %2088 = load i32, ptr %55, align 4, !tbaa !5
  %2089 = icmp eq i32 %2088, 1
  br i1 %2089, label %2090, label %2097

2090:                                             ; preds = %2087
  %2091 = load double, ptr %62, align 8, !tbaa !11
  %2092 = load double, ptr %67, align 8, !tbaa !11
  %2093 = fsub double %2091, %2092
  %2094 = fadd double %2093, 1.000000e+00
  %2095 = load double, ptr %100, align 8, !tbaa !11
  %2096 = fmul double %2095, %2094
  store double %2096, ptr %100, align 8, !tbaa !11
  br label %2105

2097:                                             ; preds = %2087
  %2098 = load double, ptr %62, align 8, !tbaa !11
  %2099 = load double, ptr %67, align 8, !tbaa !11
  %2100 = fsub double %2098, %2099
  %2101 = fadd double %2100, 1.000000e+00
  %2102 = call double @sqrt(double noundef %2101) #8
  %2103 = load double, ptr %100, align 8, !tbaa !11
  %2104 = fmul double %2103, %2102
  store double %2104, ptr %100, align 8, !tbaa !11
  br label %2105

2105:                                             ; preds = %2097, %2090
  br label %2118

2106:                                             ; preds = %2080
  %2107 = load double, ptr %62, align 8, !tbaa !11
  %2108 = load double, ptr %67, align 8, !tbaa !11
  %2109 = fcmp olt double %2107, %2108
  br i1 %2109, label %2110, label %2117

2110:                                             ; preds = %2106
  %2111 = load double, ptr %62, align 8, !tbaa !11
  %2112 = load double, ptr %67, align 8, !tbaa !11
  %2113 = fdiv double %2111, %2112
  %2114 = call double @sqrt(double noundef %2113) #8
  %2115 = load double, ptr %100, align 8, !tbaa !11
  %2116 = fmul double %2115, %2114
  store double %2116, ptr %100, align 8, !tbaa !11
  br label %2117

2117:                                             ; preds = %2110, %2106
  br label %2118

2118:                                             ; preds = %2117, %2105
  %2119 = load i32, ptr %29, align 4, !tbaa !5
  %2120 = icmp ne i32 %2119, 0
  br i1 %2120, label %2121, label %2124

2121:                                             ; preds = %2118
  %2122 = load i32, ptr %45, align 4, !tbaa !5
  %2123 = add i32 %2122, 1
  store i32 %2123, ptr %45, align 4, !tbaa !5
  br label %2124

2124:                                             ; preds = %2121, %2118
  %2125 = load i32, ptr %20, align 4, !tbaa !5
  %2126 = icmp ne i32 %2125, 0
  br i1 %2126, label %2127, label %2187

2127:                                             ; preds = %2124
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %2128

2128:                                             ; preds = %2157, %2127
  %2129 = load i32, ptr %47, align 4, !tbaa !5
  %2130 = load i32, ptr %10, align 4, !tbaa !5
  %2131 = icmp ult i32 %2129, %2130
  br i1 %2131, label %2132, label %2160

2132:                                             ; preds = %2128
  %2133 = load ptr, ptr %130, align 8, !tbaa !9
  %2134 = load i32, ptr %47, align 4, !tbaa !5
  %2135 = zext i32 %2134 to i64
  %2136 = getelementptr inbounds double, ptr %2133, i64 %2135
  %2137 = load double, ptr %2136, align 8, !tbaa !11
  %2138 = fcmp oge double %2137, 0.000000e+00
  br i1 %2138, label %2139, label %2147

2139:                                             ; preds = %2132
  %2140 = load double, ptr %99, align 8, !tbaa !11
  %2141 = load double, ptr %76, align 8, !tbaa !11
  %2142 = fmul double %2140, %2141
  %2143 = load ptr, ptr %140, align 8, !tbaa !9
  %2144 = load i32, ptr %47, align 4, !tbaa !5
  %2145 = zext i32 %2144 to i64
  %2146 = getelementptr inbounds double, ptr %2143, i64 %2145
  store double %2142, ptr %2146, align 8, !tbaa !11
  br label %2156

2147:                                             ; preds = %2132
  %2148 = load double, ptr %99, align 8, !tbaa !11
  %2149 = fneg double %2148
  %2150 = load double, ptr %76, align 8, !tbaa !11
  %2151 = fmul double %2149, %2150
  %2152 = load ptr, ptr %140, align 8, !tbaa !9
  %2153 = load i32, ptr %47, align 4, !tbaa !5
  %2154 = zext i32 %2153 to i64
  %2155 = getelementptr inbounds double, ptr %2152, i64 %2154
  store double %2151, ptr %2155, align 8, !tbaa !11
  br label %2156

2156:                                             ; preds = %2147, %2139
  br label %2157

2157:                                             ; preds = %2156
  %2158 = load i32, ptr %47, align 4, !tbaa !5
  %2159 = add i32 %2158, 1
  store i32 %2159, ptr %47, align 4, !tbaa !5
  br label %2128, !llvm.loop !56

2160:                                             ; preds = %2128
  store i32 1, ptr %31, align 4, !tbaa !5
  %2161 = load i32, ptr %19, align 4, !tbaa !5
  %2162 = icmp ne i32 %2161, 0
  br i1 %2162, label %2163, label %2172

2163:                                             ; preds = %2160
  %2164 = load i32, ptr %10, align 4, !tbaa !5
  %2165 = load ptr, ptr %129, align 8, !tbaa !9
  %2166 = load ptr, ptr %11, align 8, !tbaa !9
  %2167 = load double, ptr %84, align 8, !tbaa !11
  %2168 = load ptr, ptr %12, align 8, !tbaa !9
  %2169 = load ptr, ptr %140, align 8, !tbaa !9
  %2170 = load i32, ptr %31, align 4, !tbaa !5
  %2171 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %2164, ptr noundef %2165, ptr noundef %2166, double noundef %2167, ptr noundef %2168, ptr noundef %2169, i32 noundef %2170, ptr noundef %2171)
  br label %2181

2172:                                             ; preds = %2160
  %2173 = load i32, ptr %10, align 4, !tbaa !5
  %2174 = load ptr, ptr %129, align 8, !tbaa !9
  %2175 = load ptr, ptr %11, align 8, !tbaa !9
  %2176 = load double, ptr %83, align 8, !tbaa !11
  %2177 = load ptr, ptr %12, align 8, !tbaa !9
  %2178 = load ptr, ptr %140, align 8, !tbaa !9
  %2179 = load i32, ptr %31, align 4, !tbaa !5
  %2180 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %2173, ptr noundef %2174, ptr noundef %2175, double noundef %2176, ptr noundef %2177, ptr noundef %2178, i32 noundef %2179, ptr noundef %2180)
  br label %2181

2181:                                             ; preds = %2172, %2163
  %2182 = load double, ptr %72, align 8, !tbaa !11
  %2183 = load ptr, ptr %14, align 8, !tbaa !9
  %2184 = getelementptr inbounds double, ptr %2183, i64 9
  %2185 = load double, ptr %2184, align 8, !tbaa !11
  %2186 = fadd double %2185, %2182
  store double %2186, ptr %2184, align 8, !tbaa !11
  br label %2196

2187:                                             ; preds = %2124
  %2188 = load ptr, ptr %13, align 8, !tbaa !9
  %2189 = load ptr, ptr %11, align 8, !tbaa !9
  %2190 = load ptr, ptr %129, align 8, !tbaa !9
  %2191 = load ptr, ptr %17, align 8, !tbaa !9
  call void %2188(ptr noundef %2189, ptr noundef %2190, ptr noundef %2191)
  %2192 = load ptr, ptr %14, align 8, !tbaa !9
  %2193 = getelementptr inbounds double, ptr %2192, i64 10
  %2194 = load double, ptr %2193, align 8, !tbaa !11
  %2195 = fadd double %2194, 1.000000e+00
  store double %2195, ptr %2193, align 8, !tbaa !11
  br label %2196

2196:                                             ; preds = %2187, %2181
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2197

2197:                                             ; preds = %2214, %2196
  %2198 = load i32, ptr %46, align 4, !tbaa !5
  %2199 = load i32, ptr %10, align 4, !tbaa !5
  %2200 = icmp ult i32 %2198, %2199
  br i1 %2200, label %2201, label %2217

2201:                                             ; preds = %2197
  %2202 = load ptr, ptr %129, align 8, !tbaa !9
  %2203 = load i32, ptr %46, align 4, !tbaa !5
  %2204 = zext i32 %2203 to i64
  %2205 = getelementptr inbounds double, ptr %2202, i64 %2204
  %2206 = load double, ptr %2205, align 8, !tbaa !11
  %2207 = load ptr, ptr %129, align 8, !tbaa !9
  %2208 = load i32, ptr %46, align 4, !tbaa !5
  %2209 = zext i32 %2208 to i64
  %2210 = getelementptr inbounds double, ptr %2207, i64 %2209
  %2211 = load double, ptr %2210, align 8, !tbaa !11
  %2212 = load double, ptr %103, align 8, !tbaa !11
  %2213 = call double @llvm.fmuladd.f64(double %2206, double %2211, double %2212)
  store double %2213, ptr %103, align 8, !tbaa !11
  br label %2214

2214:                                             ; preds = %2201
  %2215 = load i32, ptr %46, align 4, !tbaa !5
  %2216 = add i32 %2215, 1
  store i32 %2216, ptr %46, align 4, !tbaa !5
  br label %2197, !llvm.loop !57

2217:                                             ; preds = %2197
  %2218 = load double, ptr %103, align 8, !tbaa !11
  %2219 = call double @sqrt(double noundef %2218) #8
  store double %2219, ptr %103, align 8, !tbaa !11
  %2220 = load double, ptr %103, align 8, !tbaa !11
  %2221 = fcmp oge double %2220, 0x7FDFFFFFFFFFFFFF
  br i1 %2221, label %2222, label %2230

2222:                                             ; preds = %2217
  %2223 = load i32, ptr %27, align 4, !tbaa !5
  %2224 = icmp ne i32 %2223, 0
  br i1 %2224, label %2225, label %2227

2225:                                             ; preds = %2222
  %2226 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %2227

2227:                                             ; preds = %2225, %2222
  %2228 = load ptr, ptr %14, align 8, !tbaa !9
  %2229 = getelementptr inbounds double, ptr %2228, i64 8
  store double -4.000000e+00, ptr %2229, align 8, !tbaa !11
  br label %3546

2230:                                             ; preds = %2217
  %2231 = load double, ptr %103, align 8, !tbaa !11
  %2232 = load double, ptr %75, align 8, !tbaa !11
  %2233 = fcmp olt double %2231, %2232
  br i1 %2233, label %2234, label %2241

2234:                                             ; preds = %2230
  %2235 = load i32, ptr %27, align 4, !tbaa !5
  %2236 = icmp ne i32 %2235, 0
  br i1 %2236, label %2237, label %2239

2237:                                             ; preds = %2234
  %2238 = call i32 (ptr, ...) @printf(ptr noundef @.str.14)
  br label %2239

2239:                                             ; preds = %2237, %2234
  %2240 = load double, ptr %75, align 8, !tbaa !11
  store double %2240, ptr %103, align 8, !tbaa !11
  br label %2241

2241:                                             ; preds = %2239, %2230
  br label %2242

2242:                                             ; preds = %2241
  %2243 = load i32, ptr %19, align 4, !tbaa !5
  %2244 = icmp ne i32 %2243, 0
  br i1 %2244, label %2245, label %2421

2245:                                             ; preds = %2242
  %2246 = load i32, ptr %22, align 4, !tbaa !5
  %2247 = icmp ne i32 %2246, 0
  br i1 %2247, label %2420, label %2248

2248:                                             ; preds = %2245
  %2249 = load double, ptr %103, align 8, !tbaa !11
  %2250 = load double, ptr %94, align 8, !tbaa !11
  %2251 = fmul double 1.000000e-02, %2250
  %2252 = fcmp olt double %2249, %2251
  br i1 %2252, label %2253, label %2262

2253:                                             ; preds = %2248
  %2254 = load i32, ptr %58, align 4, !tbaa !5
  %2255 = add i32 %2254, 1
  store i32 %2255, ptr %58, align 4, !tbaa !5
  %2256 = load i32, ptr %58, align 4, !tbaa !5
  %2257 = icmp uge i32 %2256, 20
  br i1 %2257, label %2258, label %2261

2258:                                             ; preds = %2253
  %2259 = load double, ptr %94, align 8, !tbaa !11
  %2260 = fdiv double %2259, 1.000000e+01
  store double %2260, ptr %94, align 8, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !5
  store i32 0, ptr %58, align 4, !tbaa !5
  br label %2261

2261:                                             ; preds = %2258, %2253
  br label %2263

2262:                                             ; preds = %2248
  store i32 0, ptr %58, align 4, !tbaa !5
  br label %2263

2263:                                             ; preds = %2262, %2261
  %2264 = load i32, ptr %21, align 4, !tbaa !5
  %2265 = icmp ne i32 %2264, 0
  br i1 %2265, label %2266, label %2309

2266:                                             ; preds = %2263
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %2267

2267:                                             ; preds = %2292, %2266
  %2268 = load i32, ptr %47, align 4, !tbaa !5
  %2269 = load i32, ptr %10, align 4, !tbaa !5
  %2270 = icmp ult i32 %2268, %2269
  br i1 %2270, label %2271, label %2295

2271:                                             ; preds = %2267
  %2272 = load ptr, ptr %11, align 8, !tbaa !9
  %2273 = load i32, ptr %47, align 4, !tbaa !5
  %2274 = zext i32 %2273 to i64
  %2275 = getelementptr inbounds double, ptr %2272, i64 %2274
  %2276 = load double, ptr %2275, align 8, !tbaa !11
  %2277 = fcmp oge double %2276, 0.000000e+00
  br i1 %2277, label %2278, label %2284

2278:                                             ; preds = %2271
  %2279 = load double, ptr %76, align 8, !tbaa !11
  %2280 = load ptr, ptr %140, align 8, !tbaa !9
  %2281 = load i32, ptr %47, align 4, !tbaa !5
  %2282 = zext i32 %2281 to i64
  %2283 = getelementptr inbounds double, ptr %2280, i64 %2282
  store double %2279, ptr %2283, align 8, !tbaa !11
  br label %2291

2284:                                             ; preds = %2271
  %2285 = load double, ptr %76, align 8, !tbaa !11
  %2286 = fneg double %2285
  %2287 = load ptr, ptr %140, align 8, !tbaa !9
  %2288 = load i32, ptr %47, align 4, !tbaa !5
  %2289 = zext i32 %2288 to i64
  %2290 = getelementptr inbounds double, ptr %2287, i64 %2289
  store double %2286, ptr %2290, align 8, !tbaa !11
  br label %2291

2291:                                             ; preds = %2284, %2278
  br label %2292

2292:                                             ; preds = %2291
  %2293 = load i32, ptr %47, align 4, !tbaa !5
  %2294 = add i32 %2293, 1
  store i32 %2294, ptr %47, align 4, !tbaa !5
  br label %2267, !llvm.loop !58

2295:                                             ; preds = %2267
  store i32 0, ptr %31, align 4, !tbaa !5
  %2296 = load i32, ptr %10, align 4, !tbaa !5
  %2297 = load ptr, ptr %133, align 8, !tbaa !9
  %2298 = load ptr, ptr %11, align 8, !tbaa !9
  %2299 = load double, ptr %86, align 8, !tbaa !11
  %2300 = load ptr, ptr %15, align 8, !tbaa !9
  %2301 = load ptr, ptr %140, align 8, !tbaa !9
  %2302 = load i32, ptr %31, align 4, !tbaa !5
  %2303 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %2296, ptr noundef %2297, ptr noundef %2298, double noundef %2299, ptr noundef %2300, ptr noundef %2301, i32 noundef %2302, ptr noundef %2303)
  %2304 = load double, ptr %72, align 8, !tbaa !11
  %2305 = load ptr, ptr %14, align 8, !tbaa !9
  %2306 = getelementptr inbounds double, ptr %2305, i64 11
  %2307 = load double, ptr %2306, align 8, !tbaa !11
  %2308 = fadd double %2307, %2304
  store double %2308, ptr %2306, align 8, !tbaa !11
  br label %2318

2309:                                             ; preds = %2263
  %2310 = load ptr, ptr %16, align 8, !tbaa !9
  %2311 = load ptr, ptr %11, align 8, !tbaa !9
  %2312 = load ptr, ptr %133, align 8, !tbaa !9
  %2313 = load ptr, ptr %17, align 8, !tbaa !9
  call void %2310(ptr noundef %2311, ptr noundef %2312, ptr noundef %2313)
  %2314 = load ptr, ptr %14, align 8, !tbaa !9
  %2315 = getelementptr inbounds double, ptr %2314, i64 12
  %2316 = load double, ptr %2315, align 8, !tbaa !11
  %2317 = fadd double %2316, 1.000000e+00
  store double %2317, ptr %2315, align 8, !tbaa !11
  br label %2318

2318:                                             ; preds = %2309, %2295
  store double 0.000000e+00, ptr %104, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2319

2319:                                             ; preds = %2336, %2318
  %2320 = load i32, ptr %46, align 4, !tbaa !5
  %2321 = load i32, ptr %10, align 4, !tbaa !5
  %2322 = icmp ult i32 %2320, %2321
  br i1 %2322, label %2323, label %2339

2323:                                             ; preds = %2319
  %2324 = load ptr, ptr %133, align 8, !tbaa !9
  %2325 = load i32, ptr %46, align 4, !tbaa !5
  %2326 = zext i32 %2325 to i64
  %2327 = getelementptr inbounds double, ptr %2324, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !11
  %2329 = load ptr, ptr %133, align 8, !tbaa !9
  %2330 = load i32, ptr %46, align 4, !tbaa !5
  %2331 = zext i32 %2330 to i64
  %2332 = getelementptr inbounds double, ptr %2329, i64 %2331
  %2333 = load double, ptr %2332, align 8, !tbaa !11
  %2334 = load double, ptr %104, align 8, !tbaa !11
  %2335 = call double @llvm.fmuladd.f64(double %2328, double %2333, double %2334)
  store double %2335, ptr %104, align 8, !tbaa !11
  br label %2336

2336:                                             ; preds = %2323
  %2337 = load i32, ptr %46, align 4, !tbaa !5
  %2338 = add i32 %2337, 1
  store i32 %2338, ptr %46, align 4, !tbaa !5
  br label %2319, !llvm.loop !59

2339:                                             ; preds = %2319
  %2340 = load double, ptr %104, align 8, !tbaa !11
  %2341 = call double @sqrt(double noundef %2340) #8
  store double %2341, ptr %104, align 8, !tbaa !11
  %2342 = load double, ptr %104, align 8, !tbaa !11
  %2343 = fcmp oge double %2342, 0x7FDFFFFFFFFFFFFF
  br i1 %2343, label %2344, label %2352

2344:                                             ; preds = %2339
  %2345 = load i32, ptr %27, align 4, !tbaa !5
  %2346 = icmp ne i32 %2345, 0
  br i1 %2346, label %2347, label %2349

2347:                                             ; preds = %2344
  %2348 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2349

2349:                                             ; preds = %2347, %2344
  %2350 = load ptr, ptr %14, align 8, !tbaa !9
  %2351 = getelementptr inbounds double, ptr %2350, i64 8
  store double -6.000000e+00, ptr %2351, align 8, !tbaa !11
  br label %3546

2352:                                             ; preds = %2339
  %2353 = load double, ptr %104, align 8, !tbaa !11
  %2354 = load double, ptr %75, align 8, !tbaa !11
  %2355 = fcmp olt double %2353, %2354
  br i1 %2355, label %2356, label %2367

2356:                                             ; preds = %2352
  %2357 = load i32, ptr %21, align 4, !tbaa !5
  %2358 = icmp ne i32 %2357, 0
  br i1 %2358, label %2367, label %2359

2359:                                             ; preds = %2356
  %2360 = load i32, ptr %27, align 4, !tbaa !5
  %2361 = icmp ne i32 %2360, 0
  br i1 %2361, label %2362, label %2364

2362:                                             ; preds = %2359
  %2363 = call i32 (ptr, ...) @printf(ptr noundef @.str.8)
  br label %2364

2364:                                             ; preds = %2362, %2359
  %2365 = load ptr, ptr %14, align 8, !tbaa !9
  %2366 = getelementptr inbounds double, ptr %2365, i64 8
  store double -6.000000e+00, ptr %2366, align 8, !tbaa !11
  br label %3546

2367:                                             ; preds = %2356, %2352
  br label %2368

2368:                                             ; preds = %2367
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2369

2369:                                             ; preds = %2398, %2368
  %2370 = load i32, ptr %46, align 4, !tbaa !5
  %2371 = load i32, ptr %10, align 4, !tbaa !5
  %2372 = icmp ult i32 %2370, %2371
  br i1 %2372, label %2373, label %2401

2373:                                             ; preds = %2369
  %2374 = load double, ptr %94, align 8, !tbaa !11
  %2375 = load ptr, ptr %133, align 8, !tbaa !9
  %2376 = load i32, ptr %46, align 4, !tbaa !5
  %2377 = zext i32 %2376 to i64
  %2378 = getelementptr inbounds double, ptr %2375, i64 %2377
  %2379 = load double, ptr %2378, align 8, !tbaa !11
  %2380 = load ptr, ptr %129, align 8, !tbaa !9
  %2381 = load i32, ptr %46, align 4, !tbaa !5
  %2382 = zext i32 %2381 to i64
  %2383 = getelementptr inbounds double, ptr %2380, i64 %2382
  %2384 = load double, ptr %2383, align 8, !tbaa !11
  %2385 = call double @llvm.fmuladd.f64(double %2374, double %2379, double %2384)
  store double %2385, ptr %2383, align 8, !tbaa !11
  %2386 = load ptr, ptr %129, align 8, !tbaa !9
  %2387 = load i32, ptr %46, align 4, !tbaa !5
  %2388 = zext i32 %2387 to i64
  %2389 = getelementptr inbounds double, ptr %2386, i64 %2388
  %2390 = load double, ptr %2389, align 8, !tbaa !11
  %2391 = load ptr, ptr %129, align 8, !tbaa !9
  %2392 = load i32, ptr %46, align 4, !tbaa !5
  %2393 = zext i32 %2392 to i64
  %2394 = getelementptr inbounds double, ptr %2391, i64 %2393
  %2395 = load double, ptr %2394, align 8, !tbaa !11
  %2396 = load double, ptr %103, align 8, !tbaa !11
  %2397 = call double @llvm.fmuladd.f64(double %2390, double %2395, double %2396)
  store double %2397, ptr %103, align 8, !tbaa !11
  br label %2398

2398:                                             ; preds = %2373
  %2399 = load i32, ptr %46, align 4, !tbaa !5
  %2400 = add i32 %2399, 1
  store i32 %2400, ptr %46, align 4, !tbaa !5
  br label %2369, !llvm.loop !60

2401:                                             ; preds = %2369
  %2402 = load double, ptr %103, align 8, !tbaa !11
  %2403 = call double @sqrt(double noundef %2402) #8
  store double %2403, ptr %103, align 8, !tbaa !11
  %2404 = load i32, ptr %28, align 4, !tbaa !5
  %2405 = icmp ne i32 %2404, 0
  br i1 %2405, label %2406, label %2419

2406:                                             ; preds = %2401
  %2407 = load i32, ptr %27, align 4, !tbaa !5
  %2408 = icmp ne i32 %2407, 0
  br i1 %2408, label %2409, label %2411

2409:                                             ; preds = %2406
  %2410 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %2411

2411:                                             ; preds = %2409, %2406
  %2412 = load double, ptr %99, align 8, !tbaa !11
  %2413 = load double, ptr %102, align 8, !tbaa !11
  %2414 = fmul double %2412, %2413
  %2415 = fdiv double %2414, 3.000000e+00
  store double %2415, ptr %100, align 8, !tbaa !11
  %2416 = load i32, ptr %34, align 4, !tbaa !5
  %2417 = sub i32 %2416, 1
  store i32 %2417, ptr %34, align 4, !tbaa !5
  %2418 = load double, ptr %103, align 8, !tbaa !11
  store double %2418, ptr %105, align 8, !tbaa !11
  br label %3545

2419:                                             ; preds = %2401
  br label %2420

2420:                                             ; preds = %2419, %2245
  br label %2421

2421:                                             ; preds = %2420, %2242
  %2422 = load double, ptr %99, align 8, !tbaa !11
  %2423 = load double, ptr %83, align 8, !tbaa !11
  %2424 = fmul double %2422, %2423
  %2425 = load double, ptr %99, align 8, !tbaa !11
  %2426 = load double, ptr %91, align 8, !tbaa !11
  %2427 = fmul double %2425, %2426
  %2428 = fcmp ogt double %2424, %2427
  br i1 %2428, label %2429, label %2458

2429:                                             ; preds = %2421
  %2430 = load double, ptr %83, align 8, !tbaa !11
  store double %2430, ptr %91, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2431

2431:                                             ; preds = %2454, %2429
  %2432 = load i32, ptr %46, align 4, !tbaa !5
  %2433 = load i32, ptr %10, align 4, !tbaa !5
  %2434 = icmp ult i32 %2432, %2433
  br i1 %2434, label %2435, label %2457

2435:                                             ; preds = %2431
  %2436 = load ptr, ptr %11, align 8, !tbaa !9
  %2437 = load i32, ptr %46, align 4, !tbaa !5
  %2438 = zext i32 %2437 to i64
  %2439 = getelementptr inbounds double, ptr %2436, i64 %2438
  %2440 = load double, ptr %2439, align 8, !tbaa !11
  %2441 = load ptr, ptr %137, align 8, !tbaa !9
  %2442 = load i32, ptr %46, align 4, !tbaa !5
  %2443 = zext i32 %2442 to i64
  %2444 = getelementptr inbounds double, ptr %2441, i64 %2443
  store double %2440, ptr %2444, align 8, !tbaa !11
  %2445 = load ptr, ptr %129, align 8, !tbaa !9
  %2446 = load i32, ptr %46, align 4, !tbaa !5
  %2447 = zext i32 %2446 to i64
  %2448 = getelementptr inbounds double, ptr %2445, i64 %2447
  %2449 = load double, ptr %2448, align 8, !tbaa !11
  %2450 = load ptr, ptr %138, align 8, !tbaa !9
  %2451 = load i32, ptr %46, align 4, !tbaa !5
  %2452 = zext i32 %2451 to i64
  %2453 = getelementptr inbounds double, ptr %2450, i64 %2452
  store double %2449, ptr %2453, align 8, !tbaa !11
  br label %2454

2454:                                             ; preds = %2435
  %2455 = load i32, ptr %46, align 4, !tbaa !5
  %2456 = add i32 %2455, 1
  store i32 %2456, ptr %46, align 4, !tbaa !5
  br label %2431, !llvm.loop !61

2457:                                             ; preds = %2431
  br label %2458

2458:                                             ; preds = %2457, %2421
  %2459 = load double, ptr %103, align 8, !tbaa !11
  %2460 = load double, ptr %75, align 8, !tbaa !11
  %2461 = fcmp ogt double %2459, %2460
  br i1 %2461, label %2462, label %2513

2462:                                             ; preds = %2458
  %2463 = load i32, ptr %33, align 4, !tbaa !5
  %2464 = icmp ult i32 %2463, 10
  br i1 %2464, label %2465, label %2468

2465:                                             ; preds = %2462
  %2466 = load i32, ptr %33, align 4, !tbaa !5
  %2467 = add i32 %2466, 1
  store i32 %2467, ptr %33, align 4, !tbaa !5
  br label %2468

2468:                                             ; preds = %2465, %2462
  %2469 = load i32, ptr %33, align 4, !tbaa !5
  %2470 = icmp uge i32 %2469, 2
  br i1 %2470, label %2471, label %2490

2471:                                             ; preds = %2468
  %2472 = load i32, ptr %33, align 4, !tbaa !5
  %2473 = sub i32 %2472, 1
  store i32 %2473, ptr %46, align 4, !tbaa !5
  br label %2474

2474:                                             ; preds = %2486, %2471
  %2475 = load i32, ptr %46, align 4, !tbaa !5
  %2476 = icmp ugt i32 %2475, 0
  br i1 %2476, label %2477, label %2489

2477:                                             ; preds = %2474
  %2478 = load i32, ptr %46, align 4, !tbaa !5
  %2479 = sub i32 %2478, 1
  %2480 = zext i32 %2479 to i64
  %2481 = getelementptr inbounds [10 x double], ptr %64, i64 0, i64 %2480
  %2482 = load double, ptr %2481, align 8, !tbaa !11
  %2483 = load i32, ptr %46, align 4, !tbaa !5
  %2484 = zext i32 %2483 to i64
  %2485 = getelementptr inbounds [10 x double], ptr %64, i64 0, i64 %2484
  store double %2482, ptr %2485, align 8, !tbaa !11
  br label %2486

2486:                                             ; preds = %2477
  %2487 = load i32, ptr %46, align 4, !tbaa !5
  %2488 = add i32 %2487, -1
  store i32 %2488, ptr %46, align 4, !tbaa !5
  br label %2474, !llvm.loop !62

2489:                                             ; preds = %2474
  br label %2490

2490:                                             ; preds = %2489, %2468
  %2491 = load double, ptr %103, align 8, !tbaa !11
  %2492 = getelementptr inbounds [10 x double], ptr %64, i64 0, i64 0
  store double %2491, ptr %2492, align 16, !tbaa !11
  store double 1.000000e+00, ptr %105, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2493

2493:                                             ; preds = %2504, %2490
  %2494 = load i32, ptr %46, align 4, !tbaa !5
  %2495 = load i32, ptr %33, align 4, !tbaa !5
  %2496 = icmp ult i32 %2494, %2495
  br i1 %2496, label %2497, label %2507

2497:                                             ; preds = %2493
  %2498 = load i32, ptr %46, align 4, !tbaa !5
  %2499 = zext i32 %2498 to i64
  %2500 = getelementptr inbounds [10 x double], ptr %64, i64 0, i64 %2499
  %2501 = load double, ptr %2500, align 8, !tbaa !11
  %2502 = load double, ptr %105, align 8, !tbaa !11
  %2503 = fmul double %2502, %2501
  store double %2503, ptr %105, align 8, !tbaa !11
  br label %2504

2504:                                             ; preds = %2497
  %2505 = load i32, ptr %46, align 4, !tbaa !5
  %2506 = add i32 %2505, 1
  store i32 %2506, ptr %46, align 4, !tbaa !5
  br label %2493, !llvm.loop !63

2507:                                             ; preds = %2493
  %2508 = load double, ptr %105, align 8, !tbaa !11
  %2509 = load i32, ptr %33, align 4, !tbaa !5
  %2510 = uitofp i32 %2509 to double
  %2511 = fdiv double 1.000000e+00, %2510
  %2512 = call double @pow(double noundef %2508, double noundef %2511) #8
  store double %2512, ptr %105, align 8, !tbaa !11
  br label %2513

2513:                                             ; preds = %2507, %2458
  store double 0.000000e+00, ptr %63, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2514

2514:                                             ; preds = %2531, %2513
  %2515 = load i32, ptr %46, align 4, !tbaa !5
  %2516 = load i32, ptr %10, align 4, !tbaa !5
  %2517 = icmp ult i32 %2515, %2516
  br i1 %2517, label %2518, label %2534

2518:                                             ; preds = %2514
  %2519 = load ptr, ptr %11, align 8, !tbaa !9
  %2520 = load i32, ptr %46, align 4, !tbaa !5
  %2521 = zext i32 %2520 to i64
  %2522 = getelementptr inbounds double, ptr %2519, i64 %2521
  %2523 = load double, ptr %2522, align 8, !tbaa !11
  %2524 = load ptr, ptr %11, align 8, !tbaa !9
  %2525 = load i32, ptr %46, align 4, !tbaa !5
  %2526 = zext i32 %2525 to i64
  %2527 = getelementptr inbounds double, ptr %2524, i64 %2526
  %2528 = load double, ptr %2527, align 8, !tbaa !11
  %2529 = load double, ptr %63, align 8, !tbaa !11
  %2530 = call double @llvm.fmuladd.f64(double %2523, double %2528, double %2529)
  store double %2530, ptr %63, align 8, !tbaa !11
  br label %2531

2531:                                             ; preds = %2518
  %2532 = load i32, ptr %46, align 4, !tbaa !5
  %2533 = add i32 %2532, 1
  store i32 %2533, ptr %46, align 4, !tbaa !5
  br label %2514, !llvm.loop !64

2534:                                             ; preds = %2514
  %2535 = load double, ptr %63, align 8, !tbaa !11
  %2536 = call double @sqrt(double noundef %2535) #8
  store double %2536, ptr %63, align 8, !tbaa !11
  store i32 1, ptr %24, align 4, !tbaa !5
  %2537 = load i32, ptr %19, align 4, !tbaa !5
  %2538 = icmp ne i32 %2537, 0
  br i1 %2538, label %2539, label %2544

2539:                                             ; preds = %2534
  %2540 = load i32, ptr %22, align 4, !tbaa !5
  %2541 = icmp ne i32 %2540, 0
  br i1 %2541, label %2543, label %2542

2542:                                             ; preds = %2539
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %2543

2543:                                             ; preds = %2542, %2539
  br label %2544

2544:                                             ; preds = %2543, %2534
  %2545 = load i32, ptr %35, align 4, !tbaa !5
  %2546 = icmp ule i32 %2545, 5
  br i1 %2546, label %2553, label %2547

2547:                                             ; preds = %2544
  %2548 = load i32, ptr %35, align 4, !tbaa !5
  %2549 = icmp ule i32 %2548, 12
  br i1 %2549, label %2550, label %2554

2550:                                             ; preds = %2547
  %2551 = load double, ptr %103, align 8, !tbaa !11
  %2552 = fcmp ogt double %2551, 1.000000e+00
  br i1 %2552, label %2553, label %2554

2553:                                             ; preds = %2550, %2544
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %2554

2554:                                             ; preds = %2553, %2550, %2547
  %2555 = load i32, ptr %52, align 4, !tbaa !5
  %2556 = load i32, ptr %39, align 4, !tbaa !5
  %2557 = icmp uge i32 %2555, %2556
  br i1 %2557, label %2561, label %2558

2558:                                             ; preds = %2554
  %2559 = load i32, ptr %30, align 4, !tbaa !5
  %2560 = icmp ne i32 %2559, 0
  br i1 %2560, label %2561, label %2562

2561:                                             ; preds = %2558, %2554
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %2562

2562:                                             ; preds = %2561, %2558
  %2563 = load i32, ptr %24, align 4, !tbaa !5
  %2564 = icmp ne i32 %2563, 0
  br i1 %2564, label %2565, label %2986

2565:                                             ; preds = %2562
  store i32 0, ptr %49, align 4, !tbaa !5
  store i32 1, ptr %26, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2566

2566:                                             ; preds = %2613, %2565
  %2567 = load i32, ptr %46, align 4, !tbaa !5
  %2568 = load i32, ptr %10, align 4, !tbaa !5
  %2569 = icmp ult i32 %2567, %2568
  br i1 %2569, label %2570, label %2616

2570:                                             ; preds = %2566
  %2571 = load ptr, ptr %11, align 8, !tbaa !9
  %2572 = load i32, ptr %46, align 4, !tbaa !5
  %2573 = zext i32 %2572 to i64
  %2574 = getelementptr inbounds double, ptr %2571, i64 %2573
  %2575 = load double, ptr %2574, align 8, !tbaa !11
  %2576 = call double @llvm.fabs.f64(double %2575)
  %2577 = load double, ptr %78, align 8, !tbaa !11
  %2578 = fcmp oge double %2576, %2577
  br i1 %2578, label %2579, label %2612

2579:                                             ; preds = %2570
  %2580 = load i32, ptr %46, align 4, !tbaa !5
  %2581 = load ptr, ptr %141, align 8, !tbaa !9
  %2582 = load i32, ptr %49, align 4, !tbaa !5
  %2583 = zext i32 %2582 to i64
  %2584 = getelementptr inbounds i32, ptr %2581, i64 %2583
  store i32 %2580, ptr %2584, align 4, !tbaa !5
  %2585 = load i32, ptr %49, align 4, !tbaa !5
  %2586 = add i32 %2585, 1
  store i32 %2586, ptr %49, align 4, !tbaa !5
  %2587 = load ptr, ptr %136, align 8, !tbaa !9
  %2588 = load i32, ptr %46, align 4, !tbaa !5
  %2589 = zext i32 %2588 to i64
  %2590 = getelementptr inbounds double, ptr %2587, i64 %2589
  %2591 = load double, ptr %2590, align 8, !tbaa !11
  %2592 = load ptr, ptr %11, align 8, !tbaa !9
  %2593 = load i32, ptr %46, align 4, !tbaa !5
  %2594 = zext i32 %2593 to i64
  %2595 = getelementptr inbounds double, ptr %2592, i64 %2594
  %2596 = load double, ptr %2595, align 8, !tbaa !11
  %2597 = fsub double %2591, %2596
  %2598 = call double @llvm.fabs.f64(double %2597)
  %2599 = load ptr, ptr %14, align 8, !tbaa !9
  %2600 = getelementptr inbounds double, ptr %2599, i64 1
  %2601 = load double, ptr %2600, align 8, !tbaa !11
  %2602 = load ptr, ptr %11, align 8, !tbaa !9
  %2603 = load i32, ptr %46, align 4, !tbaa !5
  %2604 = zext i32 %2603 to i64
  %2605 = getelementptr inbounds double, ptr %2602, i64 %2604
  %2606 = load double, ptr %2605, align 8, !tbaa !11
  %2607 = call double @llvm.fabs.f64(double %2606)
  %2608 = fmul double %2601, %2607
  %2609 = fcmp ogt double %2598, %2608
  br i1 %2609, label %2610, label %2611

2610:                                             ; preds = %2579
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %2611

2611:                                             ; preds = %2610, %2579
  br label %2612

2612:                                             ; preds = %2611, %2570
  br label %2613

2613:                                             ; preds = %2612
  %2614 = load i32, ptr %46, align 4, !tbaa !5
  %2615 = add i32 %2614, 1
  store i32 %2615, ptr %46, align 4, !tbaa !5
  br label %2566, !llvm.loop !65

2616:                                             ; preds = %2566
  %2617 = load i32, ptr %49, align 4, !tbaa !5
  %2618 = icmp eq i32 %2617, 0
  br i1 %2618, label %2622, label %2619

2619:                                             ; preds = %2616
  %2620 = load i32, ptr %26, align 4, !tbaa !5
  %2621 = icmp ne i32 %2620, 0
  br i1 %2621, label %2622, label %2985

2622:                                             ; preds = %2619, %2616
  store i32 1, ptr %26, align 4, !tbaa !5
  %2623 = load i32, ptr %40, align 4, !tbaa !5
  %2624 = add i32 %2623, 1
  store i32 %2624, ptr %40, align 4, !tbaa !5
  store double 0.000000e+00, ptr %109, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2625

2625:                                             ; preds = %2654, %2622
  %2626 = load i32, ptr %46, align 4, !tbaa !5
  %2627 = load i32, ptr %10, align 4, !tbaa !5
  %2628 = icmp ult i32 %2626, %2627
  br i1 %2628, label %2629, label %2657

2629:                                             ; preds = %2625
  %2630 = load ptr, ptr %11, align 8, !tbaa !9
  %2631 = load i32, ptr %46, align 4, !tbaa !5
  %2632 = zext i32 %2631 to i64
  %2633 = getelementptr inbounds double, ptr %2630, i64 %2632
  %2634 = load double, ptr %2633, align 8, !tbaa !11
  %2635 = load ptr, ptr %137, align 8, !tbaa !9
  %2636 = load i32, ptr %46, align 4, !tbaa !5
  %2637 = zext i32 %2636 to i64
  %2638 = getelementptr inbounds double, ptr %2635, i64 %2637
  %2639 = load double, ptr %2638, align 8, !tbaa !11
  %2640 = fsub double %2634, %2639
  %2641 = load ptr, ptr %11, align 8, !tbaa !9
  %2642 = load i32, ptr %46, align 4, !tbaa !5
  %2643 = zext i32 %2642 to i64
  %2644 = getelementptr inbounds double, ptr %2641, i64 %2643
  %2645 = load double, ptr %2644, align 8, !tbaa !11
  %2646 = load ptr, ptr %137, align 8, !tbaa !9
  %2647 = load i32, ptr %46, align 4, !tbaa !5
  %2648 = zext i32 %2647 to i64
  %2649 = getelementptr inbounds double, ptr %2646, i64 %2648
  %2650 = load double, ptr %2649, align 8, !tbaa !11
  %2651 = fsub double %2645, %2650
  %2652 = load double, ptr %109, align 8, !tbaa !11
  %2653 = call double @llvm.fmuladd.f64(double %2640, double %2651, double %2652)
  store double %2653, ptr %109, align 8, !tbaa !11
  br label %2654

2654:                                             ; preds = %2629
  %2655 = load i32, ptr %46, align 4, !tbaa !5
  %2656 = add i32 %2655, 1
  store i32 %2656, ptr %46, align 4, !tbaa !5
  br label %2625, !llvm.loop !66

2657:                                             ; preds = %2625
  %2658 = load double, ptr %109, align 8, !tbaa !11
  %2659 = call double @sqrt(double noundef %2658) #8
  store double %2659, ptr %109, align 8, !tbaa !11
  %2660 = load double, ptr %83, align 8, !tbaa !11
  %2661 = load double, ptr %91, align 8, !tbaa !11
  %2662 = fsub double %2660, %2661
  %2663 = call double @llvm.fabs.f64(double %2662)
  %2664 = load double, ptr %80, align 8, !tbaa !11
  %2665 = load double, ptr %83, align 8, !tbaa !11
  %2666 = call double @llvm.fabs.f64(double %2665)
  %2667 = fmul double %2664, %2666
  %2668 = fcmp ogt double %2663, %2667
  br i1 %2668, label %2669, label %2804

2669:                                             ; preds = %2657
  %2670 = load double, ptr %83, align 8, !tbaa !11
  %2671 = load double, ptr %90, align 8, !tbaa !11
  %2672 = fsub double %2670, %2671
  %2673 = call double @llvm.fabs.f64(double %2672)
  %2674 = load ptr, ptr %14, align 8, !tbaa !9
  %2675 = getelementptr inbounds double, ptr %2674, i64 2
  %2676 = load double, ptr %2675, align 8, !tbaa !11
  %2677 = load double, ptr %83, align 8, !tbaa !11
  %2678 = call double @llvm.fabs.f64(double %2677)
  %2679 = fmul double %2676, %2678
  %2680 = fcmp oge double %2673, %2679
  br i1 %2680, label %2681, label %2804

2681:                                             ; preds = %2669
  %2682 = load i32, ptr %43, align 4, !tbaa !5
  %2683 = icmp ule i32 %2682, 3
  br i1 %2683, label %2684, label %2804

2684:                                             ; preds = %2681
  %2685 = load i32, ptr %19, align 4, !tbaa !5
  %2686 = icmp ne i32 %2685, 0
  br i1 %2686, label %2804, label %2687

2687:                                             ; preds = %2684
  store i32 0, ptr %26, align 4, !tbaa !5
  %2688 = load i32, ptr %49, align 4, !tbaa !5
  %2689 = icmp ugt i32 %2688, 0
  br i1 %2689, label %2690, label %2728

2690:                                             ; preds = %2687
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2691

2691:                                             ; preds = %2724, %2690
  %2692 = load i32, ptr %46, align 4, !tbaa !5
  %2693 = load i32, ptr %49, align 4, !tbaa !5
  %2694 = icmp ult i32 %2692, %2693
  br i1 %2694, label %2695, label %2727

2695:                                             ; preds = %2691
  %2696 = load ptr, ptr %141, align 8, !tbaa !9
  %2697 = load i32, ptr %46, align 4, !tbaa !5
  %2698 = zext i32 %2697 to i64
  %2699 = getelementptr inbounds i32, ptr %2696, i64 %2698
  %2700 = load i32, ptr %2699, align 4, !tbaa !5
  store i32 %2700, ptr %47, align 4, !tbaa !5
  %2701 = load ptr, ptr %137, align 8, !tbaa !9
  %2702 = load i32, ptr %47, align 4, !tbaa !5
  %2703 = zext i32 %2702 to i64
  %2704 = getelementptr inbounds double, ptr %2701, i64 %2703
  %2705 = load double, ptr %2704, align 8, !tbaa !11
  %2706 = load ptr, ptr %11, align 8, !tbaa !9
  %2707 = load i32, ptr %47, align 4, !tbaa !5
  %2708 = zext i32 %2707 to i64
  %2709 = getelementptr inbounds double, ptr %2706, i64 %2708
  %2710 = load double, ptr %2709, align 8, !tbaa !11
  %2711 = fsub double %2705, %2710
  %2712 = call double @llvm.fabs.f64(double %2711)
  %2713 = load double, ptr %81, align 8, !tbaa !11
  %2714 = load ptr, ptr %11, align 8, !tbaa !9
  %2715 = load i32, ptr %47, align 4, !tbaa !5
  %2716 = zext i32 %2715 to i64
  %2717 = getelementptr inbounds double, ptr %2714, i64 %2716
  %2718 = load double, ptr %2717, align 8, !tbaa !11
  %2719 = call double @llvm.fabs.f64(double %2718)
  %2720 = fmul double %2713, %2719
  %2721 = fcmp ogt double %2712, %2720
  br i1 %2721, label %2722, label %2723

2722:                                             ; preds = %2695
  store i32 1, ptr %26, align 4, !tbaa !5
  br label %2727

2723:                                             ; preds = %2695
  br label %2724

2724:                                             ; preds = %2723
  %2725 = load i32, ptr %46, align 4, !tbaa !5
  %2726 = add i32 %2725, 1
  store i32 %2726, ptr %46, align 4, !tbaa !5
  br label %2691, !llvm.loop !67

2727:                                             ; preds = %2722, %2691
  br label %2728

2728:                                             ; preds = %2727, %2687
  %2729 = load i32, ptr %26, align 4, !tbaa !5
  %2730 = icmp ne i32 %2729, 0
  br i1 %2730, label %2731, label %2800

2731:                                             ; preds = %2728
  %2732 = load i32, ptr %27, align 4, !tbaa !5
  %2733 = icmp ne i32 %2732, 0
  br i1 %2733, label %2734, label %2736

2734:                                             ; preds = %2731
  %2735 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %2736

2736:                                             ; preds = %2734, %2731
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2737

2737:                                             ; preds = %2772, %2736
  %2738 = load i32, ptr %46, align 4, !tbaa !5
  %2739 = load i32, ptr %10, align 4, !tbaa !5
  %2740 = icmp ult i32 %2738, %2739
  br i1 %2740, label %2741, label %2775

2741:                                             ; preds = %2737
  %2742 = load ptr, ptr %137, align 8, !tbaa !9
  %2743 = load i32, ptr %46, align 4, !tbaa !5
  %2744 = zext i32 %2743 to i64
  %2745 = getelementptr inbounds double, ptr %2742, i64 %2744
  %2746 = load double, ptr %2745, align 8, !tbaa !11
  %2747 = load ptr, ptr %11, align 8, !tbaa !9
  %2748 = load i32, ptr %46, align 4, !tbaa !5
  %2749 = zext i32 %2748 to i64
  %2750 = getelementptr inbounds double, ptr %2747, i64 %2749
  store double %2746, ptr %2750, align 8, !tbaa !11
  %2751 = load ptr, ptr %138, align 8, !tbaa !9
  %2752 = load i32, ptr %46, align 4, !tbaa !5
  %2753 = zext i32 %2752 to i64
  %2754 = getelementptr inbounds double, ptr %2751, i64 %2753
  %2755 = load double, ptr %2754, align 8, !tbaa !11
  %2756 = load ptr, ptr %129, align 8, !tbaa !9
  %2757 = load i32, ptr %46, align 4, !tbaa !5
  %2758 = zext i32 %2757 to i64
  %2759 = getelementptr inbounds double, ptr %2756, i64 %2758
  store double %2755, ptr %2759, align 8, !tbaa !11
  %2760 = load ptr, ptr %129, align 8, !tbaa !9
  %2761 = load i32, ptr %46, align 4, !tbaa !5
  %2762 = zext i32 %2761 to i64
  %2763 = getelementptr inbounds double, ptr %2760, i64 %2762
  %2764 = load double, ptr %2763, align 8, !tbaa !11
  %2765 = load ptr, ptr %129, align 8, !tbaa !9
  %2766 = load i32, ptr %46, align 4, !tbaa !5
  %2767 = zext i32 %2766 to i64
  %2768 = getelementptr inbounds double, ptr %2765, i64 %2767
  %2769 = load double, ptr %2768, align 8, !tbaa !11
  %2770 = load double, ptr %103, align 8, !tbaa !11
  %2771 = call double @llvm.fmuladd.f64(double %2764, double %2769, double %2770)
  store double %2771, ptr %103, align 8, !tbaa !11
  br label %2772

2772:                                             ; preds = %2741
  %2773 = load i32, ptr %46, align 4, !tbaa !5
  %2774 = add i32 %2773, 1
  store i32 %2774, ptr %46, align 4, !tbaa !5
  br label %2737, !llvm.loop !68

2775:                                             ; preds = %2737
  %2776 = load double, ptr %103, align 8, !tbaa !11
  %2777 = call double @sqrt(double noundef %2776) #8
  store double %2777, ptr %103, align 8, !tbaa !11
  %2778 = load double, ptr %91, align 8, !tbaa !11
  store double %2778, ptr %83, align 8, !tbaa !11
  %2779 = load i32, ptr %43, align 4, !tbaa !5
  %2780 = add i32 %2779, 1
  store i32 %2780, ptr %43, align 4, !tbaa !5
  %2781 = load double, ptr %99, align 8, !tbaa !11
  %2782 = load double, ptr %102, align 8, !tbaa !11
  %2783 = load double, ptr %81, align 8, !tbaa !11
  %2784 = load double, ptr %63, align 8, !tbaa !11
  %2785 = fmul double %2783, %2784
  %2786 = fcmp ogt double %2782, %2785
  br i1 %2786, label %2787, label %2789

2787:                                             ; preds = %2775
  %2788 = load double, ptr %102, align 8, !tbaa !11
  br label %2793

2789:                                             ; preds = %2775
  %2790 = load double, ptr %81, align 8, !tbaa !11
  %2791 = load double, ptr %63, align 8, !tbaa !11
  %2792 = fmul double %2790, %2791
  br label %2793

2793:                                             ; preds = %2789, %2787
  %2794 = phi double [ %2788, %2787 ], [ %2792, %2789 ]
  %2795 = fmul double %2781, %2794
  %2796 = load i32, ptr %43, align 4, !tbaa !5
  %2797 = uitofp i32 %2796 to double
  %2798 = fdiv double %2795, %2797
  store double %2798, ptr %100, align 8, !tbaa !11
  store i32 2, ptr %60, align 4, !tbaa !5
  %2799 = load ptr, ptr @endwarn2, align 8, !tbaa !9
  store ptr %2799, ptr %142, align 8, !tbaa !9
  br label %3545

2800:                                             ; preds = %2728
  %2801 = load double, ptr %100, align 8, !tbaa !11
  %2802 = fmul double %2801, 1.000000e+01
  store double %2802, ptr %100, align 8, !tbaa !11
  br label %2803

2803:                                             ; preds = %2800
  br label %2984

2804:                                             ; preds = %2684, %2681, %2669, %2657
  %2805 = load double, ptr %83, align 8, !tbaa !11
  %2806 = load double, ptr %91, align 8, !tbaa !11
  %2807 = fsub double %2805, %2806
  %2808 = call double @llvm.fabs.f64(double %2807)
  %2809 = load ptr, ptr %14, align 8, !tbaa !9
  %2810 = getelementptr inbounds double, ptr %2809, i64 2
  %2811 = load double, ptr %2810, align 8, !tbaa !11
  %2812 = load double, ptr %83, align 8, !tbaa !11
  %2813 = call double @llvm.fabs.f64(double %2812)
  %2814 = fmul double %2811, %2813
  %2815 = fcmp ogt double %2808, %2814
  br i1 %2815, label %2816, label %2828

2816:                                             ; preds = %2804
  %2817 = load double, ptr %109, align 8, !tbaa !11
  %2818 = load ptr, ptr %14, align 8, !tbaa !9
  %2819 = getelementptr inbounds double, ptr %2818, i64 1
  %2820 = load double, ptr %2819, align 8, !tbaa !11
  %2821 = load double, ptr %63, align 8, !tbaa !11
  %2822 = fmul double %2820, %2821
  %2823 = fcmp olt double %2817, %2822
  br i1 %2823, label %2824, label %2828

2824:                                             ; preds = %2816
  %2825 = load i32, ptr %19, align 4, !tbaa !5
  %2826 = icmp ne i32 %2825, 0
  br i1 %2826, label %2827, label %2828

2827:                                             ; preds = %2824
  br label %2983

2828:                                             ; preds = %2824, %2816, %2804
  %2829 = load double, ptr %83, align 8, !tbaa !11
  %2830 = load double, ptr %90, align 8, !tbaa !11
  %2831 = fsub double %2829, %2830
  %2832 = call double @llvm.fabs.f64(double %2831)
  %2833 = load ptr, ptr %14, align 8, !tbaa !9
  %2834 = getelementptr inbounds double, ptr %2833, i64 2
  %2835 = load double, ptr %2834, align 8, !tbaa !11
  %2836 = load double, ptr %83, align 8, !tbaa !11
  %2837 = call double @llvm.fabs.f64(double %2836)
  %2838 = fmul double %2835, %2837
  %2839 = fcmp ole double %2832, %2838
  br i1 %2839, label %2858, label %2840

2840:                                             ; preds = %2828
  %2841 = load double, ptr %83, align 8, !tbaa !11
  %2842 = call double @llvm.fabs.f64(double %2841)
  %2843 = load double, ptr %79, align 8, !tbaa !11
  %2844 = fcmp ole double %2842, %2843
  br i1 %2844, label %2858, label %2845

2845:                                             ; preds = %2840
  %2846 = load double, ptr %83, align 8, !tbaa !11
  %2847 = load double, ptr %90, align 8, !tbaa !11
  %2848 = fsub double %2846, %2847
  %2849 = call double @llvm.fabs.f64(double %2848)
  %2850 = load ptr, ptr %14, align 8, !tbaa !9
  %2851 = getelementptr inbounds double, ptr %2850, i64 2
  %2852 = load double, ptr %2851, align 8, !tbaa !11
  %2853 = fcmp ole double %2849, %2852
  br i1 %2853, label %2854, label %2931

2854:                                             ; preds = %2845
  %2855 = load i32, ptr %40, align 4, !tbaa !5
  %2856 = load i32, ptr %41, align 4, !tbaa !5
  %2857 = icmp uge i32 %2855, %2856
  br i1 %2857, label %2858, label %2931

2858:                                             ; preds = %2854, %2840, %2828
  %2859 = load i32, ptr %25, align 4, !tbaa !5
  %2860 = icmp ne i32 %2859, 0
  br i1 %2860, label %2861, label %2929

2861:                                             ; preds = %2858
  %2862 = load double, ptr %102, align 8, !tbaa !11
  %2863 = load double, ptr %111, align 8, !tbaa !11
  %2864 = fcmp ole double %2862, %2863
  br i1 %2864, label %2865, label %2928

2865:                                             ; preds = %2861
  %2866 = load i32, ptr %60, align 4, !tbaa !5
  %2867 = icmp eq i32 %2866, 1
  br i1 %2867, label %2868, label %2876

2868:                                             ; preds = %2865
  %2869 = load double, ptr %103, align 8, !tbaa !11
  %2870 = load ptr, ptr %14, align 8, !tbaa !9
  %2871 = getelementptr inbounds double, ptr %2870, i64 2
  %2872 = load double, ptr %2871, align 8, !tbaa !11
  %2873 = call double @sqrt(double noundef %2872) #8
  %2874 = fcmp olt double %2869, %2873
  br i1 %2874, label %2875, label %2876

2875:                                             ; preds = %2868
  store i32 0, ptr %60, align 4, !tbaa !5
  br label %2876

2876:                                             ; preds = %2875, %2868, %2865
  %2877 = load i32, ptr %20, align 4, !tbaa !5
  %2878 = icmp ne i32 %2877, 0
  br i1 %2878, label %2899, label %2879

2879:                                             ; preds = %2876
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2880

2880:                                             ; preds = %2895, %2879
  %2881 = load i32, ptr %46, align 4, !tbaa !5
  %2882 = load i32, ptr %10, align 4, !tbaa !5
  %2883 = icmp ult i32 %2881, %2882
  br i1 %2883, label %2884, label %2898

2884:                                             ; preds = %2880
  %2885 = load ptr, ptr %129, align 8, !tbaa !9
  %2886 = load i32, ptr %46, align 4, !tbaa !5
  %2887 = zext i32 %2886 to i64
  %2888 = getelementptr inbounds double, ptr %2885, i64 %2887
  %2889 = load double, ptr %2888, align 8, !tbaa !11
  %2890 = call double @llvm.fabs.f64(double %2889)
  %2891 = fcmp ole double %2890, 0x3970000000000000
  br i1 %2891, label %2892, label %2894

2892:                                             ; preds = %2884
  store i32 3, ptr %60, align 4, !tbaa !5
  %2893 = load ptr, ptr @endwarn3, align 8, !tbaa !9
  store ptr %2893, ptr %142, align 8, !tbaa !9
  br label %2898

2894:                                             ; preds = %2884
  br label %2895

2895:                                             ; preds = %2894
  %2896 = load i32, ptr %46, align 4, !tbaa !5
  %2897 = add i32 %2896, 1
  store i32 %2897, ptr %46, align 4, !tbaa !5
  br label %2880, !llvm.loop !69

2898:                                             ; preds = %2892, %2880
  br label %2899

2899:                                             ; preds = %2898, %2876
  %2900 = load i32, ptr %60, align 4, !tbaa !5
  %2901 = icmp ne i32 %2900, 0
  br i1 %2901, label %2902, label %2922

2902:                                             ; preds = %2899
  %2903 = load i32, ptr %60, align 4, !tbaa !5
  %2904 = sub nsw i32 0, %2903
  %2905 = sitofp i32 %2904 to double
  %2906 = fsub double %2905, 1.000000e+01
  %2907 = load ptr, ptr %14, align 8, !tbaa !9
  %2908 = getelementptr inbounds double, ptr %2907, i64 8
  store double %2906, ptr %2908, align 8, !tbaa !11
  %2909 = load i32, ptr %27, align 4, !tbaa !5
  %2910 = icmp ne i32 %2909, 0
  br i1 %2910, label %2911, label %2921

2911:                                             ; preds = %2902
  %2912 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %2913 = load ptr, ptr %142, align 8, !tbaa !9
  %2914 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %2913)
  %2915 = load i32, ptr %20, align 4, !tbaa !5
  %2916 = icmp ne i32 %2915, 0
  br i1 %2916, label %2917, label %2920

2917:                                             ; preds = %2911
  %2918 = load ptr, ptr @appwarn, align 8, !tbaa !9
  %2919 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %2918)
  br label %2920

2920:                                             ; preds = %2917, %2911
  br label %2921

2921:                                             ; preds = %2920, %2902
  br label %2927

2922:                                             ; preds = %2899
  %2923 = load i32, ptr %34, align 4, !tbaa !5
  %2924 = uitofp i32 %2923 to double
  %2925 = load ptr, ptr %14, align 8, !tbaa !9
  %2926 = getelementptr inbounds double, ptr %2925, i64 8
  store double %2924, ptr %2926, align 8, !tbaa !11
  br label %2927

2927:                                             ; preds = %2922, %2921
  br label %3546

2928:                                             ; preds = %2861
  br label %2930

2929:                                             ; preds = %2858
  store i32 1, ptr %25, align 4, !tbaa !5
  br label %2930

2930:                                             ; preds = %2929, %2928
  br label %2982

2931:                                             ; preds = %2854, %2845
  %2932 = load double, ptr %102, align 8, !tbaa !11
  %2933 = load double, ptr %63, align 8, !tbaa !11
  %2934 = fcmp ogt double %2933, 1.000000e+00
  br i1 %2934, label %2935, label %2937

2935:                                             ; preds = %2931
  %2936 = load double, ptr %63, align 8, !tbaa !11
  br label %2938

2937:                                             ; preds = %2931
  br label %2938

2938:                                             ; preds = %2937, %2935
  %2939 = phi double [ %2936, %2935 ], [ 1.000000e+00, %2937 ]
  %2940 = fmul double 0x3D719799812DEA11, %2939
  %2941 = fcmp olt double %2932, %2940
  br i1 %2941, label %2942, label %2981

2942:                                             ; preds = %2938
  %2943 = load i32, ptr %40, align 4, !tbaa !5
  %2944 = load i32, ptr %41, align 4, !tbaa !5
  %2945 = icmp uge i32 %2943, %2944
  br i1 %2945, label %2946, label %2981

2946:                                             ; preds = %2942
  %2947 = load ptr, ptr %14, align 8, !tbaa !9
  %2948 = getelementptr inbounds double, ptr %2947, i64 8
  store double -1.400000e+01, ptr %2948, align 8, !tbaa !11
  %2949 = load i32, ptr %27, align 4, !tbaa !5
  %2950 = icmp ne i32 %2949, 0
  br i1 %2950, label %2951, label %2961

2951:                                             ; preds = %2946
  %2952 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %2953 = load ptr, ptr @endwarn4, align 8, !tbaa !9
  %2954 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %2953)
  %2955 = load i32, ptr %20, align 4, !tbaa !5
  %2956 = icmp ne i32 %2955, 0
  br i1 %2956, label %2957, label %2960

2957:                                             ; preds = %2951
  %2958 = load ptr, ptr @appwarn, align 8, !tbaa !9
  %2959 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, ptr noundef %2958)
  br label %2960

2960:                                             ; preds = %2957, %2951
  br label %2961

2961:                                             ; preds = %2960, %2946
  %2962 = load double, ptr %91, align 8, !tbaa !11
  store double %2962, ptr %83, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %2963

2963:                                             ; preds = %2977, %2961
  %2964 = load i32, ptr %46, align 4, !tbaa !5
  %2965 = load i32, ptr %10, align 4, !tbaa !5
  %2966 = icmp ult i32 %2964, %2965
  br i1 %2966, label %2967, label %2980

2967:                                             ; preds = %2963
  %2968 = load ptr, ptr %137, align 8, !tbaa !9
  %2969 = load i32, ptr %46, align 4, !tbaa !5
  %2970 = zext i32 %2969 to i64
  %2971 = getelementptr inbounds double, ptr %2968, i64 %2970
  %2972 = load double, ptr %2971, align 8, !tbaa !11
  %2973 = load ptr, ptr %11, align 8, !tbaa !9
  %2974 = load i32, ptr %46, align 4, !tbaa !5
  %2975 = zext i32 %2974 to i64
  %2976 = getelementptr inbounds double, ptr %2973, i64 %2975
  store double %2972, ptr %2976, align 8, !tbaa !11
  br label %2977

2977:                                             ; preds = %2967
  %2978 = load i32, ptr %46, align 4, !tbaa !5
  %2979 = add i32 %2978, 1
  store i32 %2979, ptr %46, align 4, !tbaa !5
  br label %2963, !llvm.loop !70

2980:                                             ; preds = %2963
  br label %3546

2981:                                             ; preds = %2942, %2938
  br label %2982

2982:                                             ; preds = %2981, %2930
  br label %2983

2983:                                             ; preds = %2982, %2827
  br label %2984

2984:                                             ; preds = %2983, %2803
  br label %2985

2985:                                             ; preds = %2984, %2619
  br label %2986

2986:                                             ; preds = %2985, %2562
  %2987 = load i32, ptr %34, align 4, !tbaa !5
  %2988 = load i32, ptr %54, align 4, !tbaa !5
  %2989 = icmp eq i32 %2987, %2988
  br i1 %2989, label %2990, label %2998

2990:                                             ; preds = %2986
  %2991 = load ptr, ptr %14, align 8, !tbaa !9
  %2992 = getelementptr inbounds double, ptr %2991, i64 8
  store double -9.000000e+00, ptr %2992, align 8, !tbaa !11
  %2993 = load i32, ptr %27, align 4, !tbaa !5
  %2994 = icmp ne i32 %2993, 0
  br i1 %2994, label %2995, label %2997

2995:                                             ; preds = %2990
  %2996 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %2997

2997:                                             ; preds = %2995, %2990
  br label %3546

2998:                                             ; preds = %2986
  %2999 = load i32, ptr %19, align 4, !tbaa !5
  %3000 = icmp ne i32 %2999, 0
  br i1 %3000, label %3001, label %3015

3001:                                             ; preds = %2998
  %3002 = load double, ptr %103, align 8, !tbaa !11
  %3003 = load double, ptr %75, align 8, !tbaa !11
  %3004 = fcmp ole double %3002, %3003
  br i1 %3004, label %3005, label %3014

3005:                                             ; preds = %3001
  %3006 = load i32, ptr %27, align 4, !tbaa !5
  %3007 = icmp ne i32 %3006, 0
  br i1 %3007, label %3008, label %3011

3008:                                             ; preds = %3005
  %3009 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %3010 = call i32 (ptr, ...) @printf(ptr noundef @.str.14)
  br label %3011

3011:                                             ; preds = %3008, %3005
  %3012 = load ptr, ptr %14, align 8, !tbaa !9
  %3013 = getelementptr inbounds double, ptr %3012, i64 8
  store double -8.000000e+00, ptr %3013, align 8, !tbaa !11
  br label %3546

3014:                                             ; preds = %3001
  br label %3214

3015:                                             ; preds = %2998
  %3016 = load double, ptr %103, align 8, !tbaa !11
  %3017 = load double, ptr %75, align 8, !tbaa !11
  %3018 = fcmp ole double %3016, %3017
  br i1 %3018, label %3019, label %3213

3019:                                             ; preds = %3015
  %3020 = load i32, ptr %42, align 4, !tbaa !5
  %3021 = add i32 %3020, 1
  store i32 %3021, ptr %42, align 4, !tbaa !5
  %3022 = load i32, ptr %27, align 4, !tbaa !5
  %3023 = icmp ne i32 %3022, 0
  br i1 %3023, label %3024, label %3026

3024:                                             ; preds = %3019
  %3025 = call i32 (ptr, ...) @printf(ptr noundef @.str.14)
  br label %3026

3026:                                             ; preds = %3024, %3019
  %3027 = load i32, ptr %42, align 4, !tbaa !5
  %3028 = icmp uge i32 %3027, 3
  br i1 %3028, label %3029, label %3032

3029:                                             ; preds = %3026
  %3030 = load ptr, ptr %14, align 8, !tbaa !9
  %3031 = getelementptr inbounds double, ptr %3030, i64 8
  store double -8.000000e+00, ptr %3031, align 8, !tbaa !11
  br label %3546

3032:                                             ; preds = %3026
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3033

3033:                                             ; preds = %3047, %3032
  %3034 = load i32, ptr %46, align 4, !tbaa !5
  %3035 = load i32, ptr %10, align 4, !tbaa !5
  %3036 = icmp ult i32 %3034, %3035
  br i1 %3036, label %3037, label %3050

3037:                                             ; preds = %3033
  %3038 = load double, ptr %100, align 8, !tbaa !11
  %3039 = fneg double %3038
  %3040 = fdiv double %3039, 2.000000e+00
  %3041 = load ptr, ptr %130, align 8, !tbaa !9
  %3042 = load i32, ptr %46, align 4, !tbaa !5
  %3043 = zext i32 %3042 to i64
  %3044 = getelementptr inbounds double, ptr %3041, i64 %3043
  %3045 = load double, ptr %3044, align 8, !tbaa !11
  %3046 = fmul double %3045, %3040
  store double %3046, ptr %3044, align 8, !tbaa !11
  br label %3047

3047:                                             ; preds = %3037
  %3048 = load i32, ptr %46, align 4, !tbaa !5
  %3049 = add i32 %3048, 1
  store i32 %3049, ptr %46, align 4, !tbaa !5
  br label %3033, !llvm.loop !71

3050:                                             ; preds = %3033
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %3051

3051:                                             ; preds = %3193, %3050
  %3052 = load i32, ptr %46, align 4, !tbaa !5
  %3053 = icmp ule i32 %3052, 10
  br i1 %3053, label %3054, label %3196

3054:                                             ; preds = %3051
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %3055

3055:                                             ; preds = %3071, %3054
  %3056 = load i32, ptr %47, align 4, !tbaa !5
  %3057 = load i32, ptr %10, align 4, !tbaa !5
  %3058 = icmp ult i32 %3056, %3057
  br i1 %3058, label %3059, label %3074

3059:                                             ; preds = %3055
  %3060 = load ptr, ptr %130, align 8, !tbaa !9
  %3061 = load i32, ptr %47, align 4, !tbaa !5
  %3062 = zext i32 %3061 to i64
  %3063 = getelementptr inbounds double, ptr %3060, i64 %3062
  %3064 = load double, ptr %3063, align 8, !tbaa !11
  %3065 = load ptr, ptr %11, align 8, !tbaa !9
  %3066 = load i32, ptr %47, align 4, !tbaa !5
  %3067 = zext i32 %3066 to i64
  %3068 = getelementptr inbounds double, ptr %3065, i64 %3067
  %3069 = load double, ptr %3068, align 8, !tbaa !11
  %3070 = fadd double %3069, %3064
  store double %3070, ptr %3068, align 8, !tbaa !11
  br label %3071

3071:                                             ; preds = %3059
  %3072 = load i32, ptr %47, align 4, !tbaa !5
  %3073 = add i32 %3072, 1
  store i32 %3073, ptr %47, align 4, !tbaa !5
  br label %3055, !llvm.loop !72

3074:                                             ; preds = %3055
  %3075 = load ptr, ptr %12, align 8, !tbaa !9
  %3076 = load ptr, ptr %11, align 8, !tbaa !9
  %3077 = load ptr, ptr %17, align 8, !tbaa !9
  %3078 = call double %3075(ptr noundef %3076, ptr noundef %3077)
  store double %3078, ptr %83, align 8, !tbaa !11
  %3079 = load ptr, ptr %14, align 8, !tbaa !9
  %3080 = getelementptr inbounds double, ptr %3079, i64 9
  %3081 = load double, ptr %3080, align 8, !tbaa !11
  %3082 = fadd double %3081, 1.000000e+00
  store double %3082, ptr %3080, align 8, !tbaa !11
  %3083 = load double, ptr %83, align 8, !tbaa !11
  %3084 = call double @llvm.fabs.f64(double %3083)
  %3085 = fcmp oge double %3084, 0x7FDFFFFFFFFFFFFF
  br i1 %3085, label %3086, label %3094

3086:                                             ; preds = %3074
  %3087 = load i32, ptr %27, align 4, !tbaa !5
  %3088 = icmp ne i32 %3087, 0
  br i1 %3088, label %3089, label %3091

3089:                                             ; preds = %3086
  %3090 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %3091

3091:                                             ; preds = %3089, %3086
  %3092 = load ptr, ptr %14, align 8, !tbaa !9
  %3093 = getelementptr inbounds double, ptr %3092, i64 8
  store double -3.000000e+00, ptr %3093, align 8, !tbaa !11
  br label %3546

3094:                                             ; preds = %3074
  %3095 = load i32, ptr %20, align 4, !tbaa !5
  %3096 = icmp ne i32 %3095, 0
  br i1 %3096, label %3097, label %3144

3097:                                             ; preds = %3094
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %3098

3098:                                             ; preds = %3127, %3097
  %3099 = load i32, ptr %47, align 4, !tbaa !5
  %3100 = load i32, ptr %10, align 4, !tbaa !5
  %3101 = icmp ult i32 %3099, %3100
  br i1 %3101, label %3102, label %3130

3102:                                             ; preds = %3098
  %3103 = load ptr, ptr %130, align 8, !tbaa !9
  %3104 = load i32, ptr %47, align 4, !tbaa !5
  %3105 = zext i32 %3104 to i64
  %3106 = getelementptr inbounds double, ptr %3103, i64 %3105
  %3107 = load double, ptr %3106, align 8, !tbaa !11
  %3108 = fcmp oge double %3107, 0.000000e+00
  br i1 %3108, label %3109, label %3117

3109:                                             ; preds = %3102
  %3110 = load double, ptr %99, align 8, !tbaa !11
  %3111 = load double, ptr %76, align 8, !tbaa !11
  %3112 = fmul double %3110, %3111
  %3113 = load ptr, ptr %140, align 8, !tbaa !9
  %3114 = load i32, ptr %47, align 4, !tbaa !5
  %3115 = zext i32 %3114 to i64
  %3116 = getelementptr inbounds double, ptr %3113, i64 %3115
  store double %3112, ptr %3116, align 8, !tbaa !11
  br label %3126

3117:                                             ; preds = %3102
  %3118 = load double, ptr %99, align 8, !tbaa !11
  %3119 = fneg double %3118
  %3120 = load double, ptr %76, align 8, !tbaa !11
  %3121 = fmul double %3119, %3120
  %3122 = load ptr, ptr %140, align 8, !tbaa !9
  %3123 = load i32, ptr %47, align 4, !tbaa !5
  %3124 = zext i32 %3123 to i64
  %3125 = getelementptr inbounds double, ptr %3122, i64 %3124
  store double %3121, ptr %3125, align 8, !tbaa !11
  br label %3126

3126:                                             ; preds = %3117, %3109
  br label %3127

3127:                                             ; preds = %3126
  %3128 = load i32, ptr %47, align 4, !tbaa !5
  %3129 = add i32 %3128, 1
  store i32 %3129, ptr %47, align 4, !tbaa !5
  br label %3098, !llvm.loop !73

3130:                                             ; preds = %3098
  store i32 1, ptr %31, align 4, !tbaa !5
  %3131 = load i32, ptr %10, align 4, !tbaa !5
  %3132 = load ptr, ptr %129, align 8, !tbaa !9
  %3133 = load ptr, ptr %11, align 8, !tbaa !9
  %3134 = load double, ptr %83, align 8, !tbaa !11
  %3135 = load ptr, ptr %12, align 8, !tbaa !9
  %3136 = load ptr, ptr %140, align 8, !tbaa !9
  %3137 = load i32, ptr %31, align 4, !tbaa !5
  %3138 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %3131, ptr noundef %3132, ptr noundef %3133, double noundef %3134, ptr noundef %3135, ptr noundef %3136, i32 noundef %3137, ptr noundef %3138)
  %3139 = load double, ptr %72, align 8, !tbaa !11
  %3140 = load ptr, ptr %14, align 8, !tbaa !9
  %3141 = getelementptr inbounds double, ptr %3140, i64 9
  %3142 = load double, ptr %3141, align 8, !tbaa !11
  %3143 = fadd double %3142, %3139
  store double %3143, ptr %3141, align 8, !tbaa !11
  br label %3153

3144:                                             ; preds = %3094
  %3145 = load ptr, ptr %13, align 8, !tbaa !9
  %3146 = load ptr, ptr %11, align 8, !tbaa !9
  %3147 = load ptr, ptr %129, align 8, !tbaa !9
  %3148 = load ptr, ptr %17, align 8, !tbaa !9
  call void %3145(ptr noundef %3146, ptr noundef %3147, ptr noundef %3148)
  %3149 = load ptr, ptr %14, align 8, !tbaa !9
  %3150 = getelementptr inbounds double, ptr %3149, i64 10
  %3151 = load double, ptr %3150, align 8, !tbaa !11
  %3152 = fadd double %3151, 1.000000e+00
  store double %3152, ptr %3150, align 8, !tbaa !11
  br label %3153

3153:                                             ; preds = %3144, %3130
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %3154

3154:                                             ; preds = %3171, %3153
  %3155 = load i32, ptr %47, align 4, !tbaa !5
  %3156 = load i32, ptr %10, align 4, !tbaa !5
  %3157 = icmp ult i32 %3155, %3156
  br i1 %3157, label %3158, label %3174

3158:                                             ; preds = %3154
  %3159 = load ptr, ptr %129, align 8, !tbaa !9
  %3160 = load i32, ptr %47, align 4, !tbaa !5
  %3161 = zext i32 %3160 to i64
  %3162 = getelementptr inbounds double, ptr %3159, i64 %3161
  %3163 = load double, ptr %3162, align 8, !tbaa !11
  %3164 = load ptr, ptr %129, align 8, !tbaa !9
  %3165 = load i32, ptr %47, align 4, !tbaa !5
  %3166 = zext i32 %3165 to i64
  %3167 = getelementptr inbounds double, ptr %3164, i64 %3166
  %3168 = load double, ptr %3167, align 8, !tbaa !11
  %3169 = load double, ptr %103, align 8, !tbaa !11
  %3170 = call double @llvm.fmuladd.f64(double %3163, double %3168, double %3169)
  store double %3170, ptr %103, align 8, !tbaa !11
  br label %3171

3171:                                             ; preds = %3158
  %3172 = load i32, ptr %47, align 4, !tbaa !5
  %3173 = add i32 %3172, 1
  store i32 %3173, ptr %47, align 4, !tbaa !5
  br label %3154, !llvm.loop !74

3174:                                             ; preds = %3154
  %3175 = load double, ptr %103, align 8, !tbaa !11
  %3176 = call double @sqrt(double noundef %3175) #8
  store double %3176, ptr %103, align 8, !tbaa !11
  %3177 = load double, ptr %103, align 8, !tbaa !11
  %3178 = fcmp oge double %3177, 0x7FDFFFFFFFFFFFFF
  br i1 %3178, label %3179, label %3187

3179:                                             ; preds = %3174
  %3180 = load i32, ptr %27, align 4, !tbaa !5
  %3181 = icmp ne i32 %3180, 0
  br i1 %3181, label %3182, label %3184

3182:                                             ; preds = %3179
  %3183 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %3184

3184:                                             ; preds = %3182, %3179
  %3185 = load ptr, ptr %14, align 8, !tbaa !9
  %3186 = getelementptr inbounds double, ptr %3185, i64 8
  store double -4.000000e+00, ptr %3186, align 8, !tbaa !11
  br label %3546

3187:                                             ; preds = %3174
  %3188 = load double, ptr %103, align 8, !tbaa !11
  %3189 = load double, ptr %75, align 8, !tbaa !11
  %3190 = fcmp ogt double %3188, %3189
  br i1 %3190, label %3191, label %3192

3191:                                             ; preds = %3187
  br label %3196

3192:                                             ; preds = %3187
  br label %3193

3193:                                             ; preds = %3192
  %3194 = load i32, ptr %46, align 4, !tbaa !5
  %3195 = add i32 %3194, 1
  store i32 %3195, ptr %46, align 4, !tbaa !5
  br label %3051, !llvm.loop !75

3196:                                             ; preds = %3191, %3051
  %3197 = load double, ptr %103, align 8, !tbaa !11
  %3198 = load double, ptr %75, align 8, !tbaa !11
  %3199 = fcmp ole double %3197, %3198
  br i1 %3199, label %3200, label %3209

3200:                                             ; preds = %3196
  %3201 = load i32, ptr %27, align 4, !tbaa !5
  %3202 = icmp ne i32 %3201, 0
  br i1 %3202, label %3203, label %3206

3203:                                             ; preds = %3200
  %3204 = call i32 (ptr, ...) @printf(ptr noundef @.str.12)
  %3205 = call i32 (ptr, ...) @printf(ptr noundef @.str.14)
  br label %3206

3206:                                             ; preds = %3203, %3200
  %3207 = load ptr, ptr %14, align 8, !tbaa !9
  %3208 = getelementptr inbounds double, ptr %3207, i64 8
  store double -8.000000e+00, ptr %3208, align 8, !tbaa !11
  br label %3546

3209:                                             ; preds = %3196
  %3210 = load double, ptr %99, align 8, !tbaa !11
  %3211 = load double, ptr %102, align 8, !tbaa !11
  %3212 = fmul double %3210, %3211
  store double %3212, ptr %100, align 8, !tbaa !11
  br label %3545

3213:                                             ; preds = %3015
  br label %3214

3214:                                             ; preds = %3213, %3014
  %3215 = load i32, ptr %19, align 4, !tbaa !5
  %3216 = icmp ne i32 %3215, 0
  br i1 %3216, label %3544, label %3217

3217:                                             ; preds = %3214
  %3218 = load double, ptr %83, align 8, !tbaa !11
  %3219 = load double, ptr %90, align 8, !tbaa !11
  %3220 = fsub double %3218, %3219
  %3221 = call double @llvm.fabs.f64(double %3220)
  %3222 = load double, ptr %90, align 8, !tbaa !11
  %3223 = call double @llvm.fabs.f64(double %3222)
  %3224 = load ptr, ptr %14, align 8, !tbaa !9
  %3225 = getelementptr inbounds double, ptr %3224, i64 2
  %3226 = load double, ptr %3225, align 8, !tbaa !11
  %3227 = fmul double %3223, %3226
  %3228 = fcmp olt double %3221, %3227
  br i1 %3228, label %3229, label %3544

3229:                                             ; preds = %3217
  %3230 = load i32, ptr %35, align 4, !tbaa !5
  %3231 = icmp ugt i32 %3230, 5
  br i1 %3231, label %3232, label %3544

3232:                                             ; preds = %3229
  %3233 = load double, ptr %103, align 8, !tbaa !11
  %3234 = fcmp olt double %3233, 1.000000e+00
  br i1 %3234, label %3235, label %3544

3235:                                             ; preds = %3232
  store i32 0, ptr %48, align 4, !tbaa !5
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3236

3236:                                             ; preds = %3257, %3235
  %3237 = load i32, ptr %46, align 4, !tbaa !5
  %3238 = load i32, ptr %10, align 4, !tbaa !5
  %3239 = icmp ult i32 %3237, %3238
  br i1 %3239, label %3240, label %3260

3240:                                             ; preds = %3236
  %3241 = load ptr, ptr %129, align 8, !tbaa !9
  %3242 = load i32, ptr %46, align 4, !tbaa !5
  %3243 = zext i32 %3242 to i64
  %3244 = getelementptr inbounds double, ptr %3241, i64 %3243
  %3245 = load double, ptr %3244, align 8, !tbaa !11
  %3246 = call double @llvm.fabs.f64(double %3245)
  %3247 = fcmp ole double %3246, 0x3970000000000000
  br i1 %3247, label %3248, label %3256

3248:                                             ; preds = %3240
  %3249 = load i32, ptr %46, align 4, !tbaa !5
  %3250 = load ptr, ptr %141, align 8, !tbaa !9
  %3251 = load i32, ptr %48, align 4, !tbaa !5
  %3252 = zext i32 %3251 to i64
  %3253 = getelementptr inbounds i32, ptr %3250, i64 %3252
  store i32 %3249, ptr %3253, align 4, !tbaa !5
  %3254 = load i32, ptr %48, align 4, !tbaa !5
  %3255 = add i32 %3254, 1
  store i32 %3255, ptr %48, align 4, !tbaa !5
  br label %3256

3256:                                             ; preds = %3248, %3240
  br label %3257

3257:                                             ; preds = %3256
  %3258 = load i32, ptr %46, align 4, !tbaa !5
  %3259 = add i32 %3258, 1
  store i32 %3259, ptr %46, align 4, !tbaa !5
  br label %3236, !llvm.loop !76

3260:                                             ; preds = %3236
  %3261 = load i32, ptr %48, align 4, !tbaa !5
  %3262 = icmp uge i32 %3261, 1
  br i1 %3262, label %3263, label %3543

3263:                                             ; preds = %3260
  %3264 = load i32, ptr %48, align 4, !tbaa !5
  %3265 = load i32, ptr %10, align 4, !tbaa !5
  %3266 = udiv i32 %3265, 2
  %3267 = icmp ule i32 %3264, %3266
  br i1 %3267, label %3268, label %3543

3268:                                             ; preds = %3263
  %3269 = load i32, ptr %44, align 4, !tbaa !5
  %3270 = icmp ule i32 %3269, 3
  br i1 %3270, label %3271, label %3543

3271:                                             ; preds = %3268
  %3272 = load i32, ptr %44, align 4, !tbaa !5
  %3273 = add i32 %3272, 1
  store i32 %3273, ptr %44, align 4, !tbaa !5
  %3274 = load i32, ptr %27, align 4, !tbaa !5
  %3275 = icmp ne i32 %3274, 0
  br i1 %3275, label %3276, label %3278

3276:                                             ; preds = %3271
  %3277 = call i32 (ptr, ...) @printf(ptr noundef @.str.18)
  br label %3278

3278:                                             ; preds = %3276, %3271
  store i32 1, ptr %60, align 4, !tbaa !5
  %3279 = load ptr, ptr @endwarn1, align 8, !tbaa !9
  store ptr %3279, ptr %142, align 8, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3280

3280:                                             ; preds = %3294, %3278
  %3281 = load i32, ptr %46, align 4, !tbaa !5
  %3282 = load i32, ptr %10, align 4, !tbaa !5
  %3283 = icmp ult i32 %3281, %3282
  br i1 %3283, label %3284, label %3297

3284:                                             ; preds = %3280
  %3285 = load ptr, ptr %11, align 8, !tbaa !9
  %3286 = load i32, ptr %46, align 4, !tbaa !5
  %3287 = zext i32 %3286 to i64
  %3288 = getelementptr inbounds double, ptr %3285, i64 %3287
  %3289 = load double, ptr %3288, align 8, !tbaa !11
  %3290 = load ptr, ptr %135, align 8, !tbaa !9
  %3291 = load i32, ptr %46, align 4, !tbaa !5
  %3292 = zext i32 %3291 to i64
  %3293 = getelementptr inbounds double, ptr %3290, i64 %3292
  store double %3289, ptr %3293, align 8, !tbaa !11
  br label %3294

3294:                                             ; preds = %3284
  %3295 = load i32, ptr %46, align 4, !tbaa !5
  %3296 = add i32 %3295, 1
  store i32 %3296, ptr %46, align 4, !tbaa !5
  br label %3280, !llvm.loop !77

3297:                                             ; preds = %3280
  %3298 = load double, ptr %83, align 8, !tbaa !11
  store double %3298, ptr %89, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3299

3299:                                             ; preds = %3418, %3297
  %3300 = load i32, ptr %46, align 4, !tbaa !5
  %3301 = load i32, ptr %48, align 4, !tbaa !5
  %3302 = icmp ult i32 %3300, %3301
  br i1 %3302, label %3303, label %3421

3303:                                             ; preds = %3299
  %3304 = load ptr, ptr %141, align 8, !tbaa !9
  %3305 = load i32, ptr %46, align 4, !tbaa !5
  %3306 = zext i32 %3305 to i64
  %3307 = getelementptr inbounds i32, ptr %3304, i64 %3306
  %3308 = load i32, ptr %3307, align 4, !tbaa !5
  store i32 %3308, ptr %47, align 4, !tbaa !5
  %3309 = load double, ptr %89, align 8, !tbaa !11
  store double %3309, ptr %88, align 8, !tbaa !11
  %3310 = load ptr, ptr %11, align 8, !tbaa !9
  %3311 = load i32, ptr %47, align 4, !tbaa !5
  %3312 = zext i32 %3311 to i64
  %3313 = getelementptr inbounds double, ptr %3310, i64 %3312
  %3314 = load double, ptr %3313, align 8, !tbaa !11
  store double %3314, ptr %77, align 8, !tbaa !11
  %3315 = load double, ptr %77, align 8, !tbaa !11
  %3316 = fcmp oeq double %3315, 0.000000e+00
  br i1 %3316, label %3317, label %3322

3317:                                             ; preds = %3303
  %3318 = load ptr, ptr %135, align 8, !tbaa !9
  %3319 = load i32, ptr %47, align 4, !tbaa !5
  %3320 = zext i32 %3319 to i64
  %3321 = getelementptr inbounds double, ptr %3318, i64 %3320
  store double 1.000000e+00, ptr %3321, align 8, !tbaa !11
  br label %3347

3322:                                             ; preds = %3303
  %3323 = load double, ptr %77, align 8, !tbaa !11
  %3324 = call double @llvm.fabs.f64(double %3323)
  %3325 = fcmp olt double %3324, 1.000000e+00
  br i1 %3325, label %3326, label %3340

3326:                                             ; preds = %3322
  %3327 = load double, ptr %77, align 8, !tbaa !11
  %3328 = fcmp olt double %3327, 0.000000e+00
  br i1 %3328, label %3329, label %3334

3329:                                             ; preds = %3326
  %3330 = load ptr, ptr %135, align 8, !tbaa !9
  %3331 = load i32, ptr %47, align 4, !tbaa !5
  %3332 = zext i32 %3331 to i64
  %3333 = getelementptr inbounds double, ptr %3330, i64 %3332
  store double -1.000000e+00, ptr %3333, align 8, !tbaa !11
  br label %3339

3334:                                             ; preds = %3326
  %3335 = load ptr, ptr %135, align 8, !tbaa !9
  %3336 = load i32, ptr %47, align 4, !tbaa !5
  %3337 = zext i32 %3336 to i64
  %3338 = getelementptr inbounds double, ptr %3335, i64 %3337
  store double 1.000000e+00, ptr %3338, align 8, !tbaa !11
  br label %3339

3339:                                             ; preds = %3334, %3329
  br label %3346

3340:                                             ; preds = %3322
  %3341 = load double, ptr %77, align 8, !tbaa !11
  %3342 = load ptr, ptr %135, align 8, !tbaa !9
  %3343 = load i32, ptr %47, align 4, !tbaa !5
  %3344 = zext i32 %3343 to i64
  %3345 = getelementptr inbounds double, ptr %3342, i64 %3344
  store double %3341, ptr %3345, align 8, !tbaa !11
  br label %3346

3346:                                             ; preds = %3340, %3339
  br label %3347

3347:                                             ; preds = %3346, %3317
  store i32 1, ptr %53, align 4, !tbaa !5
  br label %3348

3348:                                             ; preds = %3409, %3347
  %3349 = load i32, ptr %53, align 4, !tbaa !5
  %3350 = icmp ule i32 %3349, 20
  br i1 %3350, label %3351, label %3412

3351:                                             ; preds = %3348
  %3352 = load ptr, ptr %135, align 8, !tbaa !9
  %3353 = load i32, ptr %47, align 4, !tbaa !5
  %3354 = zext i32 %3353 to i64
  %3355 = getelementptr inbounds double, ptr %3352, i64 %3354
  %3356 = load double, ptr %3355, align 8, !tbaa !11
  %3357 = fdiv double %3356, 1.150000e+00
  store double %3357, ptr %3355, align 8, !tbaa !11
  %3358 = load ptr, ptr %12, align 8, !tbaa !9
  %3359 = load ptr, ptr %135, align 8, !tbaa !9
  %3360 = load ptr, ptr %17, align 8, !tbaa !9
  %3361 = call double %3358(ptr noundef %3359, ptr noundef %3360)
  store double %3361, ptr %87, align 8, !tbaa !11
  %3362 = load ptr, ptr %14, align 8, !tbaa !9
  %3363 = getelementptr inbounds double, ptr %3362, i64 9
  %3364 = load double, ptr %3363, align 8, !tbaa !11
  %3365 = fadd double %3364, 1.000000e+00
  store double %3365, ptr %3363, align 8, !tbaa !11
  %3366 = load double, ptr %87, align 8, !tbaa !11
  %3367 = call double @llvm.fabs.f64(double %3366)
  %3368 = fcmp olt double %3367, 0x7FDFFFFFFFFFFFFF
  br i1 %3368, label %3369, label %3408

3369:                                             ; preds = %3351
  %3370 = load double, ptr %99, align 8, !tbaa !11
  %3371 = load double, ptr %87, align 8, !tbaa !11
  %3372 = fmul double %3370, %3371
  %3373 = load double, ptr %99, align 8, !tbaa !11
  %3374 = load double, ptr %89, align 8, !tbaa !11
  %3375 = fmul double %3373, %3374
  %3376 = fcmp ogt double %3372, %3375
  br i1 %3376, label %3377, label %3384

3377:                                             ; preds = %3369
  %3378 = load ptr, ptr %135, align 8, !tbaa !9
  %3379 = load i32, ptr %47, align 4, !tbaa !5
  %3380 = zext i32 %3379 to i64
  %3381 = getelementptr inbounds double, ptr %3378, i64 %3380
  %3382 = load double, ptr %3381, align 8, !tbaa !11
  store double %3382, ptr %77, align 8, !tbaa !11
  %3383 = load double, ptr %87, align 8, !tbaa !11
  store double %3383, ptr %89, align 8, !tbaa !11
  br label %3406

3384:                                             ; preds = %3369
  %3385 = load double, ptr %99, align 8, !tbaa !11
  %3386 = load double, ptr %88, align 8, !tbaa !11
  %3387 = fmul double %3385, %3386
  %3388 = load double, ptr %99, align 8, !tbaa !11
  %3389 = load double, ptr %87, align 8, !tbaa !11
  %3390 = fmul double %3388, %3389
  %3391 = fcmp ogt double %3387, %3390
  br i1 %3391, label %3392, label %3393

3392:                                             ; preds = %3384
  br label %3412

3393:                                             ; preds = %3384
  %3394 = load double, ptr %88, align 8, !tbaa !11
  %3395 = load double, ptr %87, align 8, !tbaa !11
  %3396 = fcmp oeq double %3394, %3395
  br i1 %3396, label %3397, label %3404

3397:                                             ; preds = %3393
  %3398 = load ptr, ptr %135, align 8, !tbaa !9
  %3399 = load i32, ptr %47, align 4, !tbaa !5
  %3400 = zext i32 %3399 to i64
  %3401 = getelementptr inbounds double, ptr %3398, i64 %3400
  %3402 = load double, ptr %3401, align 8, !tbaa !11
  %3403 = fdiv double %3402, 1.500000e+00
  store double %3403, ptr %3401, align 8, !tbaa !11
  br label %3404

3404:                                             ; preds = %3397, %3393
  br label %3405

3405:                                             ; preds = %3404
  br label %3406

3406:                                             ; preds = %3405, %3377
  %3407 = load double, ptr %87, align 8, !tbaa !11
  store double %3407, ptr %88, align 8, !tbaa !11
  br label %3408

3408:                                             ; preds = %3406, %3351
  br label %3409

3409:                                             ; preds = %3408
  %3410 = load i32, ptr %46, align 4, !tbaa !5
  %3411 = add i32 %3410, 1
  store i32 %3411, ptr %46, align 4, !tbaa !5
  br label %3348, !llvm.loop !78

3412:                                             ; preds = %3392, %3348
  %3413 = load double, ptr %77, align 8, !tbaa !11
  %3414 = load ptr, ptr %135, align 8, !tbaa !9
  %3415 = load i32, ptr %47, align 4, !tbaa !5
  %3416 = zext i32 %3415 to i64
  %3417 = getelementptr inbounds double, ptr %3414, i64 %3416
  store double %3413, ptr %3417, align 8, !tbaa !11
  br label %3418

3418:                                             ; preds = %3412
  %3419 = load i32, ptr %46, align 4, !tbaa !5
  %3420 = add i32 %3419, 1
  store i32 %3420, ptr %46, align 4, !tbaa !5
  br label %3299, !llvm.loop !79

3421:                                             ; preds = %3299
  %3422 = load double, ptr %99, align 8, !tbaa !11
  %3423 = load double, ptr %89, align 8, !tbaa !11
  %3424 = fmul double %3422, %3423
  %3425 = load double, ptr %99, align 8, !tbaa !11
  %3426 = load double, ptr %83, align 8, !tbaa !11
  %3427 = fmul double %3425, %3426
  %3428 = fcmp ogt double %3424, %3427
  br i1 %3428, label %3429, label %3542

3429:                                             ; preds = %3421
  %3430 = load i32, ptr %20, align 4, !tbaa !5
  %3431 = icmp ne i32 %3430, 0
  br i1 %3431, label %3432, label %3462

3432:                                             ; preds = %3429
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %3433

3433:                                             ; preds = %3445, %3432
  %3434 = load i32, ptr %47, align 4, !tbaa !5
  %3435 = load i32, ptr %10, align 4, !tbaa !5
  %3436 = icmp ult i32 %3434, %3435
  br i1 %3436, label %3437, label %3448

3437:                                             ; preds = %3433
  %3438 = load double, ptr %99, align 8, !tbaa !11
  %3439 = load double, ptr %76, align 8, !tbaa !11
  %3440 = fmul double %3438, %3439
  %3441 = load ptr, ptr %140, align 8, !tbaa !9
  %3442 = load i32, ptr %47, align 4, !tbaa !5
  %3443 = zext i32 %3442 to i64
  %3444 = getelementptr inbounds double, ptr %3441, i64 %3443
  store double %3440, ptr %3444, align 8, !tbaa !11
  br label %3445

3445:                                             ; preds = %3437
  %3446 = load i32, ptr %47, align 4, !tbaa !5
  %3447 = add i32 %3446, 1
  store i32 %3447, ptr %47, align 4, !tbaa !5
  br label %3433, !llvm.loop !80

3448:                                             ; preds = %3433
  store i32 1, ptr %31, align 4, !tbaa !5
  %3449 = load i32, ptr %10, align 4, !tbaa !5
  %3450 = load ptr, ptr %132, align 8, !tbaa !9
  %3451 = load ptr, ptr %135, align 8, !tbaa !9
  %3452 = load double, ptr %89, align 8, !tbaa !11
  %3453 = load ptr, ptr %12, align 8, !tbaa !9
  %3454 = load ptr, ptr %140, align 8, !tbaa !9
  %3455 = load i32, ptr %31, align 4, !tbaa !5
  %3456 = load ptr, ptr %17, align 8, !tbaa !9
  call void @apprgrdn(i32 noundef %3449, ptr noundef %3450, ptr noundef %3451, double noundef %3452, ptr noundef %3453, ptr noundef %3454, i32 noundef %3455, ptr noundef %3456)
  %3457 = load double, ptr %72, align 8, !tbaa !11
  %3458 = load ptr, ptr %14, align 8, !tbaa !9
  %3459 = getelementptr inbounds double, ptr %3458, i64 9
  %3460 = load double, ptr %3459, align 8, !tbaa !11
  %3461 = fadd double %3460, %3457
  store double %3461, ptr %3459, align 8, !tbaa !11
  br label %3471

3462:                                             ; preds = %3429
  %3463 = load ptr, ptr %13, align 8, !tbaa !9
  %3464 = load ptr, ptr %135, align 8, !tbaa !9
  %3465 = load ptr, ptr %132, align 8, !tbaa !9
  %3466 = load ptr, ptr %17, align 8, !tbaa !9
  call void %3463(ptr noundef %3464, ptr noundef %3465, ptr noundef %3466)
  %3467 = load ptr, ptr %14, align 8, !tbaa !9
  %3468 = getelementptr inbounds double, ptr %3467, i64 10
  %3469 = load double, ptr %3468, align 8, !tbaa !11
  %3470 = fadd double %3469, 1.000000e+00
  store double %3470, ptr %3468, align 8, !tbaa !11
  br label %3471

3471:                                             ; preds = %3462, %3448
  store double 0.000000e+00, ptr %106, align 8, !tbaa !11
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3472

3472:                                             ; preds = %3489, %3471
  %3473 = load i32, ptr %46, align 4, !tbaa !5
  %3474 = load i32, ptr %10, align 4, !tbaa !5
  %3475 = icmp ult i32 %3473, %3474
  br i1 %3475, label %3476, label %3492

3476:                                             ; preds = %3472
  %3477 = load ptr, ptr %132, align 8, !tbaa !9
  %3478 = load i32, ptr %46, align 4, !tbaa !5
  %3479 = zext i32 %3478 to i64
  %3480 = getelementptr inbounds double, ptr %3477, i64 %3479
  %3481 = load double, ptr %3480, align 8, !tbaa !11
  %3482 = load ptr, ptr %132, align 8, !tbaa !9
  %3483 = load i32, ptr %46, align 4, !tbaa !5
  %3484 = zext i32 %3483 to i64
  %3485 = getelementptr inbounds double, ptr %3482, i64 %3484
  %3486 = load double, ptr %3485, align 8, !tbaa !11
  %3487 = load double, ptr %106, align 8, !tbaa !11
  %3488 = call double @llvm.fmuladd.f64(double %3481, double %3486, double %3487)
  store double %3488, ptr %106, align 8, !tbaa !11
  br label %3489

3489:                                             ; preds = %3476
  %3490 = load i32, ptr %46, align 4, !tbaa !5
  %3491 = add i32 %3490, 1
  store i32 %3491, ptr %46, align 4, !tbaa !5
  br label %3472, !llvm.loop !81

3492:                                             ; preds = %3472
  %3493 = load double, ptr %106, align 8, !tbaa !11
  %3494 = fcmp ogt double %3493, 0x3970000000000000
  br i1 %3494, label %3498, label %3495

3495:                                             ; preds = %3492
  %3496 = load double, ptr %106, align 8, !tbaa !11
  %3497 = fcmp olt double %3496, 0x7FDFFFFFFFFFFFFF
  br i1 %3497, label %3498, label %3541

3498:                                             ; preds = %3495, %3492
  %3499 = load i32, ptr %27, align 4, !tbaa !5
  %3500 = icmp ne i32 %3499, 0
  br i1 %3500, label %3501, label %3503

3501:                                             ; preds = %3498
  %3502 = call i32 (ptr, ...) @printf(ptr noundef @.str.19)
  br label %3503

3503:                                             ; preds = %3501, %3498
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %3504

3504:                                             ; preds = %3527, %3503
  %3505 = load i32, ptr %46, align 4, !tbaa !5
  %3506 = load i32, ptr %10, align 4, !tbaa !5
  %3507 = icmp ult i32 %3505, %3506
  br i1 %3507, label %3508, label %3530

3508:                                             ; preds = %3504
  %3509 = load ptr, ptr %135, align 8, !tbaa !9
  %3510 = load i32, ptr %46, align 4, !tbaa !5
  %3511 = zext i32 %3510 to i64
  %3512 = getelementptr inbounds double, ptr %3509, i64 %3511
  %3513 = load double, ptr %3512, align 8, !tbaa !11
  %3514 = load ptr, ptr %11, align 8, !tbaa !9
  %3515 = load i32, ptr %46, align 4, !tbaa !5
  %3516 = zext i32 %3515 to i64
  %3517 = getelementptr inbounds double, ptr %3514, i64 %3516
  store double %3513, ptr %3517, align 8, !tbaa !11
  %3518 = load ptr, ptr %132, align 8, !tbaa !9
  %3519 = load i32, ptr %46, align 4, !tbaa !5
  %3520 = zext i32 %3519 to i64
  %3521 = getelementptr inbounds double, ptr %3518, i64 %3520
  %3522 = load double, ptr %3521, align 8, !tbaa !11
  %3523 = load ptr, ptr %129, align 8, !tbaa !9
  %3524 = load i32, ptr %46, align 4, !tbaa !5
  %3525 = zext i32 %3524 to i64
  %3526 = getelementptr inbounds double, ptr %3523, i64 %3525
  store double %3522, ptr %3526, align 8, !tbaa !11
  br label %3527

3527:                                             ; preds = %3508
  %3528 = load i32, ptr %46, align 4, !tbaa !5
  %3529 = add i32 %3528, 1
  store i32 %3529, ptr %46, align 4, !tbaa !5
  br label %3504, !llvm.loop !82

3530:                                             ; preds = %3504
  %3531 = load double, ptr %106, align 8, !tbaa !11
  store double %3531, ptr %103, align 8, !tbaa !11
  %3532 = load double, ptr %89, align 8, !tbaa !11
  store double %3532, ptr %83, align 8, !tbaa !11
  %3533 = load double, ptr %99, align 8, !tbaa !11
  %3534 = load double, ptr %102, align 8, !tbaa !11
  %3535 = fmul double %3533, %3534
  %3536 = fdiv double %3535, 3.000000e+00
  store double %3536, ptr %100, align 8, !tbaa !11
  %3537 = load ptr, ptr %14, align 8, !tbaa !9
  %3538 = getelementptr inbounds double, ptr %3537, i64 2
  %3539 = load double, ptr %3538, align 8, !tbaa !11
  %3540 = fdiv double %3539, 5.000000e+00
  store double %3540, ptr %3538, align 8, !tbaa !11
  br label %3545

3541:                                             ; preds = %3495
  br label %3542

3542:                                             ; preds = %3541, %3421
  br label %3543

3543:                                             ; preds = %3542, %3268, %3263, %3260
  br label %3544

3544:                                             ; preds = %3543, %3232, %3229, %3217, %3214
  br label %954

3545:                                             ; preds = %3530, %3209, %2793, %2411, %1529
  br label %908

3546:                                             ; preds = %3206, %3184, %3091, %3029, %3011, %2997, %2980, %2927, %2364, %2349, %2227, %1833, %1782, %1691, %1666, %768, %756, %668, %655, %554, %510
  %3547 = load ptr, ptr %144, align 8, !tbaa !9
  call void @free(ptr noundef %3547) #8
  %3548 = load double, ptr %83, align 8, !tbaa !11
  store double %3548, ptr %9, align 8
  store i32 1, ptr %143, align 4
  br label %3549

3549:                                             ; preds = %3546, %241
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  br label %3550

3550:                                             ; preds = %3549, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr %18) #8
  %3551 = load double, ptr %9, align 8
  ret double %3551
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare i32 @printf(ptr noundef, ...) #5

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #6

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

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

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

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #7

; Function Attrs: nounwind
declare double @log10(double noundef) #7

; Function Attrs: nounwind
declare void @free(ptr noundef) #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !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 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!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}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = distinct !{!81, !14}
!82 = distinct !{!82, !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"

@__const.solvopt.default_options = external hidden unnamed_addr constant [13 x double], align 16
@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [53 x i8], align 1
@endwarn1 = external hidden local_unnamed_addr global ptr, align 8
@.str.9 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@endwarn4 = external hidden local_unnamed_addr global ptr, align 8
@.str.14 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [29 x i8], align 1
@endwarn2 = external hidden local_unnamed_addr global ptr, align 8
@endwarn3 = external hidden local_unnamed_addr global ptr, align 8
@appwarn = external hidden local_unnamed_addr global ptr, align 8
@.str.17 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @apprgrdn(i32 noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #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: nounwind uwtable
declare dso_local void @null_entry3(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local double @null_entry2(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local double @solvopt(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef readonly %3, ptr nocapture noundef %4, ptr noundef %5, ptr noundef readonly %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = ptrtoint ptr %1 to i64
  %10 = alloca [3 x double], align 16
  %11 = alloca [10 x double], align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  %12 = icmp ult i32 %0, 2
  br i1 %12, label %13, label %16

13:                                               ; preds = %8
  %14 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  %15 = getelementptr inbounds i8, ptr %4, i64 64
  store double -1.000000e+00, ptr %15, align 8, !tbaa !5
  br label %1851

16:                                               ; preds = %8
  %17 = uitofp i32 %0 to double
  %18 = mul i32 %0, %0
  %19 = zext i32 %18 to i64
  %20 = mul i32 %0, 13
  %21 = zext i32 %20 to i64
  %22 = add nuw nsw i64 %19, %21
  %23 = shl nuw nsw i64 %22, 3
  %24 = zext i32 %0 to i64
  %25 = shl nuw nsw i64 %24, 2
  %26 = add nuw nsw i64 %23, %25
  %calloc = tail call ptr @calloc(i64 1, i64 %26)
  %calloc4422 = ptrtoint ptr %calloc to i64
  %27 = getelementptr double, ptr %calloc, i64 %19
  %28 = getelementptr double, ptr %27, i64 %24
  %29 = getelementptr double, ptr %28, i64 %24
  %30 = getelementptr double, ptr %29, i64 %24
  %31 = getelementptr double, ptr %30, i64 %24
  %32 = getelementptr double, ptr %31, i64 %24
  %33 = getelementptr double, ptr %32, i64 %24
  %34 = getelementptr double, ptr %33, i64 %24
  %35 = getelementptr double, ptr %34, i64 %24
  %36 = getelementptr double, ptr %35, i64 %24
  %37 = getelementptr double, ptr %36, i64 %24
  %38 = getelementptr inbounds double, ptr %37, i64 %24
  %39 = getelementptr inbounds double, ptr %38, i64 %24
  %40 = icmp eq ptr %calloc, null
  br i1 %40, label %41, label %44

41:                                               ; preds = %16
  %42 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %43 = getelementptr inbounds i8, ptr %4, i64 64
  store double -1.000000e+00, ptr %43, align 8, !tbaa !5
  br label %1851

44:                                               ; preds = %16
  %.not.not = icmp eq ptr %3, @null_entry3
  %45 = icmp ne ptr %5, @null_entry2
  br i1 %45, label %46, label %48

46:                                               ; preds = %44
  %47 = icmp eq ptr %6, @null_entry3
  %not. = xor i1 %47, true
  br label %48

48:                                               ; preds = %46, %44
  %.not1588 = phi i1 [ undef, %44 ], [ %not., %46 ]
  %49 = phi i1 [ undef, %44 ], [ %47, %46 ]
  %50 = getelementptr inbounds i8, ptr %4, i64 48
  %51 = getelementptr i8, ptr %4, i64 64
  %52 = load double, ptr %4, align 8, !tbaa !5
  %53 = fcmp oeq double %52, 0.000000e+00
  br i1 %53, label %54, label %56

54:                                               ; preds = %48
  %55 = load double, ptr @__const.solvopt.default_options, align 16, !tbaa !5
  store double %55, ptr %4, align 8, !tbaa !5
  br label %56

56:                                               ; preds = %48, %54
  %57 = phi double [ %55, %54 ], [ %52, %48 ]
  %58 = getelementptr inbounds i8, ptr %4, i64 8
  %59 = load double, ptr %58, align 8, !tbaa !5
  %60 = fcmp oeq double %59, 0.000000e+00
  br i1 %60, label %69, label %61

61:                                               ; preds = %56
  %62 = fcmp ogt double %59, 0x3D719799812DEA11
  %63 = select i1 %62, double %59, double 0x3D719799812DEA11
  %64 = fcmp olt double %63, 1.000000e+00
  %65 = select i1 %64, double %63, double 1.000000e+00
  %66 = load double, ptr %51, align 8, !tbaa !5
  %67 = fmul double %66, 1.000000e+02
  %68 = fcmp ogt double %65, %67
  %.1633.1 = select i1 %68, double %65, double %67
  br label %71

69:                                               ; preds = %56
  %70 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 8), align 8, !tbaa !5
  br label %71

71:                                               ; preds = %69, %61
  %storemerge = phi double [ %.1633.1, %61 ], [ %70, %69 ]
  store double %storemerge, ptr %58, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %4, i64 16
  %73 = load double, ptr %72, align 8, !tbaa !5
  %74 = fcmp oeq double %73, 0.000000e+00
  br i1 %74, label %80, label %75

75:                                               ; preds = %71
  %76 = fcmp ogt double %73, 0x3D719799812DEA11
  %77 = select i1 %76, double %73, double 0x3D719799812DEA11
  %78 = fcmp olt double %77, 1.000000e+00
  %79 = select i1 %78, double %77, double 1.000000e+00
  br label %82

80:                                               ; preds = %71
  %81 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 16), align 16, !tbaa !5
  br label %82

82:                                               ; preds = %75, %80
  %storemerge3382 = phi double [ %79, %75 ], [ %81, %80 ]
  store double %storemerge3382, ptr %72, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %4, i64 24
  %84 = load double, ptr %83, align 8, !tbaa !5
  %85 = fcmp oeq double %84, 0.000000e+00
  br i1 %85, label %86, label %88

86:                                               ; preds = %82
  %87 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 24), align 8, !tbaa !5
  store double %87, ptr %83, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %82, %86
  %89 = phi double [ %87, %86 ], [ %84, %82 ]
  %90 = getelementptr inbounds i8, ptr %4, i64 32
  %91 = load double, ptr %90, align 8, !tbaa !5
  %92 = fcmp oeq double %91, 0.000000e+00
  br i1 %92, label %93, label %95

93:                                               ; preds = %88
  %94 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 32), align 16, !tbaa !5
  store double %94, ptr %90, align 8, !tbaa !5
  br label %95

95:                                               ; preds = %88, %93
  %96 = phi double [ %94, %93 ], [ %91, %88 ]
  %97 = getelementptr inbounds i8, ptr %4, i64 40
  %98 = load double, ptr %97, align 8, !tbaa !5
  %99 = fcmp oeq double %98, 0.000000e+00
  br i1 %99, label %105, label %100

100:                                              ; preds = %95
  %101 = fcmp ogt double %98, 0x3D719799812DEA11
  %102 = select i1 %101, double %98, double 0x3D719799812DEA11
  %103 = fcmp olt double %102, 1.000000e+00
  %104 = select i1 %103, double %102, double 1.000000e+00
  br label %107

105:                                              ; preds = %95
  %106 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 40), align 8, !tbaa !5
  br label %107

107:                                              ; preds = %100, %105
  %storemerge3383 = phi double [ %104, %100 ], [ %106, %105 ]
  store double %storemerge3383, ptr %97, align 8, !tbaa !5
  %108 = load double, ptr %50, align 8, !tbaa !5
  %109 = fcmp oeq double %108, 0.000000e+00
  br i1 %109, label %113, label %110

110:                                              ; preds = %107
  %111 = fcmp ogt double %108, 1.500000e+00
  %112 = select i1 %111, double %108, double 1.500000e+00
  br label %115

113:                                              ; preds = %107
  %114 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 48), align 16, !tbaa !5
  br label %115

115:                                              ; preds = %113, %110
  %storemerge3384 = phi double [ %112, %110 ], [ %114, %113 ]
  store double %storemerge3384, ptr %50, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %4, i64 56
  %117 = load double, ptr %116, align 8, !tbaa !5
  %118 = fcmp oeq double %117, 0.000000e+00
  br i1 %118, label %119, label %.preheader1703.preheader

119:                                              ; preds = %115
  %120 = load double, ptr getelementptr inbounds (i8, ptr @__const.solvopt.default_options, i64 56), align 8, !tbaa !5
  store double %120, ptr %116, align 8, !tbaa !5
  br label %.preheader1703.preheader

.preheader1703.preheader:                         ; preds = %115, %119
  %121 = phi double [ %120, %119 ], [ %117, %115 ]
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %51, i8 0, i64 40, i1 false), !tbaa !5
  %122 = fptoui double %89 to i32
  %123 = fcmp olt double %57, 0.000000e+00
  %124 = select i1 %45, i1 true, i1 %123
  %.01467 = select i1 %124, double -1.000000e+00, double 1.000000e+00
  %125 = fdiv double 1.000000e+00, %storemerge3384
  %126 = fadd double %125, -1.000000e+00
  %127 = fmul double %17, %17
  %128 = fdiv double 1.000000e-01, %127
  %129 = fadd double %128, 1.000000e+00
  %130 = fcmp ugt double %96, 0.000000e+00
  %131 = fcmp oeq double %96, -1.000000e+00
  %not.1658 = xor i1 %131, true
  %not.1659 = xor i1 %130, true
  %.not1589 = and i1 %131, %not.1659
  %132 = or i1 %130, %not.1658
  %.1637 = select i1 %.not.not, double 6.300000e+00, double 3.300000e+00
  %133 = fcmp olt double %121, 0x3DA5FD7FE1796495
  %134 = select i1 %133, double 0x3DA5FD7FE1796495, double %121
  %135 = fmul double %17, 0x3CB0000000000000
  %136 = fcmp ogt double %storemerge, 1.000000e-03
  %137 = select i1 %136, double %storemerge, double 1.000000e-03
  %138 = fmul double %storemerge3382, %storemerge3382
  %139 = fmul double %storemerge3382, 1.000000e+02
  %140 = fmul double %storemerge, 1.000000e+01
  %141 = tail call double %2(ptr noundef %1, ptr noundef %7) #10
  %142 = getelementptr inbounds i8, ptr %4, i64 72
  %143 = load double, ptr %142, align 8, !tbaa !5
  %144 = fadd double %143, 1.000000e+00
  store double %144, ptr %142, align 8, !tbaa !5
  %145 = tail call double @llvm.fabs.f64(double %141)
  %146 = fcmp ult double %145, 0x7FDFFFFFFFFFFFFF
  br i1 %146, label %._crit_edge, label %147

147:                                              ; preds = %.preheader1703.preheader
  br i1 %.not1589, label %151, label %148

148:                                              ; preds = %147
  %149 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  %150 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %151

151:                                              ; preds = %148, %147
  store double -3.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

._crit_edge:                                      ; preds = %.preheader1703.preheader
  %152 = shl nuw nsw i64 %24, 3
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %35, ptr noundef nonnull align 8 dereferenceable(1) %1, i64 %152, i1 false), !tbaa !5
  br i1 %45, label %153, label %168

153:                                              ; preds = %._crit_edge
  %154 = tail call double %5(ptr noundef %1, ptr noundef %7) #10
  %155 = getelementptr inbounds i8, ptr %4, i64 88
  %156 = load double, ptr %155, align 8, !tbaa !5
  %157 = fadd double %156, 1.000000e+00
  store double %157, ptr %155, align 8, !tbaa !5
  %158 = tail call double @llvm.fabs.f64(double %154)
  %159 = fcmp ult double %158, 0x7FDFFFFFFFFFFFFF
  br i1 %159, label %165, label %160

160:                                              ; preds = %153
  br i1 %.not1589, label %164, label %161

161:                                              ; preds = %160
  %162 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  %163 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %164

164:                                              ; preds = %161, %160
  store double -5.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

165:                                              ; preds = %153
  %166 = fcmp ole double %154, %storemerge3383
  %.1638 = select i1 %166, double 0.000000e+00, double %154
  %.1639 = zext i1 %166 to i32
  %167 = fadd double %141, %.1638
  br label %168

168:                                              ; preds = %165, %._crit_edge
  %.01526 = phi double [ %167, %165 ], [ %141, %._crit_edge ]
  %.11505 = phi double [ %.1638, %165 ], [ undef, %._crit_edge ]
  %.11315 = phi i32 [ %.1639, %165 ], [ undef, %._crit_edge ]
  br i1 %.not.not, label %.lr.ph2244, label %174

.lr.ph2244:                                       ; preds = %168
  %169 = fmul double %.01467, %134
  %wide.trip.count = zext i32 %0 to i64
  %min.iters.check = icmp ult i32 %0, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph2244
  %n.vec = and i64 %wide.trip.count, 4294967292
  %broadcast.splatinsert = insertelement <2 x double> poison, double %169, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %170 = getelementptr inbounds double, ptr %38, i64 %index
  %171 = getelementptr inbounds i8, ptr %170, i64 16
  store <2 x double> %broadcast.splat, ptr %170, align 8, !tbaa !5
  store <2 x double> %broadcast.splat, ptr %171, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %172 = icmp eq i64 %index.next, %n.vec
  br i1 %172, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge2245, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph2244
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph2244 ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %173 = getelementptr inbounds double, ptr %38, i64 %indvars.iv
  store double %169, ptr %173, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge2245, label %scalar.ph, !llvm.loop !13

._crit_edge2245:                                  ; preds = %scalar.ph, %middle.block
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %27, ptr noundef %1, double noundef %141, ptr noundef %2, ptr noundef %38, i32 noundef 1, ptr noundef %7)
  br label %.lr.ph2249.preheader

174:                                              ; preds = %168
  tail call void %3(ptr noundef %1, ptr noundef nonnull %27, ptr noundef %7) #10
  %175 = getelementptr inbounds i8, ptr %4, i64 80
  br label %.lr.ph2249.preheader

.lr.ph2249.preheader:                             ; preds = %._crit_edge2245, %174
  %.sink3898 = phi ptr [ %142, %._crit_edge2245 ], [ %175, %174 ]
  %.sink3897 = phi double [ %17, %._crit_edge2245 ], [ 1.000000e+00, %174 ]
  %176 = load double, ptr %.sink3898, align 8, !tbaa !5
  %177 = fadd double %176, %.sink3897
  store double %177, ptr %.sink3898, align 8, !tbaa !5
  %umax3076 = tail call i32 @llvm.umax.i32(i32 %0, i32 1)
  %wide.trip.count3077 = zext i32 %umax3076 to i64
  %178 = add nsw i64 %wide.trip.count3077, -1
  %xtraiter = and i64 %wide.trip.count3077, 3
  %179 = icmp ult i32 %0, 4
  br i1 %179, label %._crit_edge2250.unr-lcssa, label %.lr.ph2249.preheader.new

.lr.ph2249.preheader.new:                         ; preds = %.lr.ph2249.preheader
  %unroll_iter = and i64 %wide.trip.count3077, 4294967292
  br label %.lr.ph2249

.lr.ph2249:                                       ; preds = %.lr.ph2249, %.lr.ph2249.preheader.new
  %indvars.iv3073 = phi i64 [ 0, %.lr.ph2249.preheader.new ], [ %indvars.iv.next3074.3, %.lr.ph2249 ]
  %.014452246 = phi double [ 0.000000e+00, %.lr.ph2249.preheader.new ], [ %191, %.lr.ph2249 ]
  %niter = phi i64 [ 0, %.lr.ph2249.preheader.new ], [ %niter.next.3, %.lr.ph2249 ]
  %180 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3073
  %181 = load double, ptr %180, align 8, !tbaa !5
  %182 = tail call double @llvm.fmuladd.f64(double %181, double %181, double %.014452246)
  %indvars.iv.next3074 = or disjoint i64 %indvars.iv3073, 1
  %183 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3074
  %184 = load double, ptr %183, align 8, !tbaa !5
  %185 = tail call double @llvm.fmuladd.f64(double %184, double %184, double %182)
  %indvars.iv.next3074.1 = or disjoint i64 %indvars.iv3073, 2
  %186 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3074.1
  %187 = load double, ptr %186, align 8, !tbaa !5
  %188 = tail call double @llvm.fmuladd.f64(double %187, double %187, double %185)
  %indvars.iv.next3074.2 = or disjoint i64 %indvars.iv3073, 3
  %189 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3074.2
  %190 = load double, ptr %189, align 8, !tbaa !5
  %191 = tail call double @llvm.fmuladd.f64(double %190, double %190, double %188)
  %indvars.iv.next3074.3 = add nuw nsw i64 %indvars.iv3073, 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_edge2250.unr-lcssa, label %.lr.ph2249, !llvm.loop !14

._crit_edge2250.unr-lcssa:                        ; preds = %.lr.ph2249, %.lr.ph2249.preheader
  %.lcssa5404.ph = phi double [ poison, %.lr.ph2249.preheader ], [ %191, %.lr.ph2249 ]
  %indvars.iv3073.unr = phi i64 [ 0, %.lr.ph2249.preheader ], [ %indvars.iv.next3074.3, %.lr.ph2249 ]
  %.014452246.unr = phi double [ 0.000000e+00, %.lr.ph2249.preheader ], [ %191, %.lr.ph2249 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge2250, label %.lr.ph2249.epil

.lr.ph2249.epil:                                  ; preds = %._crit_edge2250.unr-lcssa, %.lr.ph2249.epil
  %indvars.iv3073.epil = phi i64 [ %indvars.iv.next3074.epil, %.lr.ph2249.epil ], [ %indvars.iv3073.unr, %._crit_edge2250.unr-lcssa ]
  %.014452246.epil = phi double [ %194, %.lr.ph2249.epil ], [ %.014452246.unr, %._crit_edge2250.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph2249.epil ], [ 0, %._crit_edge2250.unr-lcssa ]
  %192 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3073.epil
  %193 = load double, ptr %192, align 8, !tbaa !5
  %194 = tail call double @llvm.fmuladd.f64(double %193, double %193, double %.014452246.epil)
  %indvars.iv.next3074.epil = add nuw nsw i64 %indvars.iv3073.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_edge2250, label %.lr.ph2249.epil, !llvm.loop !15

._crit_edge2250:                                  ; preds = %.lr.ph2249.epil, %._crit_edge2250.unr-lcssa
  %.lcssa5404 = phi double [ %.lcssa5404.ph, %._crit_edge2250.unr-lcssa ], [ %194, %.lr.ph2249.epil ]
  %195 = tail call double @sqrt(double noundef %.lcssa5404) #10
  %196 = fcmp ult double %195, 0x7FDFFFFFFFFFFFFF
  br i1 %196, label %202, label %197

197:                                              ; preds = %._crit_edge2250
  br i1 %.not1589, label %201, label %198

198:                                              ; preds = %197
  %199 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %200 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %201

201:                                              ; preds = %198, %197
  store double -4.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

202:                                              ; preds = %._crit_edge2250
  %203 = fcmp olt double %195, %135
  br i1 %203, label %204, label %209

204:                                              ; preds = %202
  br i1 %.not1589, label %208, label %205

205:                                              ; preds = %204
  %206 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  %207 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %208

208:                                              ; preds = %205, %204
  store double -4.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

209:                                              ; preds = %202
  %210 = icmp eq i32 %.11315, 0
  %or.cond29.not = and i1 %45, %210
  br i1 %or.cond29.not, label %211, label %.lr.ph2267.preheader

211:                                              ; preds = %209
  br i1 %.not1588, label %241, label %.lr.ph2252

.lr.ph2252:                                       ; preds = %211
  %212 = fneg double %134
  %umax3082 = tail call i32 @llvm.umax.i32(i32 %0, i32 1)
  %wide.trip.count3083 = zext i32 %umax3082 to i64
  %min.iters.check4425 = icmp ult i32 %0, 10
  br i1 %min.iters.check4425, label %scalar.ph4424.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph2252
  %213 = mul nuw nsw i64 %24, 88
  %214 = add i64 %213, %calloc4422
  %215 = shl nuw nsw i64 %19, 3
  %216 = add i64 %214, %215
  %217 = sub i64 %216, %9
  %diff.check = icmp ult i64 %217, 32
  br i1 %diff.check, label %scalar.ph4424.preheader, label %vector.ph4426

vector.ph4426:                                    ; preds = %vector.memcheck
  %n.vec4428 = and i64 %wide.trip.count3077, 4294967292
  %broadcast.splatinsert4433 = insertelement <2 x double> poison, double %212, i64 0
  %broadcast.splat4434 = shufflevector <2 x double> %broadcast.splatinsert4433, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert4435 = insertelement <2 x double> poison, double %134, i64 0
  %broadcast.splat4436 = shufflevector <2 x double> %broadcast.splatinsert4435, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4430

vector.body4430:                                  ; preds = %vector.body4430, %vector.ph4426
  %index4431 = phi i64 [ 0, %vector.ph4426 ], [ %index.next4437, %vector.body4430 ]
  %218 = getelementptr inbounds double, ptr %1, i64 %index4431
  %219 = getelementptr inbounds i8, ptr %218, i64 16
  %wide.load = load <2 x double>, ptr %218, align 8, !tbaa !5
  %wide.load4432 = load <2 x double>, ptr %219, align 8, !tbaa !5
  %220 = fcmp ult <2 x double> %wide.load, zeroinitializer
  %221 = fcmp ult <2 x double> %wide.load4432, zeroinitializer
  %222 = select <2 x i1> %220, <2 x double> %broadcast.splat4434, <2 x double> %broadcast.splat4436
  %223 = select <2 x i1> %221, <2 x double> %broadcast.splat4434, <2 x double> %broadcast.splat4436
  %224 = getelementptr inbounds double, ptr %38, i64 %index4431
  %225 = getelementptr inbounds i8, ptr %224, i64 16
  store <2 x double> %222, ptr %224, align 8
  store <2 x double> %223, ptr %225, align 8
  %index.next4437 = add nuw i64 %index4431, 4
  %226 = icmp eq i64 %index.next4437, %n.vec4428
  br i1 %226, label %middle.block4423, label %vector.body4430, !llvm.loop !17

middle.block4423:                                 ; preds = %vector.body4430
  %cmp.n4438 = icmp eq i64 %n.vec4428, %wide.trip.count3077
  br i1 %cmp.n4438, label %._crit_edge2253, label %scalar.ph4424.preheader

scalar.ph4424.preheader:                          ; preds = %middle.block4423, %vector.memcheck, %.lr.ph2252
  %indvars.iv3079.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph2252 ], [ %n.vec4428, %middle.block4423 ]
  %xtraiter5406 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5407.not = icmp eq i64 %xtraiter5406, 0
  br i1 %lcmp.mod5407.not, label %scalar.ph4424.prol.loopexit, label %scalar.ph4424.prol

scalar.ph4424.prol:                               ; preds = %scalar.ph4424.preheader
  %227 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3079.ph
  %228 = load double, ptr %227, align 8, !tbaa !5
  %229 = fcmp ult double %228, 0.000000e+00
  %.sink.prol = select i1 %229, double %212, double %134
  %230 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3079.ph
  store double %.sink.prol, ptr %230, align 8
  %indvars.iv.next3080.prol = or disjoint i64 %indvars.iv3079.ph, 1
  br label %scalar.ph4424.prol.loopexit

scalar.ph4424.prol.loopexit:                      ; preds = %scalar.ph4424.prol, %scalar.ph4424.preheader
  %indvars.iv3079.unr = phi i64 [ %indvars.iv3079.ph, %scalar.ph4424.preheader ], [ %indvars.iv.next3080.prol, %scalar.ph4424.prol ]
  %231 = add nsw i64 %wide.trip.count3077, -1
  %232 = icmp eq i64 %indvars.iv3079.ph, %231
  br i1 %232, label %._crit_edge2253, label %scalar.ph4424

scalar.ph4424:                                    ; preds = %scalar.ph4424.prol.loopexit, %scalar.ph4424
  %indvars.iv3079 = phi i64 [ %indvars.iv.next3080.1, %scalar.ph4424 ], [ %indvars.iv3079.unr, %scalar.ph4424.prol.loopexit ]
  %233 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3079
  %234 = load double, ptr %233, align 8, !tbaa !5
  %235 = fcmp ult double %234, 0.000000e+00
  %.sink = select i1 %235, double %212, double %134
  %236 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3079
  store double %.sink, ptr %236, align 8
  %indvars.iv.next3080 = add nuw nsw i64 %indvars.iv3079, 1
  %237 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3080
  %238 = load double, ptr %237, align 8, !tbaa !5
  %239 = fcmp ult double %238, 0.000000e+00
  %.sink.1 = select i1 %239, double %212, double %134
  %240 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next3080
  store double %.sink.1, ptr %240, align 8
  %indvars.iv.next3080.1 = add nuw nsw i64 %indvars.iv3079, 2
  %exitcond3084.not.1 = icmp eq i64 %indvars.iv.next3080.1, %wide.trip.count3083
  br i1 %exitcond3084.not.1, label %._crit_edge2253, label %scalar.ph4424, !llvm.loop !18

._crit_edge2253:                                  ; preds = %scalar.ph4424.prol.loopexit, %scalar.ph4424, %middle.block4423
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %1, double noundef %.11505, ptr noundef %5, ptr noundef %38, i32 noundef 0, ptr noundef %7)
  br label %.lr.ph2257.preheader

241:                                              ; preds = %211
  tail call void %6(ptr noundef %1, ptr noundef nonnull %31, ptr noundef %7) #10
  br label %.lr.ph2257.preheader

.lr.ph2257.preheader:                             ; preds = %._crit_edge2253, %241
  %xtraiter5408 = and i64 %wide.trip.count3077, 3
  %242 = icmp ult i32 %0, 4
  br i1 %242, label %._crit_edge2258.unr-lcssa, label %.lr.ph2257.preheader.new

.lr.ph2257.preheader.new:                         ; preds = %.lr.ph2257.preheader
  %unroll_iter5412 = and i64 %wide.trip.count3077, 4294967292
  br label %.lr.ph2257

.lr.ph2257:                                       ; preds = %.lr.ph2257, %.lr.ph2257.preheader.new
  %indvars.iv3085 = phi i64 [ 0, %.lr.ph2257.preheader.new ], [ %indvars.iv.next3086.3, %.lr.ph2257 ]
  %.014432254 = phi double [ 0.000000e+00, %.lr.ph2257.preheader.new ], [ %254, %.lr.ph2257 ]
  %niter5413 = phi i64 [ 0, %.lr.ph2257.preheader.new ], [ %niter5413.next.3, %.lr.ph2257 ]
  %243 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3085
  %244 = load double, ptr %243, align 8, !tbaa !5
  %245 = tail call double @llvm.fmuladd.f64(double %244, double %244, double %.014432254)
  %indvars.iv.next3086 = or disjoint i64 %indvars.iv3085, 1
  %246 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3086
  %247 = load double, ptr %246, align 8, !tbaa !5
  %248 = tail call double @llvm.fmuladd.f64(double %247, double %247, double %245)
  %indvars.iv.next3086.1 = or disjoint i64 %indvars.iv3085, 2
  %249 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3086.1
  %250 = load double, ptr %249, align 8, !tbaa !5
  %251 = tail call double @llvm.fmuladd.f64(double %250, double %250, double %248)
  %indvars.iv.next3086.2 = or disjoint i64 %indvars.iv3085, 3
  %252 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3086.2
  %253 = load double, ptr %252, align 8, !tbaa !5
  %254 = tail call double @llvm.fmuladd.f64(double %253, double %253, double %251)
  %indvars.iv.next3086.3 = add nuw nsw i64 %indvars.iv3085, 4
  %niter5413.next.3 = add i64 %niter5413, 4
  %niter5413.ncmp.3 = icmp eq i64 %niter5413.next.3, %unroll_iter5412
  br i1 %niter5413.ncmp.3, label %._crit_edge2258.unr-lcssa, label %.lr.ph2257, !llvm.loop !19

._crit_edge2258.unr-lcssa:                        ; preds = %.lr.ph2257, %.lr.ph2257.preheader
  %.lcssa5403.ph = phi double [ poison, %.lr.ph2257.preheader ], [ %254, %.lr.ph2257 ]
  %indvars.iv3085.unr = phi i64 [ 0, %.lr.ph2257.preheader ], [ %indvars.iv.next3086.3, %.lr.ph2257 ]
  %.014432254.unr = phi double [ 0.000000e+00, %.lr.ph2257.preheader ], [ %254, %.lr.ph2257 ]
  %lcmp.mod5410.not = icmp eq i64 %xtraiter5408, 0
  br i1 %lcmp.mod5410.not, label %._crit_edge2258, label %.lr.ph2257.epil

.lr.ph2257.epil:                                  ; preds = %._crit_edge2258.unr-lcssa, %.lr.ph2257.epil
  %indvars.iv3085.epil = phi i64 [ %indvars.iv.next3086.epil, %.lr.ph2257.epil ], [ %indvars.iv3085.unr, %._crit_edge2258.unr-lcssa ]
  %.014432254.epil = phi double [ %257, %.lr.ph2257.epil ], [ %.014432254.unr, %._crit_edge2258.unr-lcssa ]
  %epil.iter5409 = phi i64 [ %epil.iter5409.next, %.lr.ph2257.epil ], [ 0, %._crit_edge2258.unr-lcssa ]
  %255 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3085.epil
  %256 = load double, ptr %255, align 8, !tbaa !5
  %257 = tail call double @llvm.fmuladd.f64(double %256, double %256, double %.014432254.epil)
  %indvars.iv.next3086.epil = add nuw nsw i64 %indvars.iv3085.epil, 1
  %epil.iter5409.next = add i64 %epil.iter5409, 1
  %epil.iter5409.cmp.not = icmp eq i64 %epil.iter5409.next, %xtraiter5408
  br i1 %epil.iter5409.cmp.not, label %._crit_edge2258, label %.lr.ph2257.epil, !llvm.loop !20

._crit_edge2258:                                  ; preds = %.lr.ph2257.epil, %._crit_edge2258.unr-lcssa
  %.lcssa5403 = phi double [ %.lcssa5403.ph, %._crit_edge2258.unr-lcssa ], [ %257, %.lr.ph2257.epil ]
  %258 = tail call double @sqrt(double noundef %.lcssa5403) #10
  %259 = fcmp ult double %258, 0x7FDFFFFFFFFFFFFF
  br i1 %259, label %265, label %260

260:                                              ; preds = %._crit_edge2258
  br i1 %.not1589, label %264, label %261

261:                                              ; preds = %260
  %262 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  %263 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %264

264:                                              ; preds = %261, %260
  store double -6.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

265:                                              ; preds = %._crit_edge2258
  %266 = fcmp olt double %258, %135
  br i1 %266, label %268, label %.lr.ph2262.preheader

.lr.ph2262.preheader:                             ; preds = %265
  %xtraiter5414 = and i64 %wide.trip.count3077, 1
  %267 = icmp eq i64 %178, 0
  br i1 %267, label %._crit_edge2263.unr-lcssa, label %.lr.ph2262.preheader.new

.lr.ph2262.preheader.new:                         ; preds = %.lr.ph2262.preheader
  %unroll_iter5418 = and i64 %wide.trip.count3077, 4294967294
  br label %.lr.ph2262

268:                                              ; preds = %265
  br i1 %.not1589, label %271, label %269

269:                                              ; preds = %268
  %270 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  br label %271

271:                                              ; preds = %269, %268
  store double -6.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

.lr.ph2262:                                       ; preds = %.lr.ph2262, %.lr.ph2262.preheader.new
  %indvars.iv3091 = phi i64 [ 0, %.lr.ph2262.preheader.new ], [ %indvars.iv.next3092.1, %.lr.ph2262 ]
  %.114462260 = phi double [ 0.000000e+00, %.lr.ph2262.preheader.new ], [ %283, %.lr.ph2262 ]
  %niter5419 = phi i64 [ 0, %.lr.ph2262.preheader.new ], [ %niter5419.next.1, %.lr.ph2262 ]
  %272 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3091
  %273 = load double, ptr %272, align 8, !tbaa !5
  %274 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3091
  %275 = load double, ptr %274, align 8, !tbaa !5
  %276 = fadd double %273, %275
  store double %276, ptr %274, align 8, !tbaa !5
  %277 = tail call double @llvm.fmuladd.f64(double %276, double %276, double %.114462260)
  %indvars.iv.next3092 = or disjoint i64 %indvars.iv3091, 1
  %278 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3092
  %279 = load double, ptr %278, align 8, !tbaa !5
  %280 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3092
  %281 = load double, ptr %280, align 8, !tbaa !5
  %282 = fadd double %279, %281
  store double %282, ptr %280, align 8, !tbaa !5
  %283 = tail call double @llvm.fmuladd.f64(double %282, double %282, double %277)
  %indvars.iv.next3092.1 = add nuw nsw i64 %indvars.iv3091, 2
  %niter5419.next.1 = add i64 %niter5419, 2
  %niter5419.ncmp.1 = icmp eq i64 %niter5419.next.1, %unroll_iter5418
  br i1 %niter5419.ncmp.1, label %._crit_edge2263.unr-lcssa, label %.lr.ph2262, !llvm.loop !21

._crit_edge2263.unr-lcssa:                        ; preds = %.lr.ph2262, %.lr.ph2262.preheader
  %.lcssa5402.ph = phi double [ poison, %.lr.ph2262.preheader ], [ %283, %.lr.ph2262 ]
  %indvars.iv3091.unr = phi i64 [ 0, %.lr.ph2262.preheader ], [ %indvars.iv.next3092.1, %.lr.ph2262 ]
  %.114462260.unr = phi double [ 0.000000e+00, %.lr.ph2262.preheader ], [ %283, %.lr.ph2262 ]
  %lcmp.mod5416.not = icmp eq i64 %xtraiter5414, 0
  br i1 %lcmp.mod5416.not, label %._crit_edge2263, label %.lr.ph2262.epil

.lr.ph2262.epil:                                  ; preds = %._crit_edge2263.unr-lcssa
  %284 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3091.unr
  %285 = load double, ptr %284, align 8, !tbaa !5
  %286 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3091.unr
  %287 = load double, ptr %286, align 8, !tbaa !5
  %288 = fadd double %285, %287
  store double %288, ptr %286, align 8, !tbaa !5
  %289 = tail call double @llvm.fmuladd.f64(double %288, double %288, double %.114462260.unr)
  br label %._crit_edge2263

._crit_edge2263:                                  ; preds = %._crit_edge2263.unr-lcssa, %.lr.ph2262.epil
  %.lcssa5402 = phi double [ %.lcssa5402.ph, %._crit_edge2263.unr-lcssa ], [ %289, %.lr.ph2262.epil ]
  %290 = tail call double @sqrt(double noundef %.lcssa5402) #10
  br label %.lr.ph2267.preheader

.lr.ph2267.preheader:                             ; preds = %209, %._crit_edge2263
  %.21447 = phi double [ %195, %209 ], [ %290, %._crit_edge2263 ]
  %umax3100 = tail call i32 @llvm.umax.i32(i32 %0, i32 1)
  %wide.trip.count3101 = zext i32 %umax3100 to i64
  %min.iters.check4443 = icmp ult i32 %0, 8
  br i1 %min.iters.check4443, label %.lr.ph2267.preheader5401, label %vector.ph4444

.lr.ph2267.preheader5401:                         ; preds = %middle.block4441, %.lr.ph2267.preheader
  %indvars.iv3097.ph = phi i64 [ 0, %.lr.ph2267.preheader ], [ %n.vec4446, %middle.block4441 ]
  %xtraiter5420 = and i64 %wide.trip.count3077, 3
  %lcmp.mod5421.not = icmp eq i64 %xtraiter5420, 0
  br i1 %lcmp.mod5421.not, label %.lr.ph2267.prol.loopexit, label %.lr.ph2267.prol

.lr.ph2267.prol:                                  ; preds = %.lr.ph2267.preheader5401, %.lr.ph2267.prol
  %indvars.iv3097.prol = phi i64 [ %indvars.iv.next3098.prol, %.lr.ph2267.prol ], [ %indvars.iv3097.ph, %.lr.ph2267.preheader5401 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph2267.prol ], [ 0, %.lr.ph2267.preheader5401 ]
  %291 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3097.prol
  %292 = load double, ptr %291, align 8, !tbaa !5
  %293 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3097.prol
  store double %292, ptr %293, align 8, !tbaa !5
  %indvars.iv.next3098.prol = add nuw nsw i64 %indvars.iv3097.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter5420
  br i1 %prol.iter.cmp.not, label %.lr.ph2267.prol.loopexit, label %.lr.ph2267.prol, !llvm.loop !22

.lr.ph2267.prol.loopexit:                         ; preds = %.lr.ph2267.prol, %.lr.ph2267.preheader5401
  %indvars.iv3097.unr = phi i64 [ %indvars.iv3097.ph, %.lr.ph2267.preheader5401 ], [ %indvars.iv.next3098.prol, %.lr.ph2267.prol ]
  %294 = sub nsw i64 %indvars.iv3097.ph, %wide.trip.count3077
  %295 = icmp ugt i64 %294, -4
  br i1 %295, label %.lr.ph2270.preheader, label %.lr.ph2267

vector.ph4444:                                    ; preds = %.lr.ph2267.preheader
  %n.vec4446 = and i64 %wide.trip.count3077, 4294967292
  br label %vector.body4448

vector.body4448:                                  ; preds = %vector.body4448, %vector.ph4444
  %index4449 = phi i64 [ 0, %vector.ph4444 ], [ %index.next4452, %vector.body4448 ]
  %296 = getelementptr inbounds double, ptr %27, i64 %index4449
  %297 = getelementptr inbounds i8, ptr %296, i64 16
  %wide.load4450 = load <2 x double>, ptr %296, align 8, !tbaa !5
  %wide.load4451 = load <2 x double>, ptr %297, align 8, !tbaa !5
  %298 = getelementptr inbounds double, ptr %36, i64 %index4449
  %299 = getelementptr inbounds i8, ptr %298, i64 16
  store <2 x double> %wide.load4450, ptr %298, align 8, !tbaa !5
  store <2 x double> %wide.load4451, ptr %299, align 8, !tbaa !5
  %index.next4452 = add nuw i64 %index4449, 4
  %300 = icmp eq i64 %index.next4452, %n.vec4446
  br i1 %300, label %middle.block4441, label %vector.body4448, !llvm.loop !23

middle.block4441:                                 ; preds = %vector.body4448
  %cmp.n4453 = icmp eq i64 %n.vec4446, %wide.trip.count3077
  br i1 %cmp.n4453, label %.lr.ph2270.preheader, label %.lr.ph2267.preheader5401

.lr.ph2270.preheader:                             ; preds = %.lr.ph2267.prol.loopexit, %.lr.ph2267, %middle.block4441
  %xtraiter5422 = and i64 %wide.trip.count3077, 1
  %301 = icmp eq i64 %178, 0
  br i1 %301, label %._crit_edge2271.unr-lcssa, label %.lr.ph2270.preheader.new

.lr.ph2270.preheader.new:                         ; preds = %.lr.ph2270.preheader
  %unroll_iter5426 = and i64 %wide.trip.count3077, 4294967294
  br label %.lr.ph2270

.lr.ph2267:                                       ; preds = %.lr.ph2267.prol.loopexit, %.lr.ph2267
  %indvars.iv3097 = phi i64 [ %indvars.iv.next3098.3, %.lr.ph2267 ], [ %indvars.iv3097.unr, %.lr.ph2267.prol.loopexit ]
  %302 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3097
  %303 = load double, ptr %302, align 8, !tbaa !5
  %304 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3097
  store double %303, ptr %304, align 8, !tbaa !5
  %indvars.iv.next3098 = add nuw nsw i64 %indvars.iv3097, 1
  %305 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3098
  %306 = load double, ptr %305, align 8, !tbaa !5
  %307 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next3098
  store double %306, ptr %307, align 8, !tbaa !5
  %indvars.iv.next3098.1 = add nuw nsw i64 %indvars.iv3097, 2
  %308 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3098.1
  %309 = load double, ptr %308, align 8, !tbaa !5
  %310 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next3098.1
  store double %309, ptr %310, align 8, !tbaa !5
  %indvars.iv.next3098.2 = add nuw nsw i64 %indvars.iv3097, 3
  %311 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3098.2
  %312 = load double, ptr %311, align 8, !tbaa !5
  %313 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next3098.2
  store double %312, ptr %313, align 8, !tbaa !5
  %indvars.iv.next3098.3 = add nuw nsw i64 %indvars.iv3097, 4
  %exitcond3102.not.3 = icmp eq i64 %indvars.iv.next3098.3, %wide.trip.count3101
  br i1 %exitcond3102.not.3, label %.lr.ph2270.preheader, label %.lr.ph2267, !llvm.loop !24

.lr.ph2270:                                       ; preds = %.lr.ph2270, %.lr.ph2270.preheader.new
  %indvars.iv3103 = phi i64 [ 0, %.lr.ph2270.preheader.new ], [ %indvars.iv.next3104.1, %.lr.ph2270 ]
  %.014222268 = phi double [ 0.000000e+00, %.lr.ph2270.preheader.new ], [ %.11423.1, %.lr.ph2270 ]
  %niter5427 = phi i64 [ 0, %.lr.ph2270.preheader.new ], [ %niter5427.next.1, %.lr.ph2270 ]
  %314 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3103
  %315 = load double, ptr %314, align 8, !tbaa !5
  %316 = tail call double @llvm.fabs.f64(double %315)
  %317 = fcmp olt double %.014222268, %316
  %.11423 = select i1 %317, double %316, double %.014222268
  %indvars.iv.next3104 = or disjoint i64 %indvars.iv3103, 1
  %318 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3104
  %319 = load double, ptr %318, align 8, !tbaa !5
  %320 = tail call double @llvm.fabs.f64(double %319)
  %321 = fcmp olt double %.11423, %320
  %.11423.1 = select i1 %321, double %320, double %.11423
  %indvars.iv.next3104.1 = add nuw nsw i64 %indvars.iv3103, 2
  %niter5427.next.1 = add i64 %niter5427, 2
  %niter5427.ncmp.1 = icmp eq i64 %niter5427.next.1, %unroll_iter5426
  br i1 %niter5427.ncmp.1, label %._crit_edge2271.unr-lcssa, label %.lr.ph2270, !llvm.loop !25

._crit_edge2271.unr-lcssa:                        ; preds = %.lr.ph2270, %.lr.ph2270.preheader
  %.11423.lcssa.ph = phi double [ poison, %.lr.ph2270.preheader ], [ %.11423.1, %.lr.ph2270 ]
  %indvars.iv3103.unr = phi i64 [ 0, %.lr.ph2270.preheader ], [ %indvars.iv.next3104.1, %.lr.ph2270 ]
  %.014222268.unr = phi double [ 0.000000e+00, %.lr.ph2270.preheader ], [ %.11423.1, %.lr.ph2270 ]
  %lcmp.mod5424.not = icmp eq i64 %xtraiter5422, 0
  br i1 %lcmp.mod5424.not, label %._crit_edge2271, label %.lr.ph2270.epil

.lr.ph2270.epil:                                  ; preds = %._crit_edge2271.unr-lcssa
  %322 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3103.unr
  %323 = load double, ptr %322, align 8, !tbaa !5
  %324 = tail call double @llvm.fabs.f64(double %323)
  %325 = fcmp olt double %.014222268.unr, %324
  %.11423.epil = select i1 %325, double %324, double %.014222268.unr
  br label %._crit_edge2271

._crit_edge2271:                                  ; preds = %._crit_edge2271.unr-lcssa, %.lr.ph2270.epil
  %.11423.lcssa = phi double [ %.11423.lcssa.ph, %._crit_edge2271.unr-lcssa ], [ %.11423.epil, %.lr.ph2270.epil ]
  %326 = load double, ptr %58, align 8, !tbaa !5
  %327 = tail call double @sqrt(double noundef %326) #10
  %328 = fmul double %.01467, %327
  %329 = fmul double %.11423.lcssa, %328
  %330 = load double, ptr %4, align 8, !tbaa !5
  %331 = tail call double @llvm.fabs.f64(double %330)
  %332 = fcmp une double %331, 1.000000e+00
  br i1 %332, label %333, label %336

333:                                              ; preds = %._crit_edge2271
  %334 = tail call double @llvm.fabs.f64(double %329)
  %335 = fcmp ogt double %331, %334
  %.1640 = select i1 %335, double %331, double %334
  br label %345

336:                                              ; preds = %._crit_edge2271
  %337 = fadd double %.21447, 1.100000e+00
  %338 = tail call double @log(double noundef %337) #10
  %339 = fdiv double 1.000000e+00, %338
  %340 = tail call double @llvm.fabs.f64(double %329)
  %341 = fcmp ogt double %339, %340
  br i1 %341, label %342, label %345

342:                                              ; preds = %336
  %343 = tail call double @log(double noundef %337) #10
  %344 = fdiv double 1.000000e+00, %343
  br label %345

345:                                              ; preds = %342, %336, %333
  %.pn = phi double [ %.1640, %333 ], [ %344, %342 ], [ %340, %336 ]
  %.01460 = fmul double %.01467, %.pn
  %346 = getelementptr inbounds i8, ptr %4, i64 88
  %347 = getelementptr inbounds i8, ptr %4, i64 80
  %348 = fmul double %.01467, %134
  %349 = fneg double %.01467
  %350 = fmul double %134, %349
  %351 = getelementptr inbounds i8, ptr %4, i64 96
  %352 = fneg double %134
  %353 = lshr i32 %0, 1
  %.913871627 = add i32 %0, 1
  %354 = mul i32 %0, 10
  %355 = zext i32 %354 to i64
  %umax3112 = tail call i32 @llvm.umax.i32(i32 %0, i32 1)
  %umax3130 = tail call i64 @llvm.umax.i64(i64 %24, i64 1)
  %356 = shl nuw nsw i64 %umax3130, 3
  %wide.trip.count3118 = zext i32 %umax3112 to i64
  %wide.trip.count3128 = zext i32 %umax3112 to i64
  %wide.trip.count3137 = zext i32 %umax3112 to i64
  %wide.trip.count3151 = zext i32 %umax3112 to i64
  %wide.trip.count3171 = zext i32 %umax3112 to i64
  %wide.trip.count3176 = zext i32 %umax3112 to i64
  %wide.trip.count3186 = zext i32 %umax3112 to i64
  %wide.trip.count3209 = zext i32 %umax3112 to i64
  %wide.trip.count3214 = zext i32 %umax3112 to i64
  %wide.trip.count3252 = zext i32 %umax3112 to i64
  %wide.trip.count3262 = zext i32 %umax3112 to i64
  %wide.trip.count3277 = zext i32 %umax3112 to i64
  %wide.trip.count3292 = zext i32 %umax3112 to i64
  %wide.trip.count3316 = zext i32 %umax3112 to i64
  %wide.trip.count3336 = zext i32 %umax3112 to i64
  %wide.trip.count3342 = zext i32 %umax3112 to i64
  %wide.trip.count3348 = zext i32 %umax3112 to i64
  %wide.trip.count3360 = zext i32 %umax3112 to i64
  %357 = mul nsw i64 %24, -48
  %358 = mul nuw nsw i64 %24, 88
  %359 = add i64 %358, %calloc4422
  %360 = shl nuw nsw i64 %19, 3
  %361 = add i64 %359, %360
  %362 = sub i64 %361, %9
  %363 = add nsw i64 %wide.trip.count3077, -1
  %364 = add nsw i64 %wide.trip.count3077, -1
  %365 = and i64 %wide.trip.count3077, 4294967294
  %366 = and i64 %wide.trip.count3077, 1
  %367 = sub nsw i64 %364, %365
  %min.iters.check4743 = icmp ult i32 %0, 8
  %368 = trunc i64 %363 to i32
  %369 = icmp ugt i64 %363, 4294967295
  %n.vec4746 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4751 = icmp eq i64 %n.vec4746, %wide.trip.count3077
  %xtraiter5428 = and i64 %wide.trip.count3077, 3
  %lcmp.mod5429.not = icmp eq i64 %xtraiter5428, 0
  %xtraiter5431 = and i64 %wide.trip.count3077, 3
  %370 = icmp ult i32 %0, 4
  %unroll_iter5435 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5433.not = icmp eq i64 %xtraiter5431, 0
  %xtraiter5437 = and i64 %wide.trip.count3077, 1
  %371 = icmp eq i64 %178, 0
  %unroll_iter5441 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5439.not = icmp eq i64 %xtraiter5437, 0
  %n.vec4731 = and i64 %wide.trip.count3077, 4294967294
  %cmp.n4739 = icmp eq i64 %n.vec4731, %wide.trip.count3077
  %xtraiter5443 = and i64 %wide.trip.count3077, 3
  %372 = icmp ult i32 %0, 4
  %unroll_iter5447 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5445.not = icmp eq i64 %xtraiter5443, 0
  %xtraiter5450 = and i64 %wide.trip.count3077, 1
  %373 = icmp eq i64 %178, 0
  %unroll_iter5454 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5452.not = icmp eq i64 %xtraiter5450, 0
  %xtraiter5457 = and i64 %wide.trip.count3077, 1
  %374 = icmp eq i64 %178, 0
  %unroll_iter5460 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5459.not = icmp eq i64 %xtraiter5457, 0
  %n.vec4695 = and i64 %wide.trip.count3077, 4294967294
  %cmp.n4703 = icmp eq i64 %n.vec4695, %wide.trip.count3077
  %lcmp.mod5463.not = icmp eq i64 %366, 0
  %375 = icmp ult i64 %367, 3
  %xtraiter5467 = and i64 %wide.trip.count3077, 1
  %376 = icmp eq i64 %178, 0
  %unroll_iter5472 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5469.not = icmp eq i64 %xtraiter5467, 0
  %xtraiter5474 = and i64 %wide.trip.count3077, 1
  %377 = icmp eq i64 %178, 0
  %unroll_iter5478 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5476.not = icmp eq i64 %xtraiter5474, 0
  %min.iters.check4673 = icmp ult i32 %0, 4
  %n.vec4676 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4687 = icmp eq i64 %n.vec4676, %wide.trip.count3077
  %min.iters.check4657 = icmp ult i32 %0, 4
  %n.vec4660 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4670 = icmp eq i64 %n.vec4660, %wide.trip.count3077
  %xtraiter5489 = and i64 %wide.trip.count3077, 3
  %378 = icmp ult i32 %0, 4
  %unroll_iter5493 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5491.not = icmp eq i64 %xtraiter5489, 0
  %xtraiter5495 = and i64 %wide.trip.count3077, 3
  %379 = icmp ult i32 %0, 4
  %unroll_iter5499 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5497.not = icmp eq i64 %xtraiter5495, 0
  %xtraiter5504 = and i64 %wide.trip.count3077, 3
  %380 = icmp ult i32 %0, 4
  %unroll_iter5508 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5506.not = icmp eq i64 %xtraiter5504, 0
  %min.iters.check4604 = icmp ult i32 %0, 4
  %n.vec4607 = and i64 %wide.trip.count3077, 4294967292
  %broadcast.splatinsert4613 = insertelement <2 x double> poison, double %350, i64 0
  %broadcast.splat4614 = shufflevector <2 x double> %broadcast.splatinsert4613, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert4615 = insertelement <2 x double> poison, double %348, i64 0
  %broadcast.splat4616 = shufflevector <2 x double> %broadcast.splatinsert4615, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n4618 = icmp eq i64 %n.vec4607, %wide.trip.count3077
  %xtraiter5518 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5519.not = icmp eq i64 %xtraiter5518, 0
  %381 = add nsw i64 %wide.trip.count3077, -1
  %xtraiter5521 = and i64 %wide.trip.count3077, 3
  %382 = icmp ult i32 %0, 4
  %unroll_iter5525 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5523.not = icmp eq i64 %xtraiter5521, 0
  %min.iters.check4585 = icmp ult i32 %0, 4
  %diff.check4582 = icmp ult i64 %362, 32
  %or.cond4753 = select i1 %min.iters.check4585, i1 true, i1 %diff.check4582
  %n.vec4588 = and i64 %wide.trip.count3077, 4294967292
  %broadcast.splatinsert4594 = insertelement <2 x double> poison, double %352, i64 0
  %broadcast.splat4595 = shufflevector <2 x double> %broadcast.splatinsert4594, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert4596 = insertelement <2 x double> poison, double %134, i64 0
  %broadcast.splat4597 = shufflevector <2 x double> %broadcast.splatinsert4596, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n4599 = icmp eq i64 %n.vec4588, %wide.trip.count3077
  %xtraiter5527 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5528.not = icmp eq i64 %xtraiter5527, 0
  %383 = add nsw i64 %wide.trip.count3077, -1
  %xtraiter5530 = and i64 %wide.trip.count3077, 3
  %384 = icmp ult i32 %0, 4
  %unroll_iter5534 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5532.not = icmp eq i64 %xtraiter5530, 0
  %xtraiter5536 = and i64 %wide.trip.count3077, 1
  %385 = icmp eq i64 %178, 0
  %unroll_iter5540 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5538.not = icmp eq i64 %xtraiter5536, 0
  %min.iters.check4568 = icmp ult i32 %0, 4
  %n.vec4571 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4580 = icmp eq i64 %n.vec4571, %wide.trip.count3077
  %xtraiter5542 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5543.not = icmp eq i64 %xtraiter5542, 0
  %386 = add nsw i64 %wide.trip.count3077, -1
  %xtraiter5554 = and i64 %wide.trip.count3077, 3
  %387 = icmp ult i32 %0, 4
  %unroll_iter5558 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5556.not = icmp eq i64 %xtraiter5554, 0
  %xtraiter5560 = and i64 %wide.trip.count3077, 3
  %388 = icmp ult i32 %0, 4
  %unroll_iter5564 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5562.not = icmp eq i64 %xtraiter5560, 0
  %xtraiter5566 = and i64 %wide.trip.count3077, 1
  %389 = icmp eq i64 %178, 0
  %unroll_iter5570 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5568.not = icmp eq i64 %xtraiter5566, 0
  %min.iters.check4522 = icmp ult i32 %0, 4
  %n.vec4525 = and i64 %wide.trip.count3077, 4294967292
  %broadcast.splatinsert4529 = insertelement <2 x double> poison, double %348, i64 0
  %broadcast.splat4530 = shufflevector <2 x double> %broadcast.splatinsert4529, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n4532 = icmp eq i64 %n.vec4525, %wide.trip.count3077
  %xtraiter5572 = and i64 %wide.trip.count3077, 3
  %390 = icmp ult i32 %0, 4
  %unroll_iter5576 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5574.not = icmp eq i64 %xtraiter5572, 0
  %min.iters.check4458 = icmp ult i32 %0, 4
  %diff.check4455 = icmp ult i64 %357, 32
  %or.cond4754 = select i1 %min.iters.check4458, i1 true, i1 %diff.check4455
  %n.vec4461 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4470 = icmp eq i64 %n.vec4461, %wide.trip.count3077
  %xtraiter5578 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5579.not = icmp eq i64 %xtraiter5578, 0
  %391 = add nsw i64 %wide.trip.count3077, -1
  %min.iters.check4507 = icmp ult i32 %0, 4
  %n.vec4510 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4519 = icmp eq i64 %n.vec4510, %wide.trip.count3077
  %min.iters.check4492 = icmp ult i32 %0, 4
  %n.vec4495 = and i64 %wide.trip.count3077, 4294967292
  %cmp.n4504 = icmp eq i64 %n.vec4495, %wide.trip.count3077
  %min.iters.check4475 = icmp ult i32 %0, 4
  %n.vec4478 = and i64 %wide.trip.count3077, 4294967292
  %broadcast.splatinsert4484 = insertelement <2 x double> poison, double %350, i64 0
  %broadcast.splat4485 = shufflevector <2 x double> %broadcast.splatinsert4484, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert4486 = insertelement <2 x double> poison, double %348, i64 0
  %broadcast.splat4487 = shufflevector <2 x double> %broadcast.splatinsert4486, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n4489 = icmp eq i64 %n.vec4478, %wide.trip.count3077
  %xtraiter5581 = and i64 %wide.trip.count3077, 1
  %lcmp.mod5582.not = icmp eq i64 %xtraiter5581, 0
  %392 = add nsw i64 %wide.trip.count3077, -1
  %xtraiter5584 = and i64 %wide.trip.count3077, 3
  %393 = icmp ult i32 %0, 4
  %unroll_iter5588 = and i64 %wide.trip.count3077, 4294967292
  %lcmp.mod5586.not = icmp eq i64 %xtraiter5584, 0
  %xtraiter5590 = and i64 %wide.trip.count3077, 1
  %394 = icmp eq i64 %178, 0
  %unroll_iter5594 = and i64 %wide.trip.count3077, 4294967294
  %lcmp.mod5592.not = icmp eq i64 %xtraiter5590, 0
  br label %.preheader1694.preheader.outer

.preheader1694.preheader.outer:                   ; preds = %cdce.end, %345
  %.11527.ph = phi double [ %.21489, %cdce.end ], [ %.01526, %345 ]
  %.11518.ph = phi double [ %.71524, %cdce.end ], [ %141, %345 ]
  %.21506.ph = phi double [ %.61510, %cdce.end ], [ %.11505, %345 ]
  %.01491.ph = phi i32 [ 2, %cdce.end ], [ 0, %345 ]
  %.01487.ph = phi double [ %.21489, %cdce.end ], [ %141, %345 ]
  %.11481.ph = phi i32 [ %.51485, %cdce.end ], [ 0, %345 ]
  %.11474.ph = phi double [ %.51478, %cdce.end ], [ 1.000000e+00, %345 ]
  %.11461.ph = phi double [ %1531, %cdce.end ], [ %.01460, %345 ]
  %.01438.ph = phi double [ %.31441, %cdce.end ], [ %.21447, %345 ]
  %.01408.ph = phi i32 [ %.31411, %cdce.end ], [ undef, %345 ]
  %.01372.ph = phi i32 [ %spec.select1644, %cdce.end ], [ 0, %345 ]
  %.01368.ph = phi i32 [ %.11369.ph, %cdce.end ], [ 0, %345 ]
  %.01366.ph = phi i32 [ %1525, %cdce.end ], [ 0, %345 ]
  %.01364.ph = phi i32 [ %.01364.ph4779, %cdce.end ], [ 0, %345 ]
  %.01360.ph = phi i32 [ %1443, %cdce.end ], [ 0, %345 ]
  %.01357.ph = phi i64 [ %.01357.ph4802, %cdce.end ], [ 20, %345 ]
  %.01351.ph = phi i32 [ %440, %cdce.end ], [ 0, %345 ]
  %.01346.ph = phi i32 [ %.31349, %cdce.end ], [ 0, %345 ]
  %.01335.ph = phi i32 [ %.51340, %cdce.end ], [ undef, %345 ]
  %.01327.ph = phi i32 [ %.11328, %cdce.end ], [ 0, %345 ]
  %.21316.ph = phi i32 [ %.8, %cdce.end ], [ %.11315, %345 ]
  %.01309.ph = phi ptr [ %1532, %cdce.end ], [ null, %345 ]
  %395 = icmp ugt i32 %.01366.ph, 3
  br label %.preheader1694.preheader.outer4766

.preheader1694.preheader.outer4766:               ; preds = %.preheader1694.preheader.outer, %1696
  %.11527.ph4767 = phi double [ %.11527.ph, %.preheader1694.preheader.outer ], [ %1629, %1696 ]
  %.11518.ph4768 = phi double [ %.11518.ph, %.preheader1694.preheader.outer ], [ %.71524, %1696 ]
  %.21506.ph4769 = phi double [ %.21506.ph, %.preheader1694.preheader.outer ], [ %.61510, %1696 ]
  %.01491.ph4770 = phi i32 [ %.01491.ph, %.preheader1694.preheader.outer ], [ %.21493, %1696 ]
  %.01487.ph4771 = phi double [ %.01487.ph, %.preheader1694.preheader.outer ], [ %.21489, %1696 ]
  %.11481.ph4772 = phi i32 [ %.11481.ph, %.preheader1694.preheader.outer ], [ %.51485, %1696 ]
  %.11474.ph4773 = phi double [ %.11474.ph, %.preheader1694.preheader.outer ], [ %.51478, %1696 ]
  %.11461.ph4774 = phi double [ %.11461.ph, %.preheader1694.preheader.outer ], [ %1697, %1696 ]
  %.01438.ph4775 = phi double [ %.01438.ph, %.preheader1694.preheader.outer ], [ %.31441, %1696 ]
  %.01408.ph4776 = phi i32 [ %.01408.ph, %.preheader1694.preheader.outer ], [ %.31411, %1696 ]
  %.01372.ph4777 = phi i32 [ %.01372.ph, %.preheader1694.preheader.outer ], [ %spec.select1644, %1696 ]
  %.01368.ph4778 = phi i32 [ %.01368.ph, %.preheader1694.preheader.outer ], [ %.11369.ph, %1696 ]
  %.01364.ph4779 = phi i32 [ %.01364.ph, %.preheader1694.preheader.outer ], [ %1602, %1696 ]
  %.01360.ph4780 = phi i32 [ %.01360.ph, %.preheader1694.preheader.outer ], [ %.21362, %1696 ]
  %.01357.ph4781 = phi i64 [ %.01357.ph, %.preheader1694.preheader.outer ], [ %.01357.ph4802, %1696 ]
  %.01351.ph4782 = phi i32 [ %.01351.ph, %.preheader1694.preheader.outer ], [ %440, %1696 ]
  %.01346.ph4783 = phi i32 [ %.01346.ph, %.preheader1694.preheader.outer ], [ %.31349, %1696 ]
  %.01335.ph4784 = phi i32 [ %.01335.ph, %.preheader1694.preheader.outer ], [ %.51340, %1696 ]
  %.01327.ph4785 = phi i32 [ %.01327.ph, %.preheader1694.preheader.outer ], [ %.21329, %1696 ]
  %.21316.ph4786 = phi i32 [ %.21316.ph, %.preheader1694.preheader.outer ], [ %.8, %1696 ]
  %.01309.ph4787 = phi ptr [ %.01309.ph, %.preheader1694.preheader.outer ], [ %.2, %1696 ]
  br label %.preheader1694.preheader.outer4788

.preheader1694.preheader.outer4788:               ; preds = %.preheader1694.preheader.outer4766, %801
  %.11527.ph4789 = phi double [ %.11527.ph4767, %.preheader1694.preheader.outer4766 ], [ %.21528, %801 ]
  %.11518.ph4790 = phi double [ %.11518.ph4768, %.preheader1694.preheader.outer4766 ], [ %.21519, %801 ]
  %.21506.ph4791 = phi double [ %.21506.ph4769, %.preheader1694.preheader.outer4766 ], [ %.31507, %801 ]
  %.01491.ph4792 = phi i32 [ %.01491.ph4770, %.preheader1694.preheader.outer4766 ], [ %.21493, %801 ]
  %.01487.ph4793 = phi double [ %.01487.ph4771, %.preheader1694.preheader.outer4766 ], [ %.11488, %801 ]
  %.11481.ph4794 = phi i32 [ %.11481.ph4772, %.preheader1694.preheader.outer4766 ], [ %.21482, %801 ]
  %.11474.ph4795 = phi double [ %.11474.ph4773, %.preheader1694.preheader.outer4766 ], [ %.21475, %801 ]
  %.11461.ph4796 = phi double [ %.11461.ph4774, %.preheader1694.preheader.outer4766 ], [ %809, %801 ]
  %.01438.ph4797 = phi double [ %.01438.ph4775, %.preheader1694.preheader.outer4766 ], [ %.11439, %801 ]
  %.01408.ph4798 = phi i32 [ %.01408.ph4776, %.preheader1694.preheader.outer4766 ], [ %.31411, %801 ]
  %.01372.ph4799 = phi i32 [ %.01372.ph4777, %.preheader1694.preheader.outer4766 ], [ %.11373, %801 ]
  %.01368.ph4800 = phi i32 [ %.01368.ph4778, %.preheader1694.preheader.outer4766 ], [ %.11369.ph, %801 ]
  %.01360.ph4801 = phi i32 [ %.01360.ph4780, %.preheader1694.preheader.outer4766 ], [ %.11361, %801 ]
  %.01357.ph4802 = phi i64 [ %.01357.ph4781, %.preheader1694.preheader.outer4766 ], [ %.11358, %801 ]
  %.01351.ph4803 = phi i32 [ %.01351.ph4782, %.preheader1694.preheader.outer4766 ], [ %.11352, %801 ]
  %.01346.ph4804 = phi i32 [ %.01346.ph4783, %.preheader1694.preheader.outer4766 ], [ %.11347, %801 ]
  %.01335.ph4805 = phi i32 [ %.01335.ph4784, %.preheader1694.preheader.outer4766 ], [ %.11336, %801 ]
  %.01327.ph4806 = phi i32 [ %.01327.ph4785, %.preheader1694.preheader.outer4766 ], [ %.11328, %801 ]
  %.21316.ph4807 = phi i32 [ %.21316.ph4786, %.preheader1694.preheader.outer4766 ], [ %.31317, %801 ]
  %.01309.ph4808 = phi ptr [ %.01309.ph4787, %.preheader1694.preheader.outer4766 ], [ %.2, %801 ]
  br label %.preheader1694.preheader

.preheader1694.preheader:                         ; preds = %.preheader1694.preheader.backedge, %.preheader1694.preheader.outer4788
  %.11527 = phi double [ %.11527.ph4789, %.preheader1694.preheader.outer4788 ], [ %.11527.be, %.preheader1694.preheader.backedge ]
  %.11518 = phi double [ %.11518.ph4790, %.preheader1694.preheader.outer4788 ], [ %.71524, %.preheader1694.preheader.backedge ]
  %.21506 = phi double [ %.21506.ph4791, %.preheader1694.preheader.outer4788 ], [ %.61510, %.preheader1694.preheader.backedge ]
  %.01491 = phi i32 [ %.01491.ph4792, %.preheader1694.preheader.outer4788 ], [ %.01491.be, %.preheader1694.preheader.backedge ]
  %.01487 = phi double [ %.01487.ph4793, %.preheader1694.preheader.outer4788 ], [ %.01487.be, %.preheader1694.preheader.backedge ]
  %.11481 = phi i32 [ %.11481.ph4794, %.preheader1694.preheader.outer4788 ], [ %.11481.be, %.preheader1694.preheader.backedge ]
  %.11474 = phi double [ %.11474.ph4795, %.preheader1694.preheader.outer4788 ], [ %.11474.be, %.preheader1694.preheader.backedge ]
  %.11461 = phi double [ %.11461.ph4796, %.preheader1694.preheader.outer4788 ], [ %.11461.be, %.preheader1694.preheader.backedge ]
  %.01438 = phi double [ %.01438.ph4797, %.preheader1694.preheader.outer4788 ], [ %.01438.be, %.preheader1694.preheader.backedge ]
  %.01408 = phi i32 [ %.01408.ph4798, %.preheader1694.preheader.outer4788 ], [ %.31411, %.preheader1694.preheader.backedge ]
  %.01372 = phi i32 [ %.01372.ph4799, %.preheader1694.preheader.outer4788 ], [ %spec.select1644, %.preheader1694.preheader.backedge ]
  %.01368 = phi i32 [ %.01368.ph4800, %.preheader1694.preheader.outer4788 ], [ %.01368.be, %.preheader1694.preheader.backedge ]
  %.01360 = phi i32 [ %.01360.ph4801, %.preheader1694.preheader.outer4788 ], [ %.01360.be, %.preheader1694.preheader.backedge ]
  %.01351 = phi i32 [ %.01351.ph4803, %.preheader1694.preheader.outer4788 ], [ %.01351.be, %.preheader1694.preheader.backedge ]
  %.01346 = phi i32 [ %.01346.ph4804, %.preheader1694.preheader.outer4788 ], [ %.01346.be, %.preheader1694.preheader.backedge ]
  %.01335 = phi i32 [ %.01335.ph4805, %.preheader1694.preheader.outer4788 ], [ %.01335.be, %.preheader1694.preheader.backedge ]
  %.01327 = phi i32 [ %.01327.ph4806, %.preheader1694.preheader.outer4788 ], [ %.01327.be, %.preheader1694.preheader.backedge ]
  %.21316 = phi i32 [ %.21316.ph4807, %.preheader1694.preheader.outer4788 ], [ %.21316.be, %.preheader1694.preheader.backedge ]
  %.01309 = phi ptr [ %.01309.ph4808, %.preheader1694.preheader.outer4788 ], [ %.01309.be, %.preheader1694.preheader.backedge ]
  br label %.preheader1694

.preheader1694:                                   ; preds = %.preheader1694.preheader, %.loopexit4752
  %indvars.iv3115 = phi i64 [ 0, %.preheader1694.preheader ], [ %indvars.iv.next3116, %.loopexit4752 ]
  %396 = trunc nuw i64 %indvars.iv3115 to i32
  %397 = mul i32 %396, %0
  br i1 %min.iters.check4743, label %scalar.ph4742.preheader, label %vector.scevcheck4740

vector.scevcheck4740:                             ; preds = %.preheader1694
  %398 = trunc i64 %indvars.iv3115 to i32
  %399 = mul i32 %398, %0
  %400 = xor i32 %399, -1
  %401 = icmp ult i32 %400, %368
  %402 = or i1 %401, %369
  br i1 %402, label %scalar.ph4742.preheader, label %vector.body4748

vector.body4748:                                  ; preds = %vector.scevcheck4740, %vector.body4748
  %index4749 = phi i64 [ %index.next4750, %vector.body4748 ], [ 0, %vector.scevcheck4740 ]
  %403 = trunc i64 %index4749 to i32
  %404 = add i32 %397, %403
  %405 = zext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %calloc, i64 %405
  %407 = getelementptr inbounds i8, ptr %406, i64 16
  store <2 x double> zeroinitializer, ptr %406, align 8, !tbaa !5
  store <2 x double> zeroinitializer, ptr %407, align 8, !tbaa !5
  %index.next4750 = add nuw i64 %index4749, 4
  %408 = icmp eq i64 %index.next4750, %n.vec4746
  br i1 %408, label %middle.block4741, label %vector.body4748, !llvm.loop !26

middle.block4741:                                 ; preds = %vector.body4748
  br i1 %cmp.n4751, label %.loopexit4752, label %scalar.ph4742.preheader

scalar.ph4742.preheader:                          ; preds = %middle.block4741, %vector.scevcheck4740, %.preheader1694
  %indvars.iv3109.ph = phi i64 [ 0, %vector.scevcheck4740 ], [ 0, %.preheader1694 ], [ %n.vec4746, %middle.block4741 ]
  %409 = sub nsw i64 %364, %indvars.iv3109.ph
  br i1 %lcmp.mod5429.not, label %scalar.ph4742.prol.loopexit, label %scalar.ph4742.prol

scalar.ph4742.prol:                               ; preds = %scalar.ph4742.preheader, %scalar.ph4742.prol
  %indvars.iv3109.prol = phi i64 [ %indvars.iv.next3110.prol, %scalar.ph4742.prol ], [ %indvars.iv3109.ph, %scalar.ph4742.preheader ]
  %prol.iter5430 = phi i64 [ %prol.iter5430.next, %scalar.ph4742.prol ], [ 0, %scalar.ph4742.preheader ]
  %410 = trunc nuw i64 %indvars.iv3109.prol to i32
  %411 = add i32 %397, %410
  %412 = zext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %calloc, i64 %412
  store double 0.000000e+00, ptr %413, align 8, !tbaa !5
  %indvars.iv.next3110.prol = add nuw nsw i64 %indvars.iv3109.prol, 1
  %prol.iter5430.next = add i64 %prol.iter5430, 1
  %prol.iter5430.cmp.not = icmp eq i64 %prol.iter5430.next, %xtraiter5428
  br i1 %prol.iter5430.cmp.not, label %scalar.ph4742.prol.loopexit, label %scalar.ph4742.prol, !llvm.loop !27

scalar.ph4742.prol.loopexit:                      ; preds = %scalar.ph4742.prol, %scalar.ph4742.preheader
  %indvars.iv3109.unr = phi i64 [ %indvars.iv3109.ph, %scalar.ph4742.preheader ], [ %indvars.iv.next3110.prol, %scalar.ph4742.prol ]
  %414 = icmp ult i64 %409, 3
  br i1 %414, label %.loopexit4752, label %scalar.ph4742

scalar.ph4742:                                    ; preds = %scalar.ph4742.prol.loopexit, %scalar.ph4742
  %indvars.iv3109 = phi i64 [ %indvars.iv.next3110.3, %scalar.ph4742 ], [ %indvars.iv3109.unr, %scalar.ph4742.prol.loopexit ]
  %415 = trunc nuw i64 %indvars.iv3109 to i32
  %416 = add i32 %397, %415
  %417 = zext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %calloc, i64 %417
  store double 0.000000e+00, ptr %418, align 8, !tbaa !5
  %419 = trunc i64 %indvars.iv3109 to i32
  %420 = add i32 %419, 1
  %421 = add i32 %397, %420
  %422 = zext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %calloc, i64 %422
  store double 0.000000e+00, ptr %423, align 8, !tbaa !5
  %424 = trunc i64 %indvars.iv3109 to i32
  %425 = add i32 %424, 2
  %426 = add i32 %397, %425
  %427 = zext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %calloc, i64 %427
  store double 0.000000e+00, ptr %428, align 8, !tbaa !5
  %429 = trunc i64 %indvars.iv3109 to i32
  %430 = add i32 %429, 3
  %431 = add i32 %397, %430
  %432 = zext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %calloc, i64 %432
  store double 0.000000e+00, ptr %433, align 8, !tbaa !5
  %indvars.iv.next3110.3 = add nuw nsw i64 %indvars.iv3109, 4
  %exitcond3114.not.3 = icmp eq i64 %indvars.iv.next3110.3, %wide.trip.count3118
  br i1 %exitcond3114.not.3, label %.loopexit4752, label %scalar.ph4742, !llvm.loop !28

.loopexit4752:                                    ; preds = %scalar.ph4742.prol.loopexit, %scalar.ph4742, %middle.block4741
  %434 = mul i32 %.913871627, %396
  %435 = zext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %calloc, i64 %435
  store double 1.000000e+00, ptr %436, align 8, !tbaa !5
  %437 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3115
  %438 = load double, ptr %437, align 8, !tbaa !5
  %439 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3115
  store double %438, ptr %439, align 8, !tbaa !5
  %indvars.iv.next3116 = add nuw nsw i64 %indvars.iv3115, 1
  %exitcond3119.not = icmp eq i64 %indvars.iv.next3116, %wide.trip.count3118
  br i1 %exitcond3119.not, label %.thread1657.outer, label %.preheader1694, !llvm.loop !29

.thread1657:                                      ; preds = %.thread1657.backedge, %.thread1657.outer
  %indvars.iv3323 = phi i64 [ %indvars.iv3323.ph, %.thread1657.outer ], [ %indvars.iv.next3324, %.thread1657.backedge ]
  %.21528 = phi double [ %.21528.ph, %.thread1657.outer ], [ %.61532, %.thread1657.backedge ]
  %.21519 = phi double [ %.21519.ph, %.thread1657.outer ], [ %.71524, %.thread1657.backedge ]
  %.31507 = phi double [ %.31507.ph, %.thread1657.outer ], [ %.61510, %.thread1657.backedge ]
  %.11492 = phi i32 [ %.11492.ph, %.thread1657.outer ], [ %.21493, %.thread1657.backedge ]
  %.11488 = phi double [ %.11488.ph, %.thread1657.outer ], [ %.21489, %.thread1657.backedge ]
  %.21482 = phi i32 [ %.21482.ph, %.thread1657.outer ], [ %.51485, %.thread1657.backedge ]
  %.21475 = phi double [ %.21475.ph, %.thread1657.outer ], [ %.51478, %.thread1657.backedge ]
  %.21462 = phi double [ %.21462.ph, %.thread1657.outer ], [ %.51465, %.thread1657.backedge ]
  %.01456 = phi double [ %.01456.ph, %.thread1657.outer ], [ %1001, %.thread1657.backedge ]
  %.11439 = phi double [ %.11439.ph, %.thread1657.outer ], [ %.31441, %.thread1657.backedge ]
  %.01417 = phi i32 [ %.01417.ph, %.thread1657.outer ], [ %spec.select1643, %.thread1657.backedge ]
  %.01412 = phi i32 [ %.01412.ph, %.thread1657.outer ], [ %.11413, %.thread1657.backedge ]
  %.11409 = phi i32 [ %.11409.ph, %.thread1657.outer ], [ %.31411, %.thread1657.backedge ]
  %.11373 = phi i32 [ %.11373.ph, %.thread1657.outer ], [ %spec.select1644, %.thread1657.backedge ]
  %.11361 = phi i32 [ %.11361.ph, %.thread1657.outer ], [ %.21362, %.thread1657.backedge ]
  %.11352 = phi i32 [ %.11352.ph, %.thread1657.outer ], [ %440, %.thread1657.backedge ]
  %.11347 = phi i32 [ %.11347.ph, %.thread1657.outer ], [ %.31349, %.thread1657.backedge ]
  %.11336 = phi i32 [ %.11336.ph, %.thread1657.outer ], [ %.51340, %.thread1657.backedge ]
  %.11328 = phi i32 [ %.11328.ph, %.thread1657.outer ], [ %.21329, %.thread1657.backedge ]
  %.31317 = phi i32 [ %.31317.ph, %.thread1657.outer ], [ %.8, %.thread1657.backedge ]
  %.11310 = phi ptr [ %.11310.ph, %.thread1657.outer ], [ %.2, %.thread1657.backedge ]
  %440 = add i32 %.11352, 1
  %indvars.iv.next3324 = add nuw nsw i64 %indvars.iv3323, 1
  %indvars = trunc i64 %indvars.iv.next3324 to i32
  %441 = and i64 %indvars.iv.next3324, 4294967295
  %442 = sub nsw i64 %.01357.ph4802, %441
  %443 = mul nsw i64 %442, %24
  %444 = sitofp i64 %443 to double
  %445 = tail call double @pow(double noundef %129, double noundef %444) #10
  %446 = load double, ptr %72, align 8, !tbaa !5
  %447 = fmul double %446, 2.000000e+00
  %448 = fcmp ogt double %445, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %.thread1657
  %450 = tail call double @pow(double noundef %129, double noundef %444) #10
  br label %451

451:                                              ; preds = %.thread1657, %449
  %452 = phi double [ %450, %449 ], [ %447, %.thread1657 ]
  %453 = fadd double %452, 1.000000e+00
  %454 = fadd double %.11439, 1.000000e+00
  %455 = tail call double @log10(double noundef %454) #10
  %456 = fcmp olt double %455, 1.000000e+00
  br i1 %456, label %459, label %457

457:                                              ; preds = %451
  %458 = tail call double @log10(double noundef %454) #10
  br label %459

459:                                              ; preds = %451, %457
  %460 = phi double [ %458, %457 ], [ 1.000000e+00, %451 ]
  %461 = tail call double @pow(double noundef 1.150000e+00, double noundef %460) #10
  %462 = fcmp olt double %453, %461
  br i1 %462, label %.preheader1668.preheader, label %463

463:                                              ; preds = %459
  %464 = tail call double @log10(double noundef %454) #10
  %465 = fcmp olt double %464, 1.000000e+00
  br i1 %465, label %468, label %466

466:                                              ; preds = %463
  %467 = tail call double @log10(double noundef %454) #10
  br label %468

468:                                              ; preds = %463, %466
  %469 = phi double [ %467, %466 ], [ 1.000000e+00, %463 ]
  %470 = tail call double @pow(double noundef 1.150000e+00, double noundef %469) #10
  br label %.preheader1668.preheader

.preheader1668.preheader:                         ; preds = %468, %459
  %471 = phi double [ %470, %468 ], [ %453, %459 ]
  br label %.preheader1668

.preheader1668:                                   ; preds = %.preheader1668.preheader, %.epilog-lcssa
  %indvars.iv3125 = phi i64 [ 0, %.preheader1668.preheader ], [ %indvars.iv.next3126, %.epilog-lcssa ]
  %.014362277 = phi double [ 0.000000e+00, %.preheader1668.preheader ], [ %518, %.epilog-lcssa ]
  %472 = phi <2 x double> [ zeroinitializer, %.preheader1668.preheader ], [ %522, %.epilog-lcssa ]
  %473 = trunc nuw i64 %indvars.iv3125 to i32
  %474 = mul i32 %473, %0
  br i1 %370, label %.unr-lcssa, label %.preheader1668.new

.preheader1668.new:                               ; preds = %.preheader1668, %.preheader1668.new
  %indvars.iv3120 = phi i64 [ %indvars.iv.next3121.3, %.preheader1668.new ], [ 0, %.preheader1668 ]
  %.214242275 = phi double [ %506, %.preheader1668.new ], [ 0.000000e+00, %.preheader1668 ]
  %niter5436 = phi i64 [ %niter5436.next.3, %.preheader1668.new ], [ 0, %.preheader1668 ]
  %475 = trunc nuw i64 %indvars.iv3120 to i32
  %476 = add i32 %474, %475
  %477 = zext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %calloc, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !5
  %480 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3120
  %481 = load double, ptr %480, align 8, !tbaa !5
  %482 = tail call double @llvm.fmuladd.f64(double %479, double %481, double %.214242275)
  %indvars.iv.next3121 = or disjoint i64 %indvars.iv3120, 1
  %483 = trunc nuw i64 %indvars.iv.next3121 to i32
  %484 = add i32 %474, %483
  %485 = zext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %calloc, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3121
  %489 = load double, ptr %488, align 8, !tbaa !5
  %490 = tail call double @llvm.fmuladd.f64(double %487, double %489, double %482)
  %indvars.iv.next3121.1 = or disjoint i64 %indvars.iv3120, 2
  %491 = trunc nuw i64 %indvars.iv.next3121.1 to i32
  %492 = add i32 %474, %491
  %493 = zext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %calloc, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3121.1
  %497 = load double, ptr %496, align 8, !tbaa !5
  %498 = tail call double @llvm.fmuladd.f64(double %495, double %497, double %490)
  %indvars.iv.next3121.2 = or disjoint i64 %indvars.iv3120, 3
  %499 = trunc nuw i64 %indvars.iv.next3121.2 to i32
  %500 = add i32 %474, %499
  %501 = zext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %calloc, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !5
  %504 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3121.2
  %505 = load double, ptr %504, align 8, !tbaa !5
  %506 = tail call double @llvm.fmuladd.f64(double %503, double %505, double %498)
  %indvars.iv.next3121.3 = add nuw nsw i64 %indvars.iv3120, 4
  %niter5436.next.3 = add i64 %niter5436, 4
  %niter5436.ncmp.3 = icmp eq i64 %niter5436.next.3, %unroll_iter5435
  br i1 %niter5436.ncmp.3, label %.unr-lcssa, label %.preheader1668.new, !llvm.loop !30

.unr-lcssa:                                       ; preds = %.preheader1668.new, %.preheader1668
  %.lcssa.ph = phi double [ poison, %.preheader1668 ], [ %506, %.preheader1668.new ]
  %indvars.iv3120.unr = phi i64 [ 0, %.preheader1668 ], [ %indvars.iv.next3121.3, %.preheader1668.new ]
  %.214242275.unr = phi double [ 0.000000e+00, %.preheader1668 ], [ %506, %.preheader1668.new ]
  br i1 %lcmp.mod5433.not, label %.epilog-lcssa, label %.epil.preheader

.epil.preheader:                                  ; preds = %.unr-lcssa, %.epil.preheader
  %indvars.iv3120.epil = phi i64 [ %indvars.iv.next3121.epil, %.epil.preheader ], [ %indvars.iv3120.unr, %.unr-lcssa ]
  %.214242275.epil = phi double [ %514, %.epil.preheader ], [ %.214242275.unr, %.unr-lcssa ]
  %epil.iter5432 = phi i64 [ %epil.iter5432.next, %.epil.preheader ], [ 0, %.unr-lcssa ]
  %507 = trunc nuw i64 %indvars.iv3120.epil to i32
  %508 = add i32 %474, %507
  %509 = zext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %calloc, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !5
  %512 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3120.epil
  %513 = load double, ptr %512, align 8, !tbaa !5
  %514 = tail call double @llvm.fmuladd.f64(double %511, double %513, double %.214242275.epil)
  %indvars.iv.next3121.epil = add nuw nsw i64 %indvars.iv3120.epil, 1
  %epil.iter5432.next = add i64 %epil.iter5432, 1
  %epil.iter5432.cmp.not = icmp eq i64 %epil.iter5432.next, %xtraiter5431
  br i1 %epil.iter5432.cmp.not, label %.epilog-lcssa, label %.epil.preheader, !llvm.loop !31

.epilog-lcssa:                                    ; preds = %.epil.preheader, %.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %.unr-lcssa ], [ %514, %.epil.preheader ]
  %515 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3125
  store double %.lcssa, ptr %515, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3125
  %517 = load double, ptr %516, align 8, !tbaa !5
  %518 = tail call double @llvm.fmuladd.f64(double %.lcssa, double %.lcssa, double %.014362277)
  %519 = insertelement <2 x double> poison, double %.lcssa, i64 0
  %520 = insertelement <2 x double> %519, double %517, i64 1
  %521 = shufflevector <2 x double> %520, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %522 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %520, <2 x double> %521, <2 x double> %472)
  %indvars.iv.next3126 = add nuw nsw i64 %indvars.iv3125, 1
  %exitcond3129.not = icmp eq i64 %indvars.iv.next3126, %wide.trip.count3128
  br i1 %exitcond3129.not, label %._crit_edge2281, label %.preheader1668, !llvm.loop !32

._crit_edge2281:                                  ; preds = %.epilog-lcssa
  %523 = tail call double @sqrt(double noundef %518) #10
  %524 = extractelement <2 x double> %522, i64 1
  %525 = tail call double @sqrt(double noundef %524) #10
  %526 = fmul double %523, %525
  %527 = extractelement <2 x double> %522, i64 0
  %528 = fdiv double %527, %526
  %529 = fcmp olt double %528, -9.999000e-01
  br i1 %529, label %530, label %.lr.ph2294.preheader

530:                                              ; preds = %._crit_edge2281
  switch i32 %.01412, label %._crit_edge2287 [
    i32 2, label %.lr.ph2286.preheader
    i32 0, label %531
  ]

.lr.ph2286.preheader:                             ; preds = %530
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %37, ptr noundef nonnull align 8 dereferenceable(1) %1, i64 %356, i1 false), !tbaa !5
  br label %._crit_edge2287

531:                                              ; preds = %530
  br label %._crit_edge2287

._crit_edge2287:                                  ; preds = %.lr.ph2286.preheader, %530, %531
  %.21410 = phi i32 [ 4, %531 ], [ %.11409, %530 ], [ %.11409, %.lr.ph2286.preheader ]
  %532 = add i32 %.01412, 1
  %533 = fmul double %.21462, 2.000000e+00
  %534 = shl i32 %.21410, 1
  %535 = icmp ugt i32 %532, %534
  br i1 %535, label %.lr.ph2290.preheader, label %.lr.ph2294.preheader

.lr.ph2290.preheader:                             ; preds = %._crit_edge2287
  %536 = add i32 %.21410, 1
  %537 = load ptr, ptr @endwarn1, align 8, !tbaa !33
  br label %.lr.ph2290

.lr.ph2290:                                       ; preds = %.lr.ph2290.preheader, %549
  %indvars.iv3134 = phi i64 [ 0, %.lr.ph2290.preheader ], [ %indvars.iv.next3135, %549 ]
  %538 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3134
  %539 = load double, ptr %538, align 8, !tbaa !5
  %540 = getelementptr inbounds double, ptr %37, i64 %indvars.iv3134
  %541 = load double, ptr %540, align 8, !tbaa !5
  %542 = fsub double %539, %541
  %543 = tail call double @llvm.fabs.f64(double %542)
  %544 = tail call double @llvm.fabs.f64(double %539)
  %545 = fmul double %544, 0x3CB0000000000000
  %546 = fcmp olt double %543, %545
  %or.cond31 = and i1 %132, %546
  br i1 %or.cond31, label %547, label %549

547:                                              ; preds = %.lr.ph2290
  %548 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  br label %549

549:                                              ; preds = %.lr.ph2290, %547
  %indvars.iv.next3135 = add nuw nsw i64 %indvars.iv3134, 1
  %exitcond3138.not = icmp eq i64 %indvars.iv.next3135, %wide.trip.count3137
  br i1 %exitcond3138.not, label %.lr.ph2294.preheader, label %.lr.ph2290, !llvm.loop !35

.lr.ph2294.preheader:                             ; preds = %549, %._crit_edge2287, %._crit_edge2281
  %.21493 = phi i32 [ %.11492, %._crit_edge2287 ], [ %.11492, %._crit_edge2281 ], [ 1, %549 ]
  %.01470 = phi double [ -9.000000e-01, %._crit_edge2287 ], [ %126, %._crit_edge2281 ], [ -9.000000e-01, %549 ]
  %.31463 = phi double [ %533, %._crit_edge2287 ], [ %.21462, %._crit_edge2281 ], [ %533, %549 ]
  %.11413 = phi i32 [ %532, %._crit_edge2287 ], [ 0, %._crit_edge2281 ], [ %532, %549 ]
  %.31411 = phi i32 [ %.21410, %._crit_edge2287 ], [ %.11409, %._crit_edge2281 ], [ %536, %549 ]
  %.2 = phi ptr [ %.11310, %._crit_edge2287 ], [ %.11310, %._crit_edge2281 ], [ %537, %549 ]
  br i1 %371, label %._crit_edge2295.unr-lcssa, label %.lr.ph2294

.lr.ph2294:                                       ; preds = %.lr.ph2294.preheader, %.lr.ph2294
  %indvars.iv3139 = phi i64 [ %indvars.iv.next3140.1, %.lr.ph2294 ], [ 0, %.lr.ph2294.preheader ]
  %.014342291 = phi double [ %563, %.lr.ph2294 ], [ 0.000000e+00, %.lr.ph2294.preheader ]
  %niter5442 = phi i64 [ %niter5442.next.1, %.lr.ph2294 ], [ 0, %.lr.ph2294.preheader ]
  %550 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3139
  %551 = load double, ptr %550, align 8, !tbaa !5
  %552 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3139
  %553 = load double, ptr %552, align 8, !tbaa !5
  %554 = fsub double %551, %553
  %555 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3139
  store double %554, ptr %555, align 8, !tbaa !5
  %556 = tail call double @llvm.fmuladd.f64(double %554, double %554, double %.014342291)
  %indvars.iv.next3140 = or disjoint i64 %indvars.iv3139, 1
  %557 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3140
  %558 = load double, ptr %557, align 8, !tbaa !5
  %559 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next3140
  %560 = load double, ptr %559, align 8, !tbaa !5
  %561 = fsub double %558, %560
  %562 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3140
  store double %561, ptr %562, align 8, !tbaa !5
  %563 = tail call double @llvm.fmuladd.f64(double %561, double %561, double %556)
  %indvars.iv.next3140.1 = add nuw nsw i64 %indvars.iv3139, 2
  %niter5442.next.1 = add i64 %niter5442, 2
  %niter5442.ncmp.1 = icmp eq i64 %niter5442.next.1, %unroll_iter5441
  br i1 %niter5442.ncmp.1, label %._crit_edge2295.unr-lcssa, label %.lr.ph2294, !llvm.loop !36

._crit_edge2295.unr-lcssa:                        ; preds = %.lr.ph2294, %.lr.ph2294.preheader
  %.lcssa4811.ph = phi double [ poison, %.lr.ph2294.preheader ], [ %563, %.lr.ph2294 ]
  %indvars.iv3139.unr = phi i64 [ 0, %.lr.ph2294.preheader ], [ %indvars.iv.next3140.1, %.lr.ph2294 ]
  %.014342291.unr = phi double [ 0.000000e+00, %.lr.ph2294.preheader ], [ %563, %.lr.ph2294 ]
  br i1 %lcmp.mod5439.not, label %._crit_edge2295, label %.lr.ph2294.epil

.lr.ph2294.epil:                                  ; preds = %._crit_edge2295.unr-lcssa
  %564 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3139.unr
  %565 = load double, ptr %564, align 8, !tbaa !5
  %566 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3139.unr
  %567 = load double, ptr %566, align 8, !tbaa !5
  %568 = fsub double %565, %567
  %569 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3139.unr
  store double %568, ptr %569, align 8, !tbaa !5
  %570 = tail call double @llvm.fmuladd.f64(double %568, double %568, double %.014342291.unr)
  br label %._crit_edge2295

._crit_edge2295:                                  ; preds = %._crit_edge2295.unr-lcssa, %.lr.ph2294.epil
  %.lcssa4811 = phi double [ %.lcssa4811.ph, %._crit_edge2295.unr-lcssa ], [ %570, %.lr.ph2294.epil ]
  %571 = tail call double @sqrt(double noundef %.lcssa4811) #10
  %572 = fmul double %523, 0x3CB0000000000000
  %573 = fcmp ogt double %571, %572
  br i1 %573, label %vector.ph4729, label %.lr.ph2298.preheader

vector.ph4729:                                    ; preds = %._crit_edge2295
  %broadcast.splatinsert4736 = insertelement <2 x double> poison, double %571, i64 0
  %broadcast.splat4737 = shufflevector <2 x double> %broadcast.splatinsert4736, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4733

vector.body4733:                                  ; preds = %vector.body4733, %vector.ph4729
  %index4734 = phi i64 [ 0, %vector.ph4729 ], [ %index.next4738, %vector.body4733 ]
  %574 = getelementptr inbounds double, ptr %32, i64 %index4734
  %wide.load4735 = load <2 x double>, ptr %574, align 8, !tbaa !5
  %575 = fdiv <2 x double> %wide.load4735, %broadcast.splat4737
  store <2 x double> %575, ptr %574, align 8, !tbaa !5
  %index.next4738 = add nuw i64 %index4734, 2
  %576 = icmp eq i64 %index.next4738, %n.vec4731
  br i1 %576, label %middle.block4726, label %vector.body4733, !llvm.loop !37

middle.block4726:                                 ; preds = %vector.body4733
  br i1 %cmp.n4739, label %.lr.ph2303.preheader, label %.lr.ph2300

.lr.ph2298.preheader:                             ; preds = %._crit_edge2295
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, i8 0, i64 %356, i1 false), !tbaa !5
  br label %vector.ph4693

.lr.ph2300:                                       ; preds = %middle.block4726, %.lr.ph2300
  %indvars.iv3148 = phi i64 [ %indvars.iv.next3149, %.lr.ph2300 ], [ %n.vec4731, %middle.block4726 ]
  %577 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3148
  %578 = load double, ptr %577, align 8, !tbaa !5
  %579 = fdiv double %578, %571
  store double %579, ptr %577, align 8, !tbaa !5
  %indvars.iv.next3149 = add nuw nsw i64 %indvars.iv3148, 1
  %exitcond3152.not = icmp eq i64 %indvars.iv.next3149, %wide.trip.count3151
  br i1 %exitcond3152.not, label %.lr.ph2303.preheader, label %.lr.ph2300, !llvm.loop !38

.lr.ph2303.preheader:                             ; preds = %.lr.ph2300, %middle.block4726
  br i1 %372, label %.lr.ph2315.preheader.unr-lcssa, label %.lr.ph2303

.lr.ph2303:                                       ; preds = %.lr.ph2303.preheader, %.lr.ph2303
  %indvars.iv3153 = phi i64 [ %indvars.iv.next3154.3, %.lr.ph2303 ], [ 0, %.lr.ph2303.preheader ]
  %.314252301 = phi double [ %599, %.lr.ph2303 ], [ 0.000000e+00, %.lr.ph2303.preheader ]
  %niter5448 = phi i64 [ %niter5448.next.3, %.lr.ph2303 ], [ 0, %.lr.ph2303.preheader ]
  %580 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3153
  %581 = load double, ptr %580, align 8, !tbaa !5
  %582 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3153
  %583 = load double, ptr %582, align 8, !tbaa !5
  %584 = tail call double @llvm.fmuladd.f64(double %581, double %583, double %.314252301)
  %indvars.iv.next3154 = or disjoint i64 %indvars.iv3153, 1
  %585 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3154
  %586 = load double, ptr %585, align 8, !tbaa !5
  %587 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3154
  %588 = load double, ptr %587, align 8, !tbaa !5
  %589 = tail call double @llvm.fmuladd.f64(double %586, double %588, double %584)
  %indvars.iv.next3154.1 = or disjoint i64 %indvars.iv3153, 2
  %590 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3154.1
  %591 = load double, ptr %590, align 8, !tbaa !5
  %592 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3154.1
  %593 = load double, ptr %592, align 8, !tbaa !5
  %594 = tail call double @llvm.fmuladd.f64(double %591, double %593, double %589)
  %indvars.iv.next3154.2 = or disjoint i64 %indvars.iv3153, 3
  %595 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3154.2
  %596 = load double, ptr %595, align 8, !tbaa !5
  %597 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3154.2
  %598 = load double, ptr %597, align 8, !tbaa !5
  %599 = tail call double @llvm.fmuladd.f64(double %596, double %598, double %594)
  %indvars.iv.next3154.3 = add nuw nsw i64 %indvars.iv3153, 4
  %niter5448.next.3 = add i64 %niter5448, 4
  %niter5448.ncmp.3 = icmp eq i64 %niter5448.next.3, %unroll_iter5447
  br i1 %niter5448.ncmp.3, label %.lr.ph2315.preheader.unr-lcssa, label %.lr.ph2303, !llvm.loop !39

.lr.ph2315.preheader.unr-lcssa:                   ; preds = %.lr.ph2303, %.lr.ph2303.preheader
  %.lcssa4812.ph = phi double [ poison, %.lr.ph2303.preheader ], [ %599, %.lr.ph2303 ]
  %indvars.iv3153.unr = phi i64 [ 0, %.lr.ph2303.preheader ], [ %indvars.iv.next3154.3, %.lr.ph2303 ]
  %.314252301.unr = phi double [ 0.000000e+00, %.lr.ph2303.preheader ], [ %599, %.lr.ph2303 ]
  br i1 %lcmp.mod5445.not, label %.lr.ph2315.preheader, label %.lr.ph2303.epil

.lr.ph2303.epil:                                  ; preds = %.lr.ph2315.preheader.unr-lcssa, %.lr.ph2303.epil
  %indvars.iv3153.epil = phi i64 [ %indvars.iv.next3154.epil, %.lr.ph2303.epil ], [ %indvars.iv3153.unr, %.lr.ph2315.preheader.unr-lcssa ]
  %.314252301.epil = phi double [ %604, %.lr.ph2303.epil ], [ %.314252301.unr, %.lr.ph2315.preheader.unr-lcssa ]
  %epil.iter5444 = phi i64 [ %epil.iter5444.next, %.lr.ph2303.epil ], [ 0, %.lr.ph2315.preheader.unr-lcssa ]
  %600 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3153.epil
  %601 = load double, ptr %600, align 8, !tbaa !5
  %602 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3153.epil
  %603 = load double, ptr %602, align 8, !tbaa !5
  %604 = tail call double @llvm.fmuladd.f64(double %601, double %603, double %.314252301.epil)
  %indvars.iv.next3154.epil = add nuw nsw i64 %indvars.iv3153.epil, 1
  %epil.iter5444.next = add i64 %epil.iter5444, 1
  %epil.iter5444.cmp.not = icmp eq i64 %epil.iter5444.next, %xtraiter5443
  br i1 %epil.iter5444.cmp.not, label %.lr.ph2315.preheader, label %.lr.ph2303.epil, !llvm.loop !40

.lr.ph2315.preheader:                             ; preds = %.lr.ph2303.epil, %.lr.ph2315.preheader.unr-lcssa
  %.lcssa4812 = phi double [ %.lcssa4812.ph, %.lr.ph2315.preheader.unr-lcssa ], [ %604, %.lr.ph2303.epil ]
  %605 = fmul double %.01470, %.lcssa4812
  br label %.lr.ph2315

.lr.ph2315:                                       ; preds = %.lr.ph2315.preheader, %._crit_edge2311
  %indvars.iv3168 = phi i64 [ 0, %.lr.ph2315.preheader ], [ %indvars.iv.next3169, %._crit_edge2311 ]
  %.114322312 = phi double [ 0.000000e+00, %.lr.ph2315.preheader ], [ %668, %._crit_edge2311 ]
  %606 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3168
  %607 = load double, ptr %606, align 8, !tbaa !5
  %608 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3168
  %609 = load double, ptr %608, align 8, !tbaa !5
  %610 = tail call double @llvm.fmuladd.f64(double %605, double %609, double %607)
  %611 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3168
  store double %610, ptr %611, align 8, !tbaa !5
  %612 = trunc nuw i64 %indvars.iv3168 to i32
  br i1 %373, label %.lr.ph2310.unr-lcssa, label %.lr.ph2315.new

.lr.ph2315.new:                                   ; preds = %.lr.ph2315, %.lr.ph2315.new
  %indvars.iv3158 = phi i64 [ %indvars.iv.next3159.1, %.lr.ph2315.new ], [ 0, %.lr.ph2315 ]
  %.114202306 = phi double [ %630, %.lr.ph2315.new ], [ 0.000000e+00, %.lr.ph2315 ]
  %niter5455 = phi i64 [ %niter5455.next.1, %.lr.ph2315.new ], [ 0, %.lr.ph2315 ]
  %613 = trunc nuw i64 %indvars.iv3158 to i32
  %614 = mul i32 %613, %0
  %615 = add i32 %614, %612
  %616 = zext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %calloc, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3158
  %620 = load double, ptr %619, align 8, !tbaa !5
  %621 = tail call double @llvm.fmuladd.f64(double %618, double %620, double %.114202306)
  %indvars.iv.next3159 = or disjoint i64 %indvars.iv3158, 1
  %622 = trunc nuw i64 %indvars.iv.next3159 to i32
  %623 = mul i32 %622, %0
  %624 = add i32 %623, %612
  %625 = zext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %calloc, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !5
  %628 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3159
  %629 = load double, ptr %628, align 8, !tbaa !5
  %630 = tail call double @llvm.fmuladd.f64(double %627, double %629, double %621)
  %indvars.iv.next3159.1 = add nuw nsw i64 %indvars.iv3158, 2
  %niter5455.next.1 = add i64 %niter5455, 2
  %niter5455.ncmp.1 = icmp eq i64 %niter5455.next.1, %unroll_iter5454
  br i1 %niter5455.ncmp.1, label %.lr.ph2310.unr-lcssa, label %.lr.ph2315.new, !llvm.loop !41

.lr.ph2310.unr-lcssa:                             ; preds = %.lr.ph2315.new, %.lr.ph2315
  %.lcssa4813.ph = phi double [ poison, %.lr.ph2315 ], [ %630, %.lr.ph2315.new ]
  %indvars.iv3158.unr = phi i64 [ 0, %.lr.ph2315 ], [ %indvars.iv.next3159.1, %.lr.ph2315.new ]
  %.114202306.unr = phi double [ 0.000000e+00, %.lr.ph2315 ], [ %630, %.lr.ph2315.new ]
  br i1 %lcmp.mod5452.not, label %.lr.ph2310, label %.lr.ph2310.epilog-lcssa

.lr.ph2310.epilog-lcssa:                          ; preds = %.lr.ph2310.unr-lcssa
  %631 = trunc nuw i64 %indvars.iv3158.unr to i32
  %632 = mul i32 %631, %0
  %633 = add i32 %632, %612
  %634 = zext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %calloc, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !5
  %637 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3158.unr
  %638 = load double, ptr %637, align 8, !tbaa !5
  %639 = tail call double @llvm.fmuladd.f64(double %636, double %638, double %.114202306.unr)
  br label %.lr.ph2310

.lr.ph2310:                                       ; preds = %.lr.ph2310.unr-lcssa, %.lr.ph2310.epilog-lcssa
  %.lcssa4813 = phi double [ %.lcssa4813.ph, %.lr.ph2310.unr-lcssa ], [ %639, %.lr.ph2310.epilog-lcssa ]
  %640 = fmul double %.01470, %.lcssa4813
  br i1 %374, label %._crit_edge2311.unr-lcssa, label %.lr.ph2310.new

.lr.ph2310.new:                                   ; preds = %.lr.ph2310, %.lr.ph2310.new
  %indvars.iv3163 = phi i64 [ %indvars.iv.next3164.1, %.lr.ph2310.new ], [ 0, %.lr.ph2310 ]
  %niter5461 = phi i64 [ %niter5461.next.1, %.lr.ph2310.new ], [ 0, %.lr.ph2310 ]
  %641 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3163
  %642 = load double, ptr %641, align 8, !tbaa !5
  %643 = trunc nuw i64 %indvars.iv3163 to i32
  %644 = mul i32 %643, %0
  %645 = add i32 %644, %612
  %646 = zext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %calloc, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !5
  %649 = tail call double @llvm.fmuladd.f64(double %640, double %642, double %648)
  store double %649, ptr %647, align 8, !tbaa !5
  %indvars.iv.next3164 = or disjoint i64 %indvars.iv3163, 1
  %650 = getelementptr inbounds double, ptr %32, i64 %indvars.iv.next3164
  %651 = load double, ptr %650, align 8, !tbaa !5
  %652 = trunc nuw i64 %indvars.iv.next3164 to i32
  %653 = mul i32 %652, %0
  %654 = add i32 %653, %612
  %655 = zext i32 %654 to i64
  %656 = getelementptr inbounds double, ptr %calloc, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !5
  %658 = tail call double @llvm.fmuladd.f64(double %640, double %651, double %657)
  store double %658, ptr %656, align 8, !tbaa !5
  %indvars.iv.next3164.1 = add nuw nsw i64 %indvars.iv3163, 2
  %niter5461.next.1 = add i64 %niter5461, 2
  %niter5461.ncmp.1 = icmp eq i64 %niter5461.next.1, %unroll_iter5460
  br i1 %niter5461.ncmp.1, label %._crit_edge2311.unr-lcssa, label %.lr.ph2310.new, !llvm.loop !42

._crit_edge2311.unr-lcssa:                        ; preds = %.lr.ph2310.new, %.lr.ph2310
  %indvars.iv3163.unr = phi i64 [ 0, %.lr.ph2310 ], [ %indvars.iv.next3164.1, %.lr.ph2310.new ]
  br i1 %lcmp.mod5459.not, label %._crit_edge2311, label %._crit_edge2311.epilog-lcssa

._crit_edge2311.epilog-lcssa:                     ; preds = %._crit_edge2311.unr-lcssa
  %659 = getelementptr inbounds double, ptr %32, i64 %indvars.iv3163.unr
  %660 = load double, ptr %659, align 8, !tbaa !5
  %661 = trunc nuw i64 %indvars.iv3163.unr to i32
  %662 = mul i32 %661, %0
  %663 = add i32 %662, %612
  %664 = zext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %calloc, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !5
  %667 = tail call double @llvm.fmuladd.f64(double %640, double %660, double %666)
  store double %667, ptr %665, align 8, !tbaa !5
  br label %._crit_edge2311

._crit_edge2311:                                  ; preds = %._crit_edge2311.unr-lcssa, %._crit_edge2311.epilog-lcssa
  %668 = tail call double @llvm.fmuladd.f64(double %610, double %610, double %.114322312)
  %indvars.iv.next3169 = add nuw nsw i64 %indvars.iv3168, 1
  %exitcond3172.not = icmp eq i64 %indvars.iv.next3169, %wide.trip.count3171
  br i1 %exitcond3172.not, label %._crit_edge2316, label %.lr.ph2315, !llvm.loop !43

._crit_edge2316:                                  ; preds = %._crit_edge2311
  %669 = tail call double @sqrt(double noundef %668) #10
  br label %vector.ph4693

vector.ph4693:                                    ; preds = %._crit_edge2316, %.lr.ph2298.preheader
  %.11435 = phi double [ %571, %._crit_edge2316 ], [ 0.000000e+00, %.lr.ph2298.preheader ]
  %.21433 = phi double [ %669, %._crit_edge2316 ], [ %525, %.lr.ph2298.preheader ]
  %broadcast.splatinsert4700 = insertelement <2 x double> poison, double %.21433, i64 0
  %broadcast.splat4701 = shufflevector <2 x double> %broadcast.splatinsert4700, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4697

vector.body4697:                                  ; preds = %vector.body4697, %vector.ph4693
  %index4698 = phi i64 [ 0, %vector.ph4693 ], [ %index.next4702, %vector.body4697 ]
  %670 = getelementptr inbounds double, ptr %29, i64 %index4698
  %wide.load4699 = load <2 x double>, ptr %670, align 8, !tbaa !5
  %671 = fdiv <2 x double> %wide.load4699, %broadcast.splat4701
  %672 = getelementptr inbounds double, ptr %30, i64 %index4698
  store <2 x double> %671, ptr %672, align 8, !tbaa !5
  %index.next4702 = add nuw i64 %index4698, 2
  %673 = icmp eq i64 %index.next4702, %n.vec4695
  br i1 %673, label %middle.block4690, label %vector.body4697, !llvm.loop !44

middle.block4690:                                 ; preds = %vector.body4697
  br i1 %cmp.n4703, label %.preheader1667.preheader, label %.lr.ph2320.preheader

.lr.ph2320.preheader:                             ; preds = %middle.block4690
  br i1 %lcmp.mod5463.not, label %.lr.ph2320.prol.loopexit, label %.lr.ph2320.prol

.lr.ph2320.prol:                                  ; preds = %.lr.ph2320.preheader, %.lr.ph2320.prol
  %indvars.iv3173.prol = phi i64 [ %indvars.iv.next3174.prol, %.lr.ph2320.prol ], [ %n.vec4695, %.lr.ph2320.preheader ]
  %prol.iter5464 = phi i64 [ %prol.iter5464.next, %.lr.ph2320.prol ], [ 0, %.lr.ph2320.preheader ]
  %674 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3173.prol
  %675 = load double, ptr %674, align 8, !tbaa !5
  %676 = fdiv double %675, %.21433
  %677 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3173.prol
  store double %676, ptr %677, align 8, !tbaa !5
  %indvars.iv.next3174.prol = add nuw nsw i64 %indvars.iv3173.prol, 1
  %prol.iter5464.next = add i64 %prol.iter5464, 1
  %prol.iter5464.cmp.not = icmp eq i64 %prol.iter5464.next, %366
  br i1 %prol.iter5464.cmp.not, label %.lr.ph2320.prol.loopexit, label %.lr.ph2320.prol, !llvm.loop !45

.lr.ph2320.prol.loopexit:                         ; preds = %.lr.ph2320.prol, %.lr.ph2320.preheader
  %indvars.iv3173.unr = phi i64 [ %n.vec4695, %.lr.ph2320.preheader ], [ %indvars.iv.next3174.prol, %.lr.ph2320.prol ]
  br i1 %375, label %.preheader1667.preheader, label %.lr.ph2320

.lr.ph2320:                                       ; preds = %.lr.ph2320.prol.loopexit, %.lr.ph2320
  %indvars.iv3173 = phi i64 [ %indvars.iv.next3174.3, %.lr.ph2320 ], [ %indvars.iv3173.unr, %.lr.ph2320.prol.loopexit ]
  %678 = getelementptr inbounds double, ptr %29, i64 %indvars.iv3173
  %679 = load double, ptr %678, align 8, !tbaa !5
  %680 = fdiv double %679, %.21433
  %681 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3173
  store double %680, ptr %681, align 8, !tbaa !5
  %indvars.iv.next3174 = add nuw nsw i64 %indvars.iv3173, 1
  %682 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next3174
  %683 = load double, ptr %682, align 8, !tbaa !5
  %684 = fdiv double %683, %.21433
  %685 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3174
  store double %684, ptr %685, align 8, !tbaa !5
  %indvars.iv.next3174.1 = add nuw nsw i64 %indvars.iv3173, 2
  %686 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next3174.1
  %687 = load double, ptr %686, align 8, !tbaa !5
  %688 = fdiv double %687, %.21433
  %689 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3174.1
  store double %688, ptr %689, align 8, !tbaa !5
  %indvars.iv.next3174.2 = add nuw nsw i64 %indvars.iv3173, 3
  %690 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next3174.2
  %691 = load double, ptr %690, align 8, !tbaa !5
  %692 = fdiv double %691, %.21433
  %693 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3174.2
  store double %692, ptr %693, align 8, !tbaa !5
  %indvars.iv.next3174.3 = add nuw nsw i64 %indvars.iv3173, 4
  %exitcond3177.not.3 = icmp eq i64 %indvars.iv.next3174.3, %wide.trip.count3176
  br i1 %exitcond3177.not.3, label %.preheader1667.preheader, label %.lr.ph2320, !llvm.loop !46

.preheader1667.preheader:                         ; preds = %.lr.ph2320.prol.loopexit, %.lr.ph2320, %middle.block4690
  br label %.preheader1667

.preheader1667:                                   ; preds = %.preheader1667.preheader, %722
  %indvars.iv3183 = phi i64 [ %indvars.iv.next3184, %722 ], [ 0, %.preheader1667.preheader ]
  %694 = trunc nuw i64 %indvars.iv3183 to i32
  br i1 %376, label %.unr-lcssa5465, label %.preheader1667.new

.preheader1667.new:                               ; preds = %.preheader1667, %.preheader1667.new
  %indvars.iv3178 = phi i64 [ %indvars.iv.next3179.1, %.preheader1667.new ], [ 0, %.preheader1667 ]
  %.414262321 = phi double [ %712, %.preheader1667.new ], [ 0.000000e+00, %.preheader1667 ]
  %niter5473 = phi i64 [ %niter5473.next.1, %.preheader1667.new ], [ 0, %.preheader1667 ]
  %695 = trunc nuw i64 %indvars.iv3178 to i32
  %696 = mul i32 %695, %0
  %697 = add i32 %696, %694
  %698 = zext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %calloc, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !5
  %701 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3178
  %702 = load double, ptr %701, align 8, !tbaa !5
  %703 = tail call double @llvm.fmuladd.f64(double %700, double %702, double %.414262321)
  %indvars.iv.next3179 = or disjoint i64 %indvars.iv3178, 1
  %704 = trunc nuw i64 %indvars.iv.next3179 to i32
  %705 = mul i32 %704, %0
  %706 = add i32 %705, %694
  %707 = zext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %calloc, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !5
  %710 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3179
  %711 = load double, ptr %710, align 8, !tbaa !5
  %712 = tail call double @llvm.fmuladd.f64(double %709, double %711, double %703)
  %indvars.iv.next3179.1 = add nuw nsw i64 %indvars.iv3178, 2
  %niter5473.next.1 = add i64 %niter5473, 2
  %niter5473.ncmp.1 = icmp eq i64 %niter5473.next.1, %unroll_iter5472
  br i1 %niter5473.ncmp.1, label %.unr-lcssa5465, label %.preheader1667.new, !llvm.loop !47

.unr-lcssa5465:                                   ; preds = %.preheader1667.new, %.preheader1667
  %.lcssa4815.ph = phi double [ poison, %.preheader1667 ], [ %712, %.preheader1667.new ]
  %indvars.iv3178.unr = phi i64 [ 0, %.preheader1667 ], [ %indvars.iv.next3179.1, %.preheader1667.new ]
  %.414262321.unr = phi double [ 0.000000e+00, %.preheader1667 ], [ %712, %.preheader1667.new ]
  br i1 %lcmp.mod5469.not, label %722, label %.epilog-lcssa5470

.epilog-lcssa5470:                                ; preds = %.unr-lcssa5465
  %713 = trunc nuw i64 %indvars.iv3178.unr to i32
  %714 = mul i32 %713, %0
  %715 = add i32 %714, %694
  %716 = zext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %calloc, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3178.unr
  %720 = load double, ptr %719, align 8, !tbaa !5
  %721 = tail call double @llvm.fmuladd.f64(double %718, double %720, double %.414262321.unr)
  br label %722

722:                                              ; preds = %.unr-lcssa5465, %.epilog-lcssa5470
  %.lcssa4815 = phi double [ %.lcssa4815.ph, %.unr-lcssa5465 ], [ %721, %.epilog-lcssa5470 ]
  %723 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3183
  store double %.lcssa4815, ptr %723, align 8, !tbaa !5
  %indvars.iv.next3184 = add nuw nsw i64 %indvars.iv3183, 1
  %exitcond3187.not = icmp eq i64 %indvars.iv.next3184, %wide.trip.count3186
  br i1 %exitcond3187.not, label %._crit_edge2324, label %.preheader1667, !llvm.loop !48

._crit_edge2324:                                  ; preds = %722
  %724 = icmp ugt i32 %indvars, 1
  br i1 %724, label %.lr.ph2327.preheader, label %._crit_edge2335

.lr.ph2327.preheader:                             ; preds = %._crit_edge2324
  br i1 %377, label %._crit_edge2328.unr-lcssa, label %.lr.ph2327

.lr.ph2327:                                       ; preds = %.lr.ph2327.preheader, %743
  %indvars.iv3188 = phi i64 [ %indvars.iv.next3189.1, %743 ], [ 0, %.lr.ph2327.preheader ]
  %.013552326 = phi i32 [ %.11356.1, %743 ], [ 0, %.lr.ph2327.preheader ]
  %niter5479 = phi i64 [ %niter5479.next.1, %743 ], [ 0, %.lr.ph2327.preheader ]
  %725 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3188
  %726 = load double, ptr %725, align 8, !tbaa !5
  %727 = tail call double @llvm.fabs.f64(double %726)
  %728 = fcmp ogt double %727, %135
  br i1 %728, label %729, label %.lr.ph2327.1

729:                                              ; preds = %.lr.ph2327
  %730 = zext i32 %.013552326 to i64
  %731 = getelementptr inbounds i32, ptr %39, i64 %730
  %732 = trunc nuw i64 %indvars.iv3188 to i32
  store i32 %732, ptr %731, align 4, !tbaa !49
  %733 = add i32 %.013552326, 1
  br label %.lr.ph2327.1

.lr.ph2327.1:                                     ; preds = %.lr.ph2327, %729
  %.11356 = phi i32 [ %733, %729 ], [ %.013552326, %.lr.ph2327 ]
  %indvars.iv.next3189 = or disjoint i64 %indvars.iv3188, 1
  %734 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3189
  %735 = load double, ptr %734, align 8, !tbaa !5
  %736 = tail call double @llvm.fabs.f64(double %735)
  %737 = fcmp ogt double %736, %135
  br i1 %737, label %738, label %743

738:                                              ; preds = %.lr.ph2327.1
  %739 = zext i32 %.11356 to i64
  %740 = getelementptr inbounds i32, ptr %39, i64 %739
  %741 = trunc nuw i64 %indvars.iv.next3189 to i32
  store i32 %741, ptr %740, align 4, !tbaa !49
  %742 = add i32 %.11356, 1
  br label %743

743:                                              ; preds = %738, %.lr.ph2327.1
  %.11356.1 = phi i32 [ %742, %738 ], [ %.11356, %.lr.ph2327.1 ]
  %indvars.iv.next3189.1 = add nuw nsw i64 %indvars.iv3188, 2
  %niter5479.next.1 = add i64 %niter5479, 2
  %niter5479.ncmp.1 = icmp eq i64 %niter5479.next.1, %unroll_iter5478
  br i1 %niter5479.ncmp.1, label %._crit_edge2328.unr-lcssa, label %.lr.ph2327, !llvm.loop !51

._crit_edge2328.unr-lcssa:                        ; preds = %743, %.lr.ph2327.preheader
  %.11356.lcssa.ph = phi i32 [ poison, %.lr.ph2327.preheader ], [ %.11356.1, %743 ]
  %indvars.iv3188.unr = phi i64 [ 0, %.lr.ph2327.preheader ], [ %indvars.iv.next3189.1, %743 ]
  %.013552326.unr = phi i32 [ 0, %.lr.ph2327.preheader ], [ %.11356.1, %743 ]
  br i1 %lcmp.mod5476.not, label %._crit_edge2328, label %.lr.ph2327.epil

.lr.ph2327.epil:                                  ; preds = %._crit_edge2328.unr-lcssa
  %744 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3188.unr
  %745 = load double, ptr %744, align 8, !tbaa !5
  %746 = tail call double @llvm.fabs.f64(double %745)
  %747 = fcmp ogt double %746, %135
  br i1 %747, label %748, label %._crit_edge2328

748:                                              ; preds = %.lr.ph2327.epil
  %749 = zext i32 %.013552326.unr to i64
  %750 = getelementptr inbounds i32, ptr %39, i64 %749
  %751 = trunc nuw i64 %indvars.iv3188.unr to i32
  store i32 %751, ptr %750, align 4, !tbaa !49
  %752 = add i32 %.013552326.unr, 1
  br label %._crit_edge2328

._crit_edge2328:                                  ; preds = %.lr.ph2327.epil, %748, %._crit_edge2328.unr-lcssa
  %.11356.lcssa = phi i32 [ %.11356.lcssa.ph, %._crit_edge2328.unr-lcssa ], [ %752, %748 ], [ %.013552326.unr, %.lr.ph2327.epil ]
  %.not1591 = icmp eq i32 %.11356.lcssa, 0
  br i1 %.not1591, label %._crit_edge2335, label %753

753:                                              ; preds = %._crit_edge2328
  %754 = mul i32 %.11356.lcssa, %.11356.lcssa
  %755 = uitofp i32 %754 to double
  %756 = fmul double %755, 0x3CB0000000000000
  %wide.trip.count3196 = zext i32 %.11356.lcssa to i64
  %xtraiter5482 = and i64 %wide.trip.count3196, 1
  %757 = icmp eq i32 %.11356.lcssa, 1
  br i1 %757, label %.unr-lcssa5480, label %.new

.new:                                             ; preds = %753
  %unroll_iter5487 = and i64 %wide.trip.count3196, 4294967294
  br label %758

758:                                              ; preds = %758, %.new
  %indvars.iv3193 = phi i64 [ 0, %.new ], [ %indvars.iv.next3194.1, %758 ]
  %.014022330 = phi i32 [ 0, %.new ], [ %.11403.1, %758 ]
  %niter5488 = phi i64 [ 0, %.new ], [ %niter5488.next.1, %758 ]
  %759 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv3193
  %760 = load i32, ptr %759, align 4, !tbaa !49
  %761 = zext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %29, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !5
  %764 = tail call double @llvm.fabs.f64(double %763)
  %765 = getelementptr inbounds double, ptr %27, i64 %761
  %766 = load double, ptr %765, align 8, !tbaa !5
  %767 = tail call double @llvm.fabs.f64(double %766)
  %768 = fmul double %756, %767
  %769 = fcmp ole double %764, %768
  %770 = zext i1 %769 to i32
  %.11403 = add i32 %.014022330, %770
  %indvars.iv.next3194 = or disjoint i64 %indvars.iv3193, 1
  %771 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next3194
  %772 = load i32, ptr %771, align 4, !tbaa !49
  %773 = zext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %29, i64 %773
  %775 = load double, ptr %774, align 8, !tbaa !5
  %776 = tail call double @llvm.fabs.f64(double %775)
  %777 = getelementptr inbounds double, ptr %27, i64 %773
  %778 = load double, ptr %777, align 8, !tbaa !5
  %779 = tail call double @llvm.fabs.f64(double %778)
  %780 = fmul double %756, %779
  %781 = fcmp ole double %776, %780
  %782 = zext i1 %781 to i32
  %.11403.1 = add i32 %.11403, %782
  %indvars.iv.next3194.1 = add nuw nsw i64 %indvars.iv3193, 2
  %niter5488.next.1 = add i64 %niter5488, 2
  %niter5488.ncmp.1 = icmp eq i64 %niter5488.next.1, %unroll_iter5487
  br i1 %niter5488.ncmp.1, label %.unr-lcssa5480, label %758, !llvm.loop !52

.unr-lcssa5480:                                   ; preds = %758, %753
  %.11403.lcssa.ph = phi i32 [ poison, %753 ], [ %.11403.1, %758 ]
  %indvars.iv3193.unr = phi i64 [ 0, %753 ], [ %indvars.iv.next3194.1, %758 ]
  %.014022330.unr = phi i32 [ 0, %753 ], [ %.11403.1, %758 ]
  %lcmp.mod5484.not = icmp eq i64 %xtraiter5482, 0
  br i1 %lcmp.mod5484.not, label %795, label %.epilog-lcssa5485

.epilog-lcssa5485:                                ; preds = %.unr-lcssa5480
  %783 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv3193.unr
  %784 = load i32, ptr %783, align 4, !tbaa !49
  %785 = zext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %29, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !5
  %788 = tail call double @llvm.fabs.f64(double %787)
  %789 = getelementptr inbounds double, ptr %27, i64 %785
  %790 = load double, ptr %789, align 8, !tbaa !5
  %791 = tail call double @llvm.fabs.f64(double %790)
  %792 = fmul double %756, %791
  %793 = fcmp ole double %788, %792
  %794 = zext i1 %793 to i32
  %.11403.epil = add i32 %.014022330.unr, %794
  br label %795

795:                                              ; preds = %.unr-lcssa5480, %.epilog-lcssa5485
  %.11403.lcssa = phi i32 [ %.11403.lcssa.ph, %.unr-lcssa5480 ], [ %.11403.epil, %.epilog-lcssa5485 ]
  %796 = icmp eq i32 %.11403.lcssa, %0
  %797 = fcmp oeq double %.11435, 0.000000e+00
  %or.cond5 = or i1 %797, %796
  br i1 %or.cond5, label %798, label %._crit_edge2335

798:                                              ; preds = %795
  br i1 %.not1589, label %801, label %799

799:                                              ; preds = %798
  %800 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  br label %801

801:                                              ; preds = %799, %798
  %802 = fsub double %.11527, %.21528
  %803 = tail call double @llvm.fabs.f64(double %802)
  %804 = tail call double @llvm.fabs.f64(double %.21528)
  %805 = fmul double %804, 1.000000e-02
  %806 = fcmp olt double %803, %805
  %807 = sub nsw i64 %.01357.ph4802, %355
  %.11358 = select i1 %806, i64 %807, i64 20
  %808 = fmul double %.01467, %.01456
  %809 = fdiv double %808, 3.000000e+00
  br label %.preheader1694.preheader.outer4788

._crit_edge2335:                                  ; preds = %._crit_edge2328, %795, %._crit_edge2324
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %34, ptr noundef nonnull align 8 dereferenceable(1) %1, i64 %356, i1 false), !tbaa !5
  %spec.select = select i1 %45, i32 0, i32 %.11336
  %810 = fmul double %.21475, 1.200000e+00
  br label %.lr.ph2342.preheader

.lr.ph2342.preheader:                             ; preds = %.lr.ph2342.preheader.backedge, %._crit_edge2335
  %.31529 = phi double [ %.21528, %._crit_edge2335 ], [ %.31529.be, %.lr.ph2342.preheader.backedge ]
  %.31520 = phi double [ %.21519, %._crit_edge2335 ], [ %.31520.be, %.lr.ph2342.preheader.backedge ]
  %.41508 = phi double [ %.31507, %._crit_edge2335 ], [ %.51509, %.lr.ph2342.preheader.backedge ]
  %.01471 = phi i32 [ 0, %._crit_edge2335 ], [ %.01471.be, %.lr.ph2342.preheader.backedge ]
  %.01468 = phi i32 [ 0, %._crit_edge2335 ], [ %.01468.be, %.lr.ph2342.preheader.backedge ]
  %.01458 = phi double [ %.31463, %._crit_edge2335 ], [ %.01458.be, %.lr.ph2342.preheader.backedge ]
  %.01414 = phi i32 [ 0, %._crit_edge2335 ], [ %.01414.be, %.lr.ph2342.preheader.backedge ]
  %.21374 = phi i32 [ %.11373, %._crit_edge2335 ], [ %.21374.be, %.lr.ph2342.preheader.backedge ]
  %.01344 = phi i32 [ 0, %._crit_edge2335 ], [ %.01344.be, %.lr.ph2342.preheader.backedge ]
  %.01342 = phi i32 [ 0, %._crit_edge2335 ], [ %.01342.be, %.lr.ph2342.preheader.backedge ]
  %.41318 = phi i32 [ %.31317, %._crit_edge2335 ], [ %.41318.be, %.lr.ph2342.preheader.backedge ]
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %33, ptr noundef nonnull align 8 dereferenceable(1) %1, i64 %356, i1 false), !tbaa !5
  %811 = fcmp olt double %.31529, 0.000000e+00
  %.1641 = select i1 %811, double -1.000000e+00, double 1.000000e+00
  br i1 %min.iters.check4673, label %.lr.ph2342.preheader4756, label %vector.ph4674

vector.ph4674:                                    ; preds = %.lr.ph2342.preheader
  %broadcast.splatinsert4684 = insertelement <2 x double> poison, double %.01458, i64 0
  %broadcast.splat4685 = shufflevector <2 x double> %broadcast.splatinsert4684, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4678

vector.body4678:                                  ; preds = %vector.body4678, %vector.ph4674
  %index4679 = phi i64 [ 0, %vector.ph4674 ], [ %index.next4686, %vector.body4678 ]
  %812 = getelementptr inbounds double, ptr %28, i64 %index4679
  %813 = getelementptr inbounds i8, ptr %812, i64 16
  %wide.load4680 = load <2 x double>, ptr %812, align 8, !tbaa !5
  %wide.load4681 = load <2 x double>, ptr %813, align 8, !tbaa !5
  %814 = getelementptr inbounds double, ptr %1, i64 %index4679
  %815 = getelementptr inbounds i8, ptr %814, i64 16
  %wide.load4682 = load <2 x double>, ptr %814, align 8, !tbaa !5
  %wide.load4683 = load <2 x double>, ptr %815, align 8, !tbaa !5
  %816 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat4685, <2 x double> %wide.load4680, <2 x double> %wide.load4682)
  %817 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat4685, <2 x double> %wide.load4681, <2 x double> %wide.load4683)
  store <2 x double> %816, ptr %814, align 8, !tbaa !5
  store <2 x double> %817, ptr %815, align 8, !tbaa !5
  %index.next4686 = add nuw i64 %index4679, 4
  %818 = icmp eq i64 %index.next4686, %n.vec4676
  br i1 %818, label %middle.block4671, label %vector.body4678, !llvm.loop !53

middle.block4671:                                 ; preds = %vector.body4678
  br i1 %cmp.n4687, label %.lr.ph2345.preheader, label %.lr.ph2342.preheader4756

.lr.ph2342.preheader4756:                         ; preds = %middle.block4671, %.lr.ph2342.preheader
  %indvars.iv3206.ph = phi i64 [ 0, %.lr.ph2342.preheader ], [ %n.vec4676, %middle.block4671 ]
  br label %.lr.ph2342

.lr.ph2342:                                       ; preds = %.lr.ph2342.preheader4756, %.lr.ph2342
  %indvars.iv3206 = phi i64 [ %indvars.iv.next3207, %.lr.ph2342 ], [ %indvars.iv3206.ph, %.lr.ph2342.preheader4756 ]
  %819 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3206
  %820 = load double, ptr %819, align 8, !tbaa !5
  %821 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3206
  %822 = load double, ptr %821, align 8, !tbaa !5
  %823 = tail call double @llvm.fmuladd.f64(double %.01458, double %820, double %822)
  store double %823, ptr %821, align 8, !tbaa !5
  %indvars.iv.next3207 = add nuw nsw i64 %indvars.iv3206, 1
  %exitcond3210.not = icmp eq i64 %indvars.iv.next3207, %wide.trip.count3209
  br i1 %exitcond3210.not, label %.lr.ph2345.preheader, label %.lr.ph2342, !llvm.loop !54

.lr.ph2345.preheader:                             ; preds = %.lr.ph2342, %middle.block4671
  br i1 %min.iters.check4657, label %.lr.ph2345.preheader4755, label %vector.body4662

vector.body4662:                                  ; preds = %.lr.ph2345.preheader, %vector.body4662
  %index4663 = phi i64 [ %index.next4669, %vector.body4662 ], [ 0, %.lr.ph2345.preheader ]
  %vec.phi = phi <2 x i32> [ %840, %vector.body4662 ], [ zeroinitializer, %.lr.ph2345.preheader ]
  %vec.phi4664 = phi <2 x i32> [ %841, %vector.body4662 ], [ zeroinitializer, %.lr.ph2345.preheader ]
  %824 = getelementptr inbounds double, ptr %1, i64 %index4663
  %825 = getelementptr inbounds i8, ptr %824, i64 16
  %wide.load4665 = load <2 x double>, ptr %824, align 8, !tbaa !5
  %wide.load4666 = load <2 x double>, ptr %825, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %33, i64 %index4663
  %827 = getelementptr inbounds i8, ptr %826, i64 16
  %wide.load4667 = load <2 x double>, ptr %826, align 8, !tbaa !5
  %wide.load4668 = load <2 x double>, ptr %827, align 8, !tbaa !5
  %828 = fsub <2 x double> %wide.load4665, %wide.load4667
  %829 = fsub <2 x double> %wide.load4666, %wide.load4668
  %830 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %828)
  %831 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %829)
  %832 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %wide.load4665)
  %833 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %wide.load4666)
  %834 = fmul <2 x double> %832, <double 0x3CB0000000000000, double 0x3CB0000000000000>
  %835 = fmul <2 x double> %833, <double 0x3CB0000000000000, double 0x3CB0000000000000>
  %836 = fcmp olt <2 x double> %830, %834
  %837 = fcmp olt <2 x double> %831, %835
  %838 = zext <2 x i1> %836 to <2 x i32>
  %839 = zext <2 x i1> %837 to <2 x i32>
  %840 = add <2 x i32> %vec.phi, %838
  %841 = add <2 x i32> %vec.phi4664, %839
  %index.next4669 = add nuw i64 %index4663, 4
  %842 = icmp eq i64 %index.next4669, %n.vec4660
  br i1 %842, label %middle.block4655, label %vector.body4662, !llvm.loop !55

middle.block4655:                                 ; preds = %vector.body4662
  %bin.rdx = add <2 x i32> %841, %840
  %843 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %bin.rdx)
  br i1 %cmp.n4670, label %._crit_edge2346, label %.lr.ph2345.preheader4755

.lr.ph2345.preheader4755:                         ; preds = %middle.block4655, %.lr.ph2345.preheader
  %indvars.iv3211.ph = phi i64 [ 0, %.lr.ph2345.preheader ], [ %n.vec4660, %middle.block4655 ]
  %.214042343.ph = phi i32 [ 0, %.lr.ph2345.preheader ], [ %843, %middle.block4655 ]
  br label %.lr.ph2345

.lr.ph2345:                                       ; preds = %.lr.ph2345.preheader4755, %.lr.ph2345
  %indvars.iv3211 = phi i64 [ %indvars.iv.next3212, %.lr.ph2345 ], [ %indvars.iv3211.ph, %.lr.ph2345.preheader4755 ]
  %.214042343 = phi i32 [ %.31405, %.lr.ph2345 ], [ %.214042343.ph, %.lr.ph2345.preheader4755 ]
  %844 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3211
  %845 = load double, ptr %844, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %33, i64 %indvars.iv3211
  %847 = load double, ptr %846, align 8, !tbaa !5
  %848 = fsub double %845, %847
  %849 = tail call double @llvm.fabs.f64(double %848)
  %850 = tail call double @llvm.fabs.f64(double %845)
  %851 = fmul double %850, 0x3CB0000000000000
  %852 = fcmp olt double %849, %851
  %853 = zext i1 %852 to i32
  %.31405 = add i32 %.214042343, %853
  %indvars.iv.next3212 = add nuw nsw i64 %indvars.iv3211, 1
  %exitcond3215.not = icmp eq i64 %indvars.iv.next3212, %wide.trip.count3214
  br i1 %exitcond3215.not, label %._crit_edge2346, label %.lr.ph2345, !llvm.loop !56

._crit_edge2346:                                  ; preds = %.lr.ph2345, %middle.block4655
  %.31405.lcssa = phi i32 [ %843, %middle.block4655 ], [ %.31405, %.lr.ph2345 ]
  %854 = tail call double %2(ptr noundef nonnull %1, ptr noundef %7) #10
  %855 = load double, ptr %142, align 8, !tbaa !5
  %856 = fadd double %855, 1.000000e+00
  store double %856, ptr %142, align 8, !tbaa !5
  %857 = fmul double %.01467, %854
  %858 = fcmp ult double %857, 0x7FDFFFFFFFFFFFFF
  br i1 %858, label %863, label %859

859:                                              ; preds = %._crit_edge2346
  br i1 %.not1589, label %862, label %860

860:                                              ; preds = %859
  %861 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11)
  br label %862

862:                                              ; preds = %860, %859
  store double -7.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

863:                                              ; preds = %._crit_edge2346
  br i1 %45, label %864, label %919

864:                                              ; preds = %863
  %865 = tail call double %5(ptr noundef %1, ptr noundef %7) #10
  %866 = load double, ptr %346, align 8, !tbaa !5
  %867 = fadd double %866, 1.000000e+00
  store double %867, ptr %346, align 8, !tbaa !5
  %868 = tail call double @llvm.fabs.f64(double %865)
  %869 = fcmp ult double %868, 0x7FDFFFFFFFFFFFFF
  br i1 %869, label %875, label %870

870:                                              ; preds = %864
  br i1 %.not1589, label %874, label %871

871:                                              ; preds = %870
  %872 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  %873 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %874

874:                                              ; preds = %871, %870
  store double -5.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

875:                                              ; preds = %864
  %876 = fcmp ugt double %865, %storemerge3383
  br i1 %876, label %877, label %919

877:                                              ; preds = %875
  %878 = fsub double %854, %.31520
  %879 = fcmp uge double %878, 0xBCB0000000000000
  %880 = icmp ne i32 %.41318, 0
  %or.cond33 = select i1 %879, i1 true, i1 %880
  br i1 %or.cond33, label %917, label %.lr.ph2350.preheader

.lr.ph2350.preheader:                             ; preds = %877
  br i1 %378, label %._crit_edge2351.unr-lcssa, label %.lr.ph2350

.lr.ph2350:                                       ; preds = %.lr.ph2350.preheader, %.lr.ph2350
  %indvars.iv3216 = phi i64 [ %indvars.iv.next3217.3, %.lr.ph2350 ], [ 0, %.lr.ph2350.preheader ]
  %.514272348 = phi double [ %904, %.lr.ph2350 ], [ 0.000000e+00, %.lr.ph2350.preheader ]
  %niter5494 = phi i64 [ %niter5494.next.3, %.lr.ph2350 ], [ 0, %.lr.ph2350.preheader ]
  %881 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3216
  %882 = load double, ptr %881, align 8, !tbaa !5
  %883 = getelementptr inbounds double, ptr %33, i64 %indvars.iv3216
  %884 = load double, ptr %883, align 8, !tbaa !5
  %885 = fsub double %882, %884
  %886 = tail call double @llvm.fmuladd.f64(double %885, double %885, double %.514272348)
  %indvars.iv.next3217 = or disjoint i64 %indvars.iv3216, 1
  %887 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3217
  %888 = load double, ptr %887, align 8, !tbaa !5
  %889 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next3217
  %890 = load double, ptr %889, align 8, !tbaa !5
  %891 = fsub double %888, %890
  %892 = tail call double @llvm.fmuladd.f64(double %891, double %891, double %886)
  %indvars.iv.next3217.1 = or disjoint i64 %indvars.iv3216, 2
  %893 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3217.1
  %894 = load double, ptr %893, align 8, !tbaa !5
  %895 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next3217.1
  %896 = load double, ptr %895, align 8, !tbaa !5
  %897 = fsub double %894, %896
  %898 = tail call double @llvm.fmuladd.f64(double %897, double %897, double %892)
  %indvars.iv.next3217.2 = or disjoint i64 %indvars.iv3216, 3
  %899 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3217.2
  %900 = load double, ptr %899, align 8, !tbaa !5
  %901 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next3217.2
  %902 = load double, ptr %901, align 8, !tbaa !5
  %903 = fsub double %900, %902
  %904 = tail call double @llvm.fmuladd.f64(double %903, double %903, double %898)
  %indvars.iv.next3217.3 = add nuw nsw i64 %indvars.iv3216, 4
  %niter5494.next.3 = add i64 %niter5494, 4
  %niter5494.ncmp.3 = icmp eq i64 %niter5494.next.3, %unroll_iter5493
  br i1 %niter5494.ncmp.3, label %._crit_edge2351.unr-lcssa, label %.lr.ph2350, !llvm.loop !57

._crit_edge2351.unr-lcssa:                        ; preds = %.lr.ph2350, %.lr.ph2350.preheader
  %.lcssa4819.ph = phi double [ poison, %.lr.ph2350.preheader ], [ %904, %.lr.ph2350 ]
  %indvars.iv3216.unr = phi i64 [ 0, %.lr.ph2350.preheader ], [ %indvars.iv.next3217.3, %.lr.ph2350 ]
  %.514272348.unr = phi double [ 0.000000e+00, %.lr.ph2350.preheader ], [ %904, %.lr.ph2350 ]
  br i1 %lcmp.mod5491.not, label %._crit_edge2351, label %.lr.ph2350.epil

.lr.ph2350.epil:                                  ; preds = %._crit_edge2351.unr-lcssa, %.lr.ph2350.epil
  %indvars.iv3216.epil = phi i64 [ %indvars.iv.next3217.epil, %.lr.ph2350.epil ], [ %indvars.iv3216.unr, %._crit_edge2351.unr-lcssa ]
  %.514272348.epil = phi double [ %910, %.lr.ph2350.epil ], [ %.514272348.unr, %._crit_edge2351.unr-lcssa ]
  %epil.iter5490 = phi i64 [ %epil.iter5490.next, %.lr.ph2350.epil ], [ 0, %._crit_edge2351.unr-lcssa ]
  %905 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3216.epil
  %906 = load double, ptr %905, align 8, !tbaa !5
  %907 = getelementptr inbounds double, ptr %33, i64 %indvars.iv3216.epil
  %908 = load double, ptr %907, align 8, !tbaa !5
  %909 = fsub double %906, %908
  %910 = tail call double @llvm.fmuladd.f64(double %909, double %909, double %.514272348.epil)
  %indvars.iv.next3217.epil = add nuw nsw i64 %indvars.iv3216.epil, 1
  %epil.iter5490.next = add i64 %epil.iter5490, 1
  %epil.iter5490.cmp.not = icmp eq i64 %epil.iter5490.next, %xtraiter5489
  br i1 %epil.iter5490.cmp.not, label %._crit_edge2351, label %.lr.ph2350.epil, !llvm.loop !58

._crit_edge2351:                                  ; preds = %.lr.ph2350.epil, %._crit_edge2351.unr-lcssa
  %.lcssa4819 = phi double [ %.lcssa4819.ph, %._crit_edge2351.unr-lcssa ], [ %910, %.lr.ph2350.epil ]
  %911 = tail call double @sqrt(double noundef %.lcssa4819) #10
  %912 = fmul double %878, -1.500000e+01
  %913 = fdiv double %912, %911
  %914 = fcmp ogt double %913, %810
  br i1 %914, label %915, label %917

915:                                              ; preds = %._crit_edge2351
  %916 = tail call double @llvm.fmuladd.f64(double %913, double %865, double %854)
  br label %.lr.ph2367.preheader

917:                                              ; preds = %._crit_edge2351, %877
  %918 = tail call double @llvm.fmuladd.f64(double %.21475, double %865, double %854)
  br label %919

919:                                              ; preds = %875, %917, %863
  %.41530 = phi double [ %918, %917 ], [ %854, %863 ], [ %854, %875 ]
  %.41521 = phi double [ %854, %917 ], [ %.31520, %863 ], [ %854, %875 ]
  %.51509 = phi double [ %865, %917 ], [ %.41508, %863 ], [ 0.000000e+00, %875 ]
  %.51319 = phi i32 [ 0, %917 ], [ %.41318, %863 ], [ 1, %875 ]
  %920 = tail call double @llvm.fabs.f64(double %.41530)
  %921 = fcmp ult double %920, 0x7FDFFFFFFFFFFFFF
  br i1 %921, label %931, label %922

922:                                              ; preds = %919
  br i1 %.not1589, label %925, label %923

923:                                              ; preds = %922
  %924 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  br label %925

925:                                              ; preds = %923, %922
  %.not1623 = icmp ne i32 %.01342, 0
  %926 = icmp ugt i32 %.01414, 2
  %or.cond = select i1 %.not1623, i1 true, i1 %926
  br i1 %or.cond, label %927, label %._crit_edge2356

927:                                              ; preds = %925
  store double -3.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

._crit_edge2356:                                  ; preds = %925
  %928 = add i32 %.01471, 1
  %929 = fdiv double %.01458, 5.100000e+00
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(1) %33, i64 %356, i1 false), !tbaa !5
  br i1 %45, label %930, label %.lr.ph2342.preheader.backedge

930:                                              ; preds = %._crit_edge2356
  br label %.lr.ph2342.preheader.backedge

931:                                              ; preds = %919
  %932 = icmp eq i32 %.31405.lcssa, %0
  br i1 %932, label %933, label %944

933:                                              ; preds = %931
  %934 = add i32 %.21374, 1
  %935 = icmp ugt i32 %934, 4
  br i1 %935, label %936, label %._crit_edge2363

936:                                              ; preds = %933
  br i1 %.not1589, label %941, label %937

937:                                              ; preds = %936
  %938 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %939 = load ptr, ptr @endwarn4, align 8, !tbaa !33
  %940 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef %939)
  br label %941

941:                                              ; preds = %937, %936
  store double -1.400000e+01, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

._crit_edge2363:                                  ; preds = %933
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(1) %33, i64 %356, i1 false), !tbaa !5
  %942 = fmul double %.01458, 1.000000e+01
  br i1 %45, label %943, label %.lr.ph2342.preheader.backedge

.lr.ph2342.preheader.backedge:                    ; preds = %._crit_edge2363, %943, %961, %967, %969, %965, %._crit_edge2360, %930, %._crit_edge2356
  %.31529.be = phi double [ %.31529, %930 ], [ %.31529, %._crit_edge2356 ], [ %.31529, %943 ], [ %.31529, %._crit_edge2363 ], [ %.31529, %._crit_edge2360 ], [ %.41530, %961 ], [ %.41530, %965 ], [ %.41530, %969 ], [ %.41530, %967 ]
  %.31520.be = phi double [ %.31520, %930 ], [ %.41521, %._crit_edge2356 ], [ %.31520, %943 ], [ %.41521, %._crit_edge2363 ], [ %.31520, %._crit_edge2360 ], [ %.41521, %961 ], [ %.41521, %965 ], [ %.41521, %969 ], [ %.41521, %967 ]
  %.01471.be = phi i32 [ %928, %930 ], [ %928, %._crit_edge2356 ], [ %.01471, %943 ], [ %.01471, %._crit_edge2363 ], [ %951, %._crit_edge2360 ], [ 0, %961 ], [ 0, %965 ], [ 0, %969 ], [ 0, %967 ]
  %.01468.be = phi i32 [ 0, %930 ], [ 0, %._crit_edge2356 ], [ %.01468, %943 ], [ %.01468, %._crit_edge2363 ], [ 0, %._crit_edge2360 ], [ %958, %961 ], [ %958, %965 ], [ %958, %969 ], [ %958, %967 ]
  %.01458.be = phi double [ %929, %930 ], [ %929, %._crit_edge2356 ], [ %942, %943 ], [ %942, %._crit_edge2363 ], [ %952, %._crit_edge2360 ], [ %962, %961 ], [ %966, %965 ], [ %970, %969 ], [ %.01458, %967 ]
  %.01414.be = phi i32 [ %.01414, %930 ], [ %.01414, %._crit_edge2356 ], [ %.01414, %943 ], [ %.01414, %._crit_edge2363 ], [ %.01414, %._crit_edge2360 ], [ %spec.select1642, %961 ], [ %spec.select1642, %965 ], [ %spec.select1642, %969 ], [ %spec.select1642, %967 ]
  %.21374.be = phi i32 [ %.21374, %930 ], [ %.21374, %._crit_edge2356 ], [ %934, %943 ], [ %934, %._crit_edge2363 ], [ %.21374, %._crit_edge2360 ], [ %.21374, %961 ], [ %.21374, %965 ], [ %.21374, %969 ], [ %.21374, %967 ]
  %.01344.be = phi i32 [ 1, %930 ], [ 1, %._crit_edge2356 ], [ %.01344, %943 ], [ %.01344, %._crit_edge2363 ], [ %.01344, %._crit_edge2360 ], [ %.01344, %961 ], [ %.01344, %965 ], [ %.01344, %969 ], [ %.01344, %967 ]
  %.01342.be = phi i32 [ 0, %930 ], [ 0, %._crit_edge2356 ], [ 1, %943 ], [ 1, %._crit_edge2363 ], [ 0, %._crit_edge2360 ], [ %.01342, %961 ], [ %.01342, %965 ], [ %.01342, %969 ], [ %.01342, %967 ]
  %.41318.be = phi i32 [ %.41318, %930 ], [ %.51319, %._crit_edge2356 ], [ %.41318, %943 ], [ %.51319, %._crit_edge2363 ], [ %.41318, %._crit_edge2360 ], [ %.51319, %961 ], [ %.51319, %965 ], [ %.51319, %969 ], [ %.51319, %967 ]
  br label %.lr.ph2342.preheader

943:                                              ; preds = %._crit_edge2363
  br label %.lr.ph2342.preheader.backedge

944:                                              ; preds = %931
  %945 = fmul double %.01467, %.41530
  %946 = tail call double @pow(double noundef %471, double noundef %.1641) #10
  %947 = fmul double %.01467, %946
  %948 = fmul double %.31529, %947
  %949 = fcmp olt double %945, %948
  br i1 %949, label %950, label %954

950:                                              ; preds = %944
  %.not1593 = icmp eq i32 %.01342, 0
  br i1 %.not1593, label %._crit_edge2360, label %.lr.ph2367.preheader

._crit_edge2360:                                  ; preds = %950
  %951 = add i32 %.01471, 1
  %952 = fdiv double %.01458, 5.100000e+00
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(1) %33, i64 %356, i1 false), !tbaa !5
  %953 = icmp ugt i32 %.01414, 2
  br i1 %953, label %.lr.ph2367.preheader, label %.lr.ph2342.preheader.backedge

954:                                              ; preds = %944
  %955 = fmul double %.01467, %.31529
  %956 = fcmp ugt double %945, %955
  br i1 %956, label %957, label %.lr.ph2367.preheader

957:                                              ; preds = %954
  %958 = add i32 %.01468, 1
  %.not1592 = icmp ne i32 %.01471, 0
  %959 = zext i1 %.not1592 to i32
  %spec.select1642 = add i32 %.01414, %959
  %960 = icmp ugt i32 %958, 19
  br i1 %960, label %961, label %963

961:                                              ; preds = %957
  %962 = fmul double %.01458, 2.000000e+00
  br label %.lr.ph2342.preheader.backedge

963:                                              ; preds = %957
  %964 = icmp ugt i32 %958, 9
  br i1 %964, label %965, label %967

965:                                              ; preds = %963
  %966 = fmul double %.01458, 1.500000e+00
  br label %.lr.ph2342.preheader.backedge

967:                                              ; preds = %963
  %968 = icmp ugt i32 %958, 2
  br i1 %968, label %969, label %.lr.ph2342.preheader.backedge

969:                                              ; preds = %967
  %970 = fmul double %.01458, 1.050000e+00
  br label %.lr.ph2342.preheader.backedge

.lr.ph2367.preheader:                             ; preds = %950, %._crit_edge2360, %954, %915
  %.013422520 = phi i32 [ %.01342, %915 ], [ %.01342, %954 ], [ 0, %._crit_edge2360 ], [ %.01342, %950 ]
  %.61532 = phi double [ %916, %915 ], [ %.41530, %954 ], [ %.31529, %._crit_edge2360 ], [ %.41530, %950 ]
  %.71524 = phi double [ %854, %915 ], [ %.41521, %954 ], [ %.31520, %._crit_edge2360 ], [ %.41521, %950 ]
  %.61510 = phi double [ %865, %915 ], [ %.51509, %954 ], [ %.51509, %._crit_edge2360 ], [ %.51509, %950 ]
  %.31483 = phi i32 [ 0, %915 ], [ %.21482, %954 ], [ %.21482, %._crit_edge2360 ], [ %.21482, %950 ]
  %.31476 = phi double [ %913, %915 ], [ %.21475, %954 ], [ %.21475, %._crit_edge2360 ], [ %.21475, %950 ]
  %.31338 = phi i32 [ 1, %915 ], [ %spec.select, %954 ], [ %spec.select, %._crit_edge2360 ], [ %spec.select, %950 ]
  %.8 = phi i32 [ 0, %915 ], [ %.51319, %954 ], [ %.41318, %._crit_edge2360 ], [ %.51319, %950 ]
  br i1 %379, label %._crit_edge2368.unr-lcssa, label %.lr.ph2367

.lr.ph2367:                                       ; preds = %.lr.ph2367.preheader, %.lr.ph2367
  %indvars.iv3233 = phi i64 [ %indvars.iv.next3234.3, %.lr.ph2367 ], [ 0, %.lr.ph2367.preheader ]
  %.114572364 = phi double [ %994, %.lr.ph2367 ], [ 0.000000e+00, %.lr.ph2367.preheader ]
  %niter5500 = phi i64 [ %niter5500.next.3, %.lr.ph2367 ], [ 0, %.lr.ph2367.preheader ]
  %971 = getelementptr inbounds double, ptr %34, i64 %indvars.iv3233
  %972 = load double, ptr %971, align 8, !tbaa !5
  %973 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3233
  %974 = load double, ptr %973, align 8, !tbaa !5
  %975 = fsub double %972, %974
  %976 = tail call double @llvm.fmuladd.f64(double %975, double %975, double %.114572364)
  %indvars.iv.next3234 = or disjoint i64 %indvars.iv3233, 1
  %977 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next3234
  %978 = load double, ptr %977, align 8, !tbaa !5
  %979 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3234
  %980 = load double, ptr %979, align 8, !tbaa !5
  %981 = fsub double %978, %980
  %982 = tail call double @llvm.fmuladd.f64(double %981, double %981, double %976)
  %indvars.iv.next3234.1 = or disjoint i64 %indvars.iv3233, 2
  %983 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next3234.1
  %984 = load double, ptr %983, align 8, !tbaa !5
  %985 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3234.1
  %986 = load double, ptr %985, align 8, !tbaa !5
  %987 = fsub double %984, %986
  %988 = tail call double @llvm.fmuladd.f64(double %987, double %987, double %982)
  %indvars.iv.next3234.2 = or disjoint i64 %indvars.iv3233, 3
  %989 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next3234.2
  %990 = load double, ptr %989, align 8, !tbaa !5
  %991 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3234.2
  %992 = load double, ptr %991, align 8, !tbaa !5
  %993 = fsub double %990, %992
  %994 = tail call double @llvm.fmuladd.f64(double %993, double %993, double %988)
  %indvars.iv.next3234.3 = add nuw nsw i64 %indvars.iv3233, 4
  %niter5500.next.3 = add i64 %niter5500, 4
  %niter5500.ncmp.3 = icmp eq i64 %niter5500.next.3, %unroll_iter5499
  br i1 %niter5500.ncmp.3, label %._crit_edge2368.unr-lcssa, label %.lr.ph2367, !llvm.loop !59

._crit_edge2368.unr-lcssa:                        ; preds = %.lr.ph2367, %.lr.ph2367.preheader
  %.lcssa4856.ph = phi double [ poison, %.lr.ph2367.preheader ], [ %994, %.lr.ph2367 ]
  %indvars.iv3233.unr = phi i64 [ 0, %.lr.ph2367.preheader ], [ %indvars.iv.next3234.3, %.lr.ph2367 ]
  %.114572364.unr = phi double [ 0.000000e+00, %.lr.ph2367.preheader ], [ %994, %.lr.ph2367 ]
  br i1 %lcmp.mod5497.not, label %._crit_edge2368, label %.lr.ph2367.epil

.lr.ph2367.epil:                                  ; preds = %._crit_edge2368.unr-lcssa, %.lr.ph2367.epil
  %indvars.iv3233.epil = phi i64 [ %indvars.iv.next3234.epil, %.lr.ph2367.epil ], [ %indvars.iv3233.unr, %._crit_edge2368.unr-lcssa ]
  %.114572364.epil = phi double [ %1000, %.lr.ph2367.epil ], [ %.114572364.unr, %._crit_edge2368.unr-lcssa ]
  %epil.iter5496 = phi i64 [ %epil.iter5496.next, %.lr.ph2367.epil ], [ 0, %._crit_edge2368.unr-lcssa ]
  %995 = getelementptr inbounds double, ptr %34, i64 %indvars.iv3233.epil
  %996 = load double, ptr %995, align 8, !tbaa !5
  %997 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3233.epil
  %998 = load double, ptr %997, align 8, !tbaa !5
  %999 = fsub double %996, %998
  %1000 = tail call double @llvm.fmuladd.f64(double %999, double %999, double %.114572364.epil)
  %indvars.iv.next3234.epil = add nuw nsw i64 %indvars.iv3233.epil, 1
  %epil.iter5496.next = add i64 %epil.iter5496, 1
  %epil.iter5496.cmp.not = icmp eq i64 %epil.iter5496.next, %xtraiter5495
  br i1 %epil.iter5496.cmp.not, label %._crit_edge2368, label %.lr.ph2367.epil, !llvm.loop !60

._crit_edge2368:                                  ; preds = %.lr.ph2367.epil, %._crit_edge2368.unr-lcssa
  %.lcssa4856 = phi double [ %.lcssa4856.ph, %._crit_edge2368.unr-lcssa ], [ %1000, %.lr.ph2367.epil ]
  %1001 = tail call double @sqrt(double noundef %.lcssa4856) #10
  %1002 = icmp ult i32 %.01417, 3
  %1003 = zext i1 %1002 to i32
  %spec.select1643 = add nuw nsw i32 %.01417, %1003
  %or.cond2496 = icmp ult i32 %spec.select1643, 2
  br i1 %or.cond2496, label %.lr.ph2378.preheader, label %.lr.ph2374.preheader

.lr.ph2374.preheader:                             ; preds = %._crit_edge2368
  %.312370 = add nsw i32 %spec.select1643, -1
  %min.iters.check4635 = icmp ult i32 %spec.select1643, 49
  br i1 %min.iters.check4635, label %.lr.ph2374.preheader4764, label %vector.scevcheck4619

vector.scevcheck4619:                             ; preds = %.lr.ph2374.preheader
  %1004 = add nsw i32 %.01417, -2
  %1005 = add nsw i32 %1004, %1003
  %1006 = icmp eq i32 %.312370, 0
  %1007 = zext i32 %.312370 to i64
  %1008 = shl nuw nsw i64 %1007, 3
  %scevgep4623 = getelementptr i8, ptr %10, i64 %1008
  %1009 = zext i32 %1005 to i64
  %mul4624.neg = mul nsw i64 %1009, -8
  %1010 = getelementptr i8, ptr %scevgep4623, i64 %mul4624.neg
  %1011 = icmp ugt ptr %1010, %scevgep4623
  %1012 = zext i32 %1005 to i64
  %1013 = shl nuw nsw i64 %1012, 3
  %scevgep4627 = getelementptr i8, ptr %10, i64 %1013
  %1014 = zext i32 %1005 to i64
  %mul4628.neg = mul nsw i64 %1014, -8
  %1015 = getelementptr i8, ptr %scevgep4627, i64 %mul4628.neg
  %1016 = icmp ugt ptr %1015, %scevgep4627
  %1017 = or i1 %1006, %1011
  %1018 = or i1 %1017, %1016
  br i1 %1018, label %.lr.ph2374.preheader4764, label %vector.memcheck4631

vector.memcheck4631:                              ; preds = %vector.scevcheck4619
  %1019 = add nsw i32 %.01417, -2
  %1020 = add nsw i32 %1019, %1003
  %1021 = zext i32 %1020 to i64
  %1022 = zext i32 %.312370 to i64
  %1023 = sub nsw i64 %1021, %1022
  %1024 = and i64 %1023, 2305843009213693948
  %diff.check4632 = icmp eq i64 %1024, 0
  br i1 %diff.check4632, label %.lr.ph2374.preheader4764, label %vector.ph4636

vector.ph4636:                                    ; preds = %vector.memcheck4631
  %n.vec4638 = and i32 %.312370, -4
  %ind.end4639 = and i32 %.312370, 3
  %ind.end4641 = sub i32 %spec.select1643, %n.vec4638
  br label %vector.body4643

vector.body4643:                                  ; preds = %vector.body4643, %vector.ph4636
  %index4644 = phi i32 [ 0, %vector.ph4636 ], [ %index.next4653, %vector.body4643 ]
  %offset.idx4645 = sub i32 %.312370, %index4644
  %offset.idx4646 = sub i32 %spec.select1643, %index4644
  %1025 = add i32 %offset.idx4646, -2
  %1026 = zext i32 %1025 to i64
  %1027 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1026
  %1028 = getelementptr inbounds i8, ptr %1027, i64 -8
  %1029 = getelementptr inbounds i8, ptr %1027, i64 -24
  %wide.load4647 = load <2 x double>, ptr %1028, align 8, !tbaa !5
  %wide.load4649 = load <2 x double>, ptr %1029, align 8, !tbaa !5
  %1030 = zext i32 %offset.idx4645 to i64
  %1031 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1030
  %1032 = getelementptr inbounds i8, ptr %1031, i64 -8
  %1033 = getelementptr inbounds i8, ptr %1031, i64 -24
  store <2 x double> %wide.load4647, ptr %1032, align 8, !tbaa !5
  store <2 x double> %wide.load4649, ptr %1033, align 8, !tbaa !5
  %index.next4653 = add nuw i32 %index4644, 4
  %1034 = icmp eq i32 %index.next4653, %n.vec4638
  br i1 %1034, label %middle.block4633, label %vector.body4643, !llvm.loop !61

middle.block4633:                                 ; preds = %vector.body4643
  %cmp.n4654 = icmp eq i32 %.312370, %n.vec4638
  br i1 %cmp.n4654, label %.lr.ph2378.preheader, label %.lr.ph2374.preheader4764

.lr.ph2374.preheader4764:                         ; preds = %middle.block4633, %vector.memcheck4631, %vector.scevcheck4619, %.lr.ph2374.preheader
  %.312373.ph = phi i32 [ %.312370, %vector.memcheck4631 ], [ %.312370, %vector.scevcheck4619 ], [ %.312370, %.lr.ph2374.preheader ], [ %ind.end4639, %middle.block4633 ]
  %.31.in2372.ph = phi i32 [ %spec.select1643, %vector.memcheck4631 ], [ %spec.select1643, %vector.scevcheck4619 ], [ %spec.select1643, %.lr.ph2374.preheader ], [ %ind.end4641, %middle.block4633 ]
  %1035 = add i32 %.312373.ph, -1
  %xtraiter5501 = and i32 %.312373.ph, 3
  %lcmp.mod5502.not = icmp eq i32 %xtraiter5501, 0
  br i1 %lcmp.mod5502.not, label %.lr.ph2374.prol.loopexit, label %.lr.ph2374.prol

.lr.ph2374.prol:                                  ; preds = %.lr.ph2374.preheader4764, %.lr.ph2374.prol
  %.312373.prol = phi i32 [ %.31.prol, %.lr.ph2374.prol ], [ %.312373.ph, %.lr.ph2374.preheader4764 ]
  %.31.in2372.prol = phi i32 [ %.312373.prol, %.lr.ph2374.prol ], [ %.31.in2372.ph, %.lr.ph2374.preheader4764 ]
  %prol.iter5503 = phi i32 [ %prol.iter5503.next, %.lr.ph2374.prol ], [ 0, %.lr.ph2374.preheader4764 ]
  %1036 = add i32 %.31.in2372.prol, -2
  %1037 = zext i32 %1036 to i64
  %1038 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !5
  %1040 = zext i32 %.312373.prol to i64
  %1041 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1040
  store double %1039, ptr %1041, align 8, !tbaa !5
  %.31.prol = add i32 %.312373.prol, -1
  %prol.iter5503.next = add i32 %prol.iter5503, 1
  %prol.iter5503.cmp.not = icmp eq i32 %prol.iter5503.next, %xtraiter5501
  br i1 %prol.iter5503.cmp.not, label %.lr.ph2374.prol.loopexit, label %.lr.ph2374.prol, !llvm.loop !62

.lr.ph2374.prol.loopexit:                         ; preds = %.lr.ph2374.prol, %.lr.ph2374.preheader4764
  %.312373.unr = phi i32 [ %.312373.ph, %.lr.ph2374.preheader4764 ], [ %.31.prol, %.lr.ph2374.prol ]
  %.31.in2372.unr = phi i32 [ %.31.in2372.ph, %.lr.ph2374.preheader4764 ], [ %.312373.prol, %.lr.ph2374.prol ]
  %1042 = icmp ult i32 %1035, 3
  br i1 %1042, label %.lr.ph2378.preheader, label %.lr.ph2374

.lr.ph2374:                                       ; preds = %.lr.ph2374.prol.loopexit, %.lr.ph2374
  %.312373 = phi i32 [ %.31.3, %.lr.ph2374 ], [ %.312373.unr, %.lr.ph2374.prol.loopexit ]
  %.31.in2372 = phi i32 [ %.31.2, %.lr.ph2374 ], [ %.31.in2372.unr, %.lr.ph2374.prol.loopexit ]
  %1043 = add i32 %.31.in2372, -2
  %1044 = zext i32 %1043 to i64
  %1045 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !5
  %1047 = zext i32 %.312373 to i64
  %1048 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1047
  store double %1046, ptr %1048, align 8, !tbaa !5
  %.31 = add i32 %.312373, -1
  %1049 = add i32 %.312373, -2
  %1050 = zext i32 %1049 to i64
  %1051 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !5
  %1053 = zext i32 %.31 to i64
  %1054 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1053
  store double %1052, ptr %1054, align 8, !tbaa !5
  %.31.1 = add i32 %.312373, -2
  %1055 = add i32 %.312373, -3
  %1056 = zext i32 %1055 to i64
  %1057 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !5
  %1059 = zext i32 %.31.1 to i64
  %1060 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1059
  store double %1058, ptr %1060, align 8, !tbaa !5
  %.31.2 = add i32 %.312373, -3
  %1061 = add i32 %.312373, -4
  %1062 = zext i32 %1061 to i64
  %1063 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !5
  %1065 = zext i32 %.31.2 to i64
  %1066 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1065
  store double %1064, ptr %1066, align 8, !tbaa !5
  %.31.3 = add i32 %.312373, -4
  %.not1594.3 = icmp eq i32 %.31.3, 0
  br i1 %.not1594.3, label %.lr.ph2378.preheader, label %.lr.ph2374, !llvm.loop !63

.lr.ph2378.preheader:                             ; preds = %.lr.ph2374.prol.loopexit, %.lr.ph2374, %middle.block4633, %._crit_edge2368
  br i1 %380, label %._crit_edge2379.unr-lcssa, label %.lr.ph2378

.lr.ph2378:                                       ; preds = %.lr.ph2378.preheader, %.lr.ph2378
  %indvars.iv3238 = phi i64 [ %indvars.iv.next3239.3, %.lr.ph2378 ], [ 0, %.lr.ph2378.preheader ]
  %.614282375 = phi double [ %1078, %.lr.ph2378 ], [ 0.000000e+00, %.lr.ph2378.preheader ]
  %niter5509 = phi i64 [ %niter5509.next.3, %.lr.ph2378 ], [ 0, %.lr.ph2378.preheader ]
  %1067 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3238
  %1068 = load double, ptr %1067, align 8, !tbaa !5
  %1069 = tail call double @llvm.fmuladd.f64(double %1068, double %1068, double %.614282375)
  %indvars.iv.next3239 = or disjoint i64 %indvars.iv3238, 1
  %1070 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next3239
  %1071 = load double, ptr %1070, align 8, !tbaa !5
  %1072 = tail call double @llvm.fmuladd.f64(double %1071, double %1071, double %1069)
  %indvars.iv.next3239.1 = or disjoint i64 %indvars.iv3238, 2
  %1073 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next3239.1
  %1074 = load double, ptr %1073, align 8, !tbaa !5
  %1075 = tail call double @llvm.fmuladd.f64(double %1074, double %1074, double %1072)
  %indvars.iv.next3239.2 = or disjoint i64 %indvars.iv3238, 3
  %1076 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next3239.2
  %1077 = load double, ptr %1076, align 8, !tbaa !5
  %1078 = tail call double @llvm.fmuladd.f64(double %1077, double %1077, double %1075)
  %indvars.iv.next3239.3 = add nuw nsw i64 %indvars.iv3238, 4
  %niter5509.next.3 = add i64 %niter5509, 4
  %niter5509.ncmp.3 = icmp eq i64 %niter5509.next.3, %unroll_iter5508
  br i1 %niter5509.ncmp.3, label %._crit_edge2379.unr-lcssa, label %.lr.ph2378, !llvm.loop !64

._crit_edge2379.unr-lcssa:                        ; preds = %.lr.ph2378, %.lr.ph2378.preheader
  %.lcssa4857.ph = phi double [ poison, %.lr.ph2378.preheader ], [ %1078, %.lr.ph2378 ]
  %indvars.iv3238.unr = phi i64 [ 0, %.lr.ph2378.preheader ], [ %indvars.iv.next3239.3, %.lr.ph2378 ]
  %.614282375.unr = phi double [ 0.000000e+00, %.lr.ph2378.preheader ], [ %1078, %.lr.ph2378 ]
  br i1 %lcmp.mod5506.not, label %._crit_edge2379, label %.lr.ph2378.epil

.lr.ph2378.epil:                                  ; preds = %._crit_edge2379.unr-lcssa, %.lr.ph2378.epil
  %indvars.iv3238.epil = phi i64 [ %indvars.iv.next3239.epil, %.lr.ph2378.epil ], [ %indvars.iv3238.unr, %._crit_edge2379.unr-lcssa ]
  %.614282375.epil = phi double [ %1081, %.lr.ph2378.epil ], [ %.614282375.unr, %._crit_edge2379.unr-lcssa ]
  %epil.iter5505 = phi i64 [ %epil.iter5505.next, %.lr.ph2378.epil ], [ 0, %._crit_edge2379.unr-lcssa ]
  %1079 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3238.epil
  %1080 = load double, ptr %1079, align 8, !tbaa !5
  %1081 = tail call double @llvm.fmuladd.f64(double %1080, double %1080, double %.614282375.epil)
  %indvars.iv.next3239.epil = add nuw nsw i64 %indvars.iv3238.epil, 1
  %epil.iter5505.next = add i64 %epil.iter5505, 1
  %epil.iter5505.cmp.not = icmp eq i64 %epil.iter5505.next, %xtraiter5504
  br i1 %epil.iter5505.cmp.not, label %._crit_edge2379, label %.lr.ph2378.epil, !llvm.loop !65

._crit_edge2379:                                  ; preds = %.lr.ph2378.epil, %._crit_edge2379.unr-lcssa
  %.lcssa4857 = phi double [ %.lcssa4857.ph, %._crit_edge2379.unr-lcssa ], [ %1081, %.lr.ph2378.epil ]
  %1082 = tail call double @sqrt(double noundef %.lcssa4857) #10
  %1083 = tail call double @llvm.fabs.f64(double %.31463)
  %1084 = fmul double %1083, %1082
  %1085 = fdiv double %1001, %1084
  store double %1085, ptr %10, align 16, !tbaa !5
  %.not15952381 = icmp eq i32 %spec.select1643, 0
  br i1 %.not15952381, label %.thread3385, label %.lr.ph2386

.lr.ph2386:                                       ; preds = %._crit_edge2379
  %1086 = add nuw i32 %spec.select1643, 1
  %1087 = zext i32 %spec.select1643 to i64
  %xtraiter5511 = and i64 %1087, 1
  %1088 = icmp eq i32 %spec.select1643, 1
  br i1 %1088, label %._crit_edge2387.unr-lcssa, label %.lr.ph2386.new

.lr.ph2386.new:                                   ; preds = %.lr.ph2386
  %unroll_iter5516 = and i64 %1087, 4294967294
  br label %1089

1089:                                             ; preds = %1089, %.lr.ph2386.new
  %indvars.iv3243 = phi i64 [ 1, %.lr.ph2386.new ], [ %indvars.iv.next3244.1, %1089 ]
  %.714292383 = phi double [ 0.000000e+00, %.lr.ph2386.new ], [ %1101, %1089 ]
  %.015372382 = phi double [ 0.000000e+00, %.lr.ph2386.new ], [ %1104, %1089 ]
  %niter5517 = phi i64 [ 0, %.lr.ph2386.new ], [ %niter5517.next.1, %1089 ]
  %1090 = trunc nuw i64 %indvars.iv3243 to i32
  %1091 = sub i32 %1086, %1090
  %1092 = uitofp i32 %1091 to double
  %1093 = fadd double %.714292383, %1092
  %1094 = add nsw i64 %indvars.iv3243, -1
  %1095 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !5
  %1097 = tail call double @llvm.fmuladd.f64(double %1096, double %1092, double %.015372382)
  %1098 = trunc i64 %indvars.iv3243 to i32
  %1099 = sub i32 %spec.select1643, %1098
  %1100 = uitofp i32 %1099 to double
  %1101 = fadd double %1093, %1100
  %1102 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %indvars.iv3243
  %1103 = load double, ptr %1102, align 8, !tbaa !5
  %1104 = tail call double @llvm.fmuladd.f64(double %1103, double %1100, double %1097)
  %indvars.iv.next3244.1 = add nuw nsw i64 %indvars.iv3243, 2
  %niter5517.next.1 = add i64 %niter5517, 2
  %niter5517.ncmp.1 = icmp eq i64 %niter5517.next.1, %unroll_iter5516
  br i1 %niter5517.ncmp.1, label %._crit_edge2387.unr-lcssa, label %1089, !llvm.loop !66

._crit_edge2387.unr-lcssa:                        ; preds = %1089, %.lr.ph2386
  %.lcssa4859.ph = phi double [ poison, %.lr.ph2386 ], [ %1101, %1089 ]
  %.lcssa4858.ph = phi double [ poison, %.lr.ph2386 ], [ %1104, %1089 ]
  %indvars.iv3243.unr = phi i64 [ 1, %.lr.ph2386 ], [ %indvars.iv.next3244.1, %1089 ]
  %.714292383.unr = phi double [ 0.000000e+00, %.lr.ph2386 ], [ %1101, %1089 ]
  %.015372382.unr = phi double [ 0.000000e+00, %.lr.ph2386 ], [ %1104, %1089 ]
  %lcmp.mod5513.not = icmp eq i64 %xtraiter5511, 0
  br i1 %lcmp.mod5513.not, label %._crit_edge2387, label %._crit_edge2387.epilog-lcssa

._crit_edge2387.epilog-lcssa:                     ; preds = %._crit_edge2387.unr-lcssa
  %1105 = trunc nuw i64 %indvars.iv3243.unr to i32
  %1106 = sub i32 %1086, %1105
  %1107 = uitofp i32 %1106 to double
  %1108 = fadd double %.714292383.unr, %1107
  %1109 = add nsw i64 %indvars.iv3243.unr, -1
  %1110 = getelementptr inbounds [3 x double], ptr %10, i64 0, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !5
  %1112 = tail call double @llvm.fmuladd.f64(double %1111, double %1107, double %.015372382.unr)
  br label %._crit_edge2387

._crit_edge2387:                                  ; preds = %._crit_edge2387.unr-lcssa, %._crit_edge2387.epilog-lcssa
  %.lcssa4859 = phi double [ %.lcssa4859.ph, %._crit_edge2387.unr-lcssa ], [ %1108, %._crit_edge2387.epilog-lcssa ]
  %.lcssa4858 = phi double [ %.lcssa4858.ph, %._crit_edge2387.unr-lcssa ], [ %1112, %._crit_edge2387.epilog-lcssa ]
  %1113 = fdiv double %.lcssa4858, %.lcssa4859
  %1114 = fcmp ogt double %1113, %.1637
  br i1 %1114, label %1115, label %1124

1115:                                             ; preds = %._crit_edge2387
  %1116 = icmp eq i32 %spec.select1643, 1
  %1117 = fsub double %1113, %.1637
  %1118 = fadd double %1117, 1.000000e+00
  br i1 %1116, label %1119, label %1121

1119:                                             ; preds = %1115
  %1120 = fmul double %.31463, %1118
  br label %.thread3385

1121:                                             ; preds = %1115
  %1122 = tail call double @sqrt(double noundef %1118) #10
  %1123 = fmul double %.31463, %1122
  br label %.thread3385

1124:                                             ; preds = %._crit_edge2387
  %1125 = fcmp olt double %1113, %.1637
  br i1 %1125, label %1126, label %.thread3385

1126:                                             ; preds = %1124
  %1127 = fdiv double %1113, %.1637
  %1128 = tail call double @sqrt(double noundef %1127) #10
  %1129 = fmul double %.31463, %1128
  br label %.thread3385

.thread3385:                                      ; preds = %._crit_edge2379, %1124, %1126, %1119, %1121
  %.41464 = phi double [ %1120, %1119 ], [ %1123, %1121 ], [ %1129, %1126 ], [ %.31463, %1124 ], [ %.31463, %._crit_edge2379 ]
  %.not1596 = icmp ne i32 %.013422520, 0
  %1130 = zext i1 %.not1596 to i32
  %spec.select1644 = add i32 %.21374, %1130
  br i1 %.not.not, label %.lr.ph2391.preheader, label %1153

.lr.ph2391.preheader:                             ; preds = %.thread3385
  br i1 %min.iters.check4604, label %.lr.ph2391.preheader4763, label %vector.body4609

vector.body4609:                                  ; preds = %.lr.ph2391.preheader, %vector.body4609
  %index4610 = phi i64 [ %index.next4617, %vector.body4609 ], [ 0, %.lr.ph2391.preheader ]
  %1131 = getelementptr inbounds double, ptr %28, i64 %index4610
  %1132 = getelementptr inbounds i8, ptr %1131, i64 16
  %wide.load4611 = load <2 x double>, ptr %1131, align 8, !tbaa !5
  %wide.load4612 = load <2 x double>, ptr %1132, align 8, !tbaa !5
  %1133 = fcmp ult <2 x double> %wide.load4611, zeroinitializer
  %1134 = fcmp ult <2 x double> %wide.load4612, zeroinitializer
  %1135 = select <2 x i1> %1133, <2 x double> %broadcast.splat4614, <2 x double> %broadcast.splat4616
  %1136 = select <2 x i1> %1134, <2 x double> %broadcast.splat4614, <2 x double> %broadcast.splat4616
  %1137 = getelementptr inbounds double, ptr %38, i64 %index4610
  %1138 = getelementptr inbounds i8, ptr %1137, i64 16
  store <2 x double> %1135, ptr %1137, align 8
  store <2 x double> %1136, ptr %1138, align 8
  %index.next4617 = add nuw i64 %index4610, 4
  %1139 = icmp eq i64 %index.next4617, %n.vec4607
  br i1 %1139, label %middle.block4602, label %vector.body4609, !llvm.loop !67

middle.block4602:                                 ; preds = %vector.body4609
  br i1 %cmp.n4618, label %._crit_edge2392, label %.lr.ph2391.preheader4763

.lr.ph2391.preheader4763:                         ; preds = %middle.block4602, %.lr.ph2391.preheader
  %indvars.iv3249.ph = phi i64 [ 0, %.lr.ph2391.preheader ], [ %n.vec4607, %middle.block4602 ]
  br i1 %lcmp.mod5519.not, label %.lr.ph2391.prol.loopexit, label %.lr.ph2391.prol

.lr.ph2391.prol:                                  ; preds = %.lr.ph2391.preheader4763
  %1140 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3249.ph
  %1141 = load double, ptr %1140, align 8, !tbaa !5
  %1142 = fcmp ult double %1141, 0.000000e+00
  %.sink3373.prol = select i1 %1142, double %350, double %348
  %1143 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3249.ph
  store double %.sink3373.prol, ptr %1143, align 8
  %indvars.iv.next3250.prol = or disjoint i64 %indvars.iv3249.ph, 1
  br label %.lr.ph2391.prol.loopexit

.lr.ph2391.prol.loopexit:                         ; preds = %.lr.ph2391.prol, %.lr.ph2391.preheader4763
  %indvars.iv3249.unr = phi i64 [ %indvars.iv3249.ph, %.lr.ph2391.preheader4763 ], [ %indvars.iv.next3250.prol, %.lr.ph2391.prol ]
  %1144 = icmp eq i64 %indvars.iv3249.ph, %381
  br i1 %1144, label %._crit_edge2392, label %.lr.ph2391

.lr.ph2391:                                       ; preds = %.lr.ph2391.prol.loopexit, %.lr.ph2391
  %indvars.iv3249 = phi i64 [ %indvars.iv.next3250.1, %.lr.ph2391 ], [ %indvars.iv3249.unr, %.lr.ph2391.prol.loopexit ]
  %1145 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3249
  %1146 = load double, ptr %1145, align 8, !tbaa !5
  %1147 = fcmp ult double %1146, 0.000000e+00
  %.sink3373 = select i1 %1147, double %350, double %348
  %1148 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3249
  store double %.sink3373, ptr %1148, align 8
  %indvars.iv.next3250 = add nuw nsw i64 %indvars.iv3249, 1
  %1149 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next3250
  %1150 = load double, ptr %1149, align 8, !tbaa !5
  %1151 = fcmp ult double %1150, 0.000000e+00
  %.sink3373.1 = select i1 %1151, double %350, double %348
  %1152 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next3250
  store double %.sink3373.1, ptr %1152, align 8
  %indvars.iv.next3250.1 = add nuw nsw i64 %indvars.iv3249, 2
  %exitcond3253.not.1 = icmp eq i64 %indvars.iv.next3250.1, %wide.trip.count3252
  br i1 %exitcond3253.not.1, label %._crit_edge2392, label %.lr.ph2391, !llvm.loop !68

._crit_edge2392:                                  ; preds = %.lr.ph2391.prol.loopexit, %.lr.ph2391, %middle.block4602
  %.71524..61532 = select i1 %45, double %.71524, double %.61532
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %27, ptr noundef %1, double noundef %.71524..61532, ptr noundef %2, ptr noundef %38, i32 noundef 1, ptr noundef %7)
  br label %.lr.ph2396.preheader

1153:                                             ; preds = %.thread3385
  tail call void %3(ptr noundef %1, ptr noundef nonnull %27, ptr noundef %7) #10
  br label %.lr.ph2396.preheader

.lr.ph2396.preheader:                             ; preds = %._crit_edge2392, %1153
  %.sink3903 = phi ptr [ %142, %._crit_edge2392 ], [ %347, %1153 ]
  %.sink3902 = phi double [ %17, %._crit_edge2392 ], [ 1.000000e+00, %1153 ]
  %1154 = load double, ptr %.sink3903, align 8, !tbaa !5
  %1155 = fadd double %1154, %.sink3902
  store double %1155, ptr %.sink3903, align 8, !tbaa !5
  br i1 %382, label %._crit_edge2397.unr-lcssa, label %.lr.ph2396

.lr.ph2396:                                       ; preds = %.lr.ph2396.preheader, %.lr.ph2396
  %indvars.iv3254 = phi i64 [ %indvars.iv.next3255.3, %.lr.ph2396 ], [ 0, %.lr.ph2396.preheader ]
  %.314482393 = phi double [ %1167, %.lr.ph2396 ], [ 0.000000e+00, %.lr.ph2396.preheader ]
  %niter5526 = phi i64 [ %niter5526.next.3, %.lr.ph2396 ], [ 0, %.lr.ph2396.preheader ]
  %1156 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3254
  %1157 = load double, ptr %1156, align 8, !tbaa !5
  %1158 = tail call double @llvm.fmuladd.f64(double %1157, double %1157, double %.314482393)
  %indvars.iv.next3255 = or disjoint i64 %indvars.iv3254, 1
  %1159 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3255
  %1160 = load double, ptr %1159, align 8, !tbaa !5
  %1161 = tail call double @llvm.fmuladd.f64(double %1160, double %1160, double %1158)
  %indvars.iv.next3255.1 = or disjoint i64 %indvars.iv3254, 2
  %1162 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3255.1
  %1163 = load double, ptr %1162, align 8, !tbaa !5
  %1164 = tail call double @llvm.fmuladd.f64(double %1163, double %1163, double %1161)
  %indvars.iv.next3255.2 = or disjoint i64 %indvars.iv3254, 3
  %1165 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3255.2
  %1166 = load double, ptr %1165, align 8, !tbaa !5
  %1167 = tail call double @llvm.fmuladd.f64(double %1166, double %1166, double %1164)
  %indvars.iv.next3255.3 = add nuw nsw i64 %indvars.iv3254, 4
  %niter5526.next.3 = add i64 %niter5526, 4
  %niter5526.ncmp.3 = icmp eq i64 %niter5526.next.3, %unroll_iter5525
  br i1 %niter5526.ncmp.3, label %._crit_edge2397.unr-lcssa, label %.lr.ph2396, !llvm.loop !69

._crit_edge2397.unr-lcssa:                        ; preds = %.lr.ph2396, %.lr.ph2396.preheader
  %.lcssa4860.ph = phi double [ poison, %.lr.ph2396.preheader ], [ %1167, %.lr.ph2396 ]
  %indvars.iv3254.unr = phi i64 [ 0, %.lr.ph2396.preheader ], [ %indvars.iv.next3255.3, %.lr.ph2396 ]
  %.314482393.unr = phi double [ 0.000000e+00, %.lr.ph2396.preheader ], [ %1167, %.lr.ph2396 ]
  br i1 %lcmp.mod5523.not, label %._crit_edge2397, label %.lr.ph2396.epil

.lr.ph2396.epil:                                  ; preds = %._crit_edge2397.unr-lcssa, %.lr.ph2396.epil
  %indvars.iv3254.epil = phi i64 [ %indvars.iv.next3255.epil, %.lr.ph2396.epil ], [ %indvars.iv3254.unr, %._crit_edge2397.unr-lcssa ]
  %.314482393.epil = phi double [ %1170, %.lr.ph2396.epil ], [ %.314482393.unr, %._crit_edge2397.unr-lcssa ]
  %epil.iter5522 = phi i64 [ %epil.iter5522.next, %.lr.ph2396.epil ], [ 0, %._crit_edge2397.unr-lcssa ]
  %1168 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3254.epil
  %1169 = load double, ptr %1168, align 8, !tbaa !5
  %1170 = tail call double @llvm.fmuladd.f64(double %1169, double %1169, double %.314482393.epil)
  %indvars.iv.next3255.epil = add nuw nsw i64 %indvars.iv3254.epil, 1
  %epil.iter5522.next = add i64 %epil.iter5522, 1
  %epil.iter5522.cmp.not = icmp eq i64 %epil.iter5522.next, %xtraiter5521
  br i1 %epil.iter5522.cmp.not, label %._crit_edge2397, label %.lr.ph2396.epil, !llvm.loop !70

._crit_edge2397:                                  ; preds = %.lr.ph2396.epil, %._crit_edge2397.unr-lcssa
  %.lcssa4860 = phi double [ %.lcssa4860.ph, %._crit_edge2397.unr-lcssa ], [ %1170, %.lr.ph2396.epil ]
  %1171 = tail call double @sqrt(double noundef %.lcssa4860) #10
  %1172 = fcmp ult double %1171, 0x7FDFFFFFFFFFFFFF
  br i1 %1172, label %1177, label %1173

1173:                                             ; preds = %._crit_edge2397
  br i1 %.not1589, label %1176, label %1174

1174:                                             ; preds = %1173
  %1175 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %1176

1176:                                             ; preds = %1174, %1173
  store double -4.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1177:                                             ; preds = %._crit_edge2397
  %1178 = fcmp uge double %1171, %135
  %brmerge = or i1 %.not1589, %1178
  %.mux = select i1 %1178, double %1171, double %135
  br i1 %brmerge, label %1181, label %1179

1179:                                             ; preds = %1177
  %1180 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  br label %1181

1181:                                             ; preds = %1177, %1179
  %.41449 = phi double [ %.mux, %1177 ], [ %135, %1179 ]
  %1182 = icmp eq i32 %.8, 0
  %or.cond35.not = select i1 %45, i1 %1182, i1 false
  br i1 %or.cond35.not, label %1183, label %1266

1183:                                             ; preds = %1181
  %1184 = fmul double %.31476, 1.000000e-02
  %1185 = fcmp olt double %.41449, %1184
  br i1 %1185, label %1186, label %1191

1186:                                             ; preds = %1183
  %1187 = add i32 %.31483, 1
  %1188 = icmp ugt i32 %1187, 19
  br i1 %1188, label %1189, label %1191

1189:                                             ; preds = %1186
  %1190 = fdiv double %.31476, 1.000000e+01
  br label %1191

1191:                                             ; preds = %1183, %1186, %1189
  %.41484 = phi i32 [ 0, %1189 ], [ %1187, %1186 ], [ 0, %1183 ]
  %.41477 = phi double [ %1190, %1189 ], [ %.31476, %1186 ], [ %.31476, %1183 ]
  %.41339 = phi i32 [ 1, %1189 ], [ %.31338, %1186 ], [ %.31338, %1183 ]
  br i1 %49, label %.lr.ph2400.preheader, label %1214

.lr.ph2400.preheader:                             ; preds = %1191
  br i1 %or.cond4753, label %.lr.ph2400.preheader4762, label %vector.body4590

vector.body4590:                                  ; preds = %.lr.ph2400.preheader, %vector.body4590
  %index4591 = phi i64 [ %index.next4598, %vector.body4590 ], [ 0, %.lr.ph2400.preheader ]
  %1192 = getelementptr inbounds double, ptr %1, i64 %index4591
  %1193 = getelementptr inbounds i8, ptr %1192, i64 16
  %wide.load4592 = load <2 x double>, ptr %1192, align 8, !tbaa !5
  %wide.load4593 = load <2 x double>, ptr %1193, align 8, !tbaa !5
  %1194 = fcmp ult <2 x double> %wide.load4592, zeroinitializer
  %1195 = fcmp ult <2 x double> %wide.load4593, zeroinitializer
  %1196 = select <2 x i1> %1194, <2 x double> %broadcast.splat4595, <2 x double> %broadcast.splat4597
  %1197 = select <2 x i1> %1195, <2 x double> %broadcast.splat4595, <2 x double> %broadcast.splat4597
  %1198 = getelementptr inbounds double, ptr %38, i64 %index4591
  %1199 = getelementptr inbounds i8, ptr %1198, i64 16
  store <2 x double> %1196, ptr %1198, align 8
  store <2 x double> %1197, ptr %1199, align 8
  %index.next4598 = add nuw i64 %index4591, 4
  %1200 = icmp eq i64 %index.next4598, %n.vec4588
  br i1 %1200, label %middle.block4583, label %vector.body4590, !llvm.loop !71

middle.block4583:                                 ; preds = %vector.body4590
  br i1 %cmp.n4599, label %._crit_edge2401, label %.lr.ph2400.preheader4762

.lr.ph2400.preheader4762:                         ; preds = %middle.block4583, %.lr.ph2400.preheader
  %indvars.iv3259.ph = phi i64 [ 0, %.lr.ph2400.preheader ], [ %n.vec4588, %middle.block4583 ]
  br i1 %lcmp.mod5528.not, label %.lr.ph2400.prol.loopexit, label %.lr.ph2400.prol

.lr.ph2400.prol:                                  ; preds = %.lr.ph2400.preheader4762
  %1201 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3259.ph
  %1202 = load double, ptr %1201, align 8, !tbaa !5
  %1203 = fcmp ult double %1202, 0.000000e+00
  %.sink3374.prol = select i1 %1203, double %352, double %134
  %1204 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3259.ph
  store double %.sink3374.prol, ptr %1204, align 8
  %indvars.iv.next3260.prol = or disjoint i64 %indvars.iv3259.ph, 1
  br label %.lr.ph2400.prol.loopexit

.lr.ph2400.prol.loopexit:                         ; preds = %.lr.ph2400.prol, %.lr.ph2400.preheader4762
  %indvars.iv3259.unr = phi i64 [ %indvars.iv3259.ph, %.lr.ph2400.preheader4762 ], [ %indvars.iv.next3260.prol, %.lr.ph2400.prol ]
  %1205 = icmp eq i64 %indvars.iv3259.ph, %383
  br i1 %1205, label %._crit_edge2401, label %.lr.ph2400

.lr.ph2400:                                       ; preds = %.lr.ph2400.prol.loopexit, %.lr.ph2400
  %indvars.iv3259 = phi i64 [ %indvars.iv.next3260.1, %.lr.ph2400 ], [ %indvars.iv3259.unr, %.lr.ph2400.prol.loopexit ]
  %1206 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3259
  %1207 = load double, ptr %1206, align 8, !tbaa !5
  %1208 = fcmp ult double %1207, 0.000000e+00
  %.sink3374 = select i1 %1208, double %352, double %134
  %1209 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3259
  store double %.sink3374, ptr %1209, align 8
  %indvars.iv.next3260 = add nuw nsw i64 %indvars.iv3259, 1
  %1210 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3260
  %1211 = load double, ptr %1210, align 8, !tbaa !5
  %1212 = fcmp ult double %1211, 0.000000e+00
  %.sink3374.1 = select i1 %1212, double %352, double %134
  %1213 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next3260
  store double %.sink3374.1, ptr %1213, align 8
  %indvars.iv.next3260.1 = add nuw nsw i64 %indvars.iv3259, 2
  %exitcond3263.not.1 = icmp eq i64 %indvars.iv.next3260.1, %wide.trip.count3262
  br i1 %exitcond3263.not.1, label %._crit_edge2401, label %.lr.ph2400, !llvm.loop !72

._crit_edge2401:                                  ; preds = %.lr.ph2400.prol.loopexit, %.lr.ph2400, %middle.block4583
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %1, double noundef %.61510, ptr noundef %5, ptr noundef %38, i32 noundef 0, ptr noundef %7)
  br label %.lr.ph2405.preheader

1214:                                             ; preds = %1191
  tail call void %6(ptr noundef %1, ptr noundef nonnull %31, ptr noundef %7) #10
  br label %.lr.ph2405.preheader

.lr.ph2405.preheader:                             ; preds = %._crit_edge2401, %1214
  %.sink3908 = phi ptr [ %346, %._crit_edge2401 ], [ %351, %1214 ]
  %.sink3907 = phi double [ %17, %._crit_edge2401 ], [ 1.000000e+00, %1214 ]
  %1215 = load double, ptr %.sink3908, align 8, !tbaa !5
  %1216 = fadd double %1215, %.sink3907
  store double %1216, ptr %.sink3908, align 8, !tbaa !5
  br i1 %384, label %._crit_edge2406.unr-lcssa, label %.lr.ph2405

.lr.ph2405:                                       ; preds = %.lr.ph2405.preheader, %.lr.ph2405
  %indvars.iv3264 = phi i64 [ %indvars.iv.next3265.3, %.lr.ph2405 ], [ 0, %.lr.ph2405.preheader ]
  %.114442402 = phi double [ %1228, %.lr.ph2405 ], [ 0.000000e+00, %.lr.ph2405.preheader ]
  %niter5535 = phi i64 [ %niter5535.next.3, %.lr.ph2405 ], [ 0, %.lr.ph2405.preheader ]
  %1217 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3264
  %1218 = load double, ptr %1217, align 8, !tbaa !5
  %1219 = tail call double @llvm.fmuladd.f64(double %1218, double %1218, double %.114442402)
  %indvars.iv.next3265 = or disjoint i64 %indvars.iv3264, 1
  %1220 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3265
  %1221 = load double, ptr %1220, align 8, !tbaa !5
  %1222 = tail call double @llvm.fmuladd.f64(double %1221, double %1221, double %1219)
  %indvars.iv.next3265.1 = or disjoint i64 %indvars.iv3264, 2
  %1223 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3265.1
  %1224 = load double, ptr %1223, align 8, !tbaa !5
  %1225 = tail call double @llvm.fmuladd.f64(double %1224, double %1224, double %1222)
  %indvars.iv.next3265.2 = or disjoint i64 %indvars.iv3264, 3
  %1226 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3265.2
  %1227 = load double, ptr %1226, align 8, !tbaa !5
  %1228 = tail call double @llvm.fmuladd.f64(double %1227, double %1227, double %1225)
  %indvars.iv.next3265.3 = add nuw nsw i64 %indvars.iv3264, 4
  %niter5535.next.3 = add i64 %niter5535, 4
  %niter5535.ncmp.3 = icmp eq i64 %niter5535.next.3, %unroll_iter5534
  br i1 %niter5535.ncmp.3, label %._crit_edge2406.unr-lcssa, label %.lr.ph2405, !llvm.loop !73

._crit_edge2406.unr-lcssa:                        ; preds = %.lr.ph2405, %.lr.ph2405.preheader
  %.lcssa4861.ph = phi double [ poison, %.lr.ph2405.preheader ], [ %1228, %.lr.ph2405 ]
  %indvars.iv3264.unr = phi i64 [ 0, %.lr.ph2405.preheader ], [ %indvars.iv.next3265.3, %.lr.ph2405 ]
  %.114442402.unr = phi double [ 0.000000e+00, %.lr.ph2405.preheader ], [ %1228, %.lr.ph2405 ]
  br i1 %lcmp.mod5532.not, label %._crit_edge2406, label %.lr.ph2405.epil

.lr.ph2405.epil:                                  ; preds = %._crit_edge2406.unr-lcssa, %.lr.ph2405.epil
  %indvars.iv3264.epil = phi i64 [ %indvars.iv.next3265.epil, %.lr.ph2405.epil ], [ %indvars.iv3264.unr, %._crit_edge2406.unr-lcssa ]
  %.114442402.epil = phi double [ %1231, %.lr.ph2405.epil ], [ %.114442402.unr, %._crit_edge2406.unr-lcssa ]
  %epil.iter5531 = phi i64 [ %epil.iter5531.next, %.lr.ph2405.epil ], [ 0, %._crit_edge2406.unr-lcssa ]
  %1229 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3264.epil
  %1230 = load double, ptr %1229, align 8, !tbaa !5
  %1231 = tail call double @llvm.fmuladd.f64(double %1230, double %1230, double %.114442402.epil)
  %indvars.iv.next3265.epil = add nuw nsw i64 %indvars.iv3264.epil, 1
  %epil.iter5531.next = add i64 %epil.iter5531, 1
  %epil.iter5531.cmp.not = icmp eq i64 %epil.iter5531.next, %xtraiter5530
  br i1 %epil.iter5531.cmp.not, label %._crit_edge2406, label %.lr.ph2405.epil, !llvm.loop !74

._crit_edge2406:                                  ; preds = %.lr.ph2405.epil, %._crit_edge2406.unr-lcssa
  %.lcssa4861 = phi double [ %.lcssa4861.ph, %._crit_edge2406.unr-lcssa ], [ %1231, %.lr.ph2405.epil ]
  %1232 = tail call double @sqrt(double noundef %.lcssa4861) #10
  %1233 = fcmp ult double %1232, 0x7FDFFFFFFFFFFFFF
  br i1 %1233, label %1238, label %1234

1234:                                             ; preds = %._crit_edge2406
  br i1 %.not1589, label %1237, label %1235

1235:                                             ; preds = %1234
  %1236 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  br label %1237

1237:                                             ; preds = %1235, %1234
  store double -6.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1238:                                             ; preds = %._crit_edge2406
  %1239 = fcmp uge double %1232, %135
  %or.cond7 = or i1 %49, %1239
  br i1 %or.cond7, label %.lr.ph2410.preheader, label %1240

.lr.ph2410.preheader:                             ; preds = %1238
  br i1 %385, label %._crit_edge2411.unr-lcssa, label %.lr.ph2410

1240:                                             ; preds = %1238
  br i1 %.not1589, label %1243, label %1241

1241:                                             ; preds = %1240
  %1242 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  br label %1243

1243:                                             ; preds = %1241, %1240
  store double -6.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

.lr.ph2410:                                       ; preds = %.lr.ph2410.preheader, %.lr.ph2410
  %indvars.iv3269 = phi i64 [ %indvars.iv.next3270.1, %.lr.ph2410 ], [ 0, %.lr.ph2410.preheader ]
  %.514502408 = phi double [ %1255, %.lr.ph2410 ], [ 0.000000e+00, %.lr.ph2410.preheader ]
  %niter5541 = phi i64 [ %niter5541.next.1, %.lr.ph2410 ], [ 0, %.lr.ph2410.preheader ]
  %1244 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3269
  %1245 = load double, ptr %1244, align 8, !tbaa !5
  %1246 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3269
  %1247 = load double, ptr %1246, align 8, !tbaa !5
  %1248 = tail call double @llvm.fmuladd.f64(double %.41477, double %1245, double %1247)
  store double %1248, ptr %1246, align 8, !tbaa !5
  %1249 = tail call double @llvm.fmuladd.f64(double %1248, double %1248, double %.514502408)
  %indvars.iv.next3270 = or disjoint i64 %indvars.iv3269, 1
  %1250 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next3270
  %1251 = load double, ptr %1250, align 8, !tbaa !5
  %1252 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3270
  %1253 = load double, ptr %1252, align 8, !tbaa !5
  %1254 = tail call double @llvm.fmuladd.f64(double %.41477, double %1251, double %1253)
  store double %1254, ptr %1252, align 8, !tbaa !5
  %1255 = tail call double @llvm.fmuladd.f64(double %1254, double %1254, double %1249)
  %indvars.iv.next3270.1 = add nuw nsw i64 %indvars.iv3269, 2
  %niter5541.next.1 = add i64 %niter5541, 2
  %niter5541.ncmp.1 = icmp eq i64 %niter5541.next.1, %unroll_iter5540
  br i1 %niter5541.ncmp.1, label %._crit_edge2411.unr-lcssa, label %.lr.ph2410, !llvm.loop !75

._crit_edge2411.unr-lcssa:                        ; preds = %.lr.ph2410, %.lr.ph2410.preheader
  %.lcssa4862.ph = phi double [ poison, %.lr.ph2410.preheader ], [ %1255, %.lr.ph2410 ]
  %indvars.iv3269.unr = phi i64 [ 0, %.lr.ph2410.preheader ], [ %indvars.iv.next3270.1, %.lr.ph2410 ]
  %.514502408.unr = phi double [ 0.000000e+00, %.lr.ph2410.preheader ], [ %1255, %.lr.ph2410 ]
  br i1 %lcmp.mod5538.not, label %._crit_edge2411, label %.lr.ph2410.epil

.lr.ph2410.epil:                                  ; preds = %._crit_edge2411.unr-lcssa
  %1256 = getelementptr inbounds double, ptr %31, i64 %indvars.iv3269.unr
  %1257 = load double, ptr %1256, align 8, !tbaa !5
  %1258 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3269.unr
  %1259 = load double, ptr %1258, align 8, !tbaa !5
  %1260 = tail call double @llvm.fmuladd.f64(double %.41477, double %1257, double %1259)
  store double %1260, ptr %1258, align 8, !tbaa !5
  %1261 = tail call double @llvm.fmuladd.f64(double %1260, double %1260, double %.514502408.unr)
  br label %._crit_edge2411

._crit_edge2411:                                  ; preds = %._crit_edge2411.unr-lcssa, %.lr.ph2410.epil
  %.lcssa4862 = phi double [ %.lcssa4862.ph, %._crit_edge2411.unr-lcssa ], [ %1261, %.lr.ph2410.epil ]
  %1262 = tail call double @sqrt(double noundef %.lcssa4862) #10
  %.not1600 = icmp eq i32 %.41339, 0
  br i1 %.not1600, label %1266, label %1263

1263:                                             ; preds = %._crit_edge2411
  br i1 %.not1589, label %.preheader1694.preheader.backedge, label %1264

1264:                                             ; preds = %1263
  %1265 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15)
  br label %.preheader1694.preheader.backedge

1266:                                             ; preds = %._crit_edge2411, %1181
  %.51485 = phi i32 [ %.31483, %1181 ], [ %.41484, %._crit_edge2411 ]
  %.51478 = phi double [ %.31476, %1181 ], [ %.41477, %._crit_edge2411 ]
  %.61451 = phi double [ %.41449, %1181 ], [ %1262, %._crit_edge2411 ]
  %.51340 = phi i32 [ %.31338, %1181 ], [ 0, %._crit_edge2411 ]
  %1267 = fmul double %.01467, %.61532
  %1268 = fmul double %.01467, %.11488
  %1269 = fcmp ule double %1267, %1268
  br i1 %1269, label %.loopexit1679, label %.lr.ph2414.preheader

.lr.ph2414.preheader:                             ; preds = %1266
  br i1 %min.iters.check4568, label %.lr.ph2414.preheader4761, label %vector.body4573

vector.body4573:                                  ; preds = %.lr.ph2414.preheader, %vector.body4573
  %index4574 = phi i64 [ %index.next4579, %vector.body4573 ], [ 0, %.lr.ph2414.preheader ]
  %1270 = getelementptr inbounds double, ptr %1, i64 %index4574
  %1271 = getelementptr inbounds i8, ptr %1270, i64 16
  %wide.load4575 = load <2 x double>, ptr %1270, align 8, !tbaa !5
  %wide.load4576 = load <2 x double>, ptr %1271, align 8, !tbaa !5
  %1272 = getelementptr inbounds double, ptr %35, i64 %index4574
  %1273 = getelementptr inbounds i8, ptr %1272, i64 16
  store <2 x double> %wide.load4575, ptr %1272, align 8, !tbaa !5
  store <2 x double> %wide.load4576, ptr %1273, align 8, !tbaa !5
  %1274 = getelementptr inbounds double, ptr %27, i64 %index4574
  %1275 = getelementptr inbounds i8, ptr %1274, i64 16
  %wide.load4577 = load <2 x double>, ptr %1274, align 8, !tbaa !5
  %wide.load4578 = load <2 x double>, ptr %1275, align 8, !tbaa !5
  %1276 = getelementptr inbounds double, ptr %36, i64 %index4574
  %1277 = getelementptr inbounds i8, ptr %1276, i64 16
  store <2 x double> %wide.load4577, ptr %1276, align 8, !tbaa !5
  store <2 x double> %wide.load4578, ptr %1277, align 8, !tbaa !5
  %index.next4579 = add nuw i64 %index4574, 4
  %1278 = icmp eq i64 %index.next4579, %n.vec4571
  br i1 %1278, label %middle.block4566, label %vector.body4573, !llvm.loop !76

middle.block4566:                                 ; preds = %vector.body4573
  br i1 %cmp.n4580, label %.loopexit1679, label %.lr.ph2414.preheader4761

.lr.ph2414.preheader4761:                         ; preds = %middle.block4566, %.lr.ph2414.preheader
  %indvars.iv3274.ph = phi i64 [ 0, %.lr.ph2414.preheader ], [ %n.vec4571, %middle.block4566 ]
  br i1 %lcmp.mod5543.not, label %.lr.ph2414.prol.loopexit, label %.lr.ph2414.prol

.lr.ph2414.prol:                                  ; preds = %.lr.ph2414.preheader4761
  %1279 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3274.ph
  %1280 = load double, ptr %1279, align 8, !tbaa !5
  %1281 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3274.ph
  store double %1280, ptr %1281, align 8, !tbaa !5
  %1282 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3274.ph
  %1283 = load double, ptr %1282, align 8, !tbaa !5
  %1284 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3274.ph
  store double %1283, ptr %1284, align 8, !tbaa !5
  %indvars.iv.next3275.prol = or disjoint i64 %indvars.iv3274.ph, 1
  br label %.lr.ph2414.prol.loopexit

.lr.ph2414.prol.loopexit:                         ; preds = %.lr.ph2414.prol, %.lr.ph2414.preheader4761
  %indvars.iv3274.unr = phi i64 [ %indvars.iv3274.ph, %.lr.ph2414.preheader4761 ], [ %indvars.iv.next3275.prol, %.lr.ph2414.prol ]
  %1285 = icmp eq i64 %indvars.iv3274.ph, %386
  br i1 %1285, label %.loopexit1679, label %.lr.ph2414

.lr.ph2414:                                       ; preds = %.lr.ph2414.prol.loopexit, %.lr.ph2414
  %indvars.iv3274 = phi i64 [ %indvars.iv.next3275.1, %.lr.ph2414 ], [ %indvars.iv3274.unr, %.lr.ph2414.prol.loopexit ]
  %1286 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3274
  %1287 = load double, ptr %1286, align 8, !tbaa !5
  %1288 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3274
  store double %1287, ptr %1288, align 8, !tbaa !5
  %1289 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3274
  %1290 = load double, ptr %1289, align 8, !tbaa !5
  %1291 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3274
  store double %1290, ptr %1291, align 8, !tbaa !5
  %indvars.iv.next3275 = add nuw nsw i64 %indvars.iv3274, 1
  %1292 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3275
  %1293 = load double, ptr %1292, align 8, !tbaa !5
  %1294 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next3275
  store double %1293, ptr %1294, align 8, !tbaa !5
  %1295 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3275
  %1296 = load double, ptr %1295, align 8, !tbaa !5
  %1297 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next3275
  store double %1296, ptr %1297, align 8, !tbaa !5
  %indvars.iv.next3275.1 = add nuw nsw i64 %indvars.iv3274, 2
  %exitcond3278.not.1 = icmp eq i64 %indvars.iv.next3275.1, %wide.trip.count3277
  br i1 %exitcond3278.not.1, label %.loopexit1679, label %.lr.ph2414, !llvm.loop !77

.loopexit1679:                                    ; preds = %.lr.ph2414.prol.loopexit, %.lr.ph2414, %middle.block4566, %1266
  %.21489 = phi double [ %.11488, %1266 ], [ %.61532, %middle.block4566 ], [ %.61532, %.lr.ph2414 ], [ %.61532, %.lr.ph2414.prol.loopexit ]
  %1298 = fcmp ogt double %.61451, %135
  br i1 %1298, label %1299, label %.lr.ph2429.preheader

1299:                                             ; preds = %.loopexit1679
  %1300 = icmp ult i32 %.11347, 10
  %1301 = zext i1 %1300 to i32
  %spec.select1645 = add nuw nsw i32 %.11347, %1301
  %or.cond2500 = icmp ult i32 %spec.select1645, 2
  br i1 %or.cond2500, label %.loopexit1677, label %.lr.ph2419.preheader

.lr.ph2419.preheader:                             ; preds = %1299
  %.382415 = add i32 %spec.select1645, -1
  %min.iters.check4544 = icmp ult i32 %spec.select1645, 49
  br i1 %min.iters.check4544, label %.lr.ph2419.preheader4760, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph2419.preheader
  %1302 = add i32 %.11347, -2
  %1303 = add i32 %1302, %1301
  %1304 = icmp eq i32 %.382415, 0
  %1305 = zext i32 %.382415 to i64
  %1306 = shl nuw nsw i64 %1305, 3
  %scevgep = getelementptr i8, ptr %11, i64 %1306
  %1307 = zext i32 %1303 to i64
  %mul4533.neg = mul nsw i64 %1307, -8
  %1308 = getelementptr i8, ptr %scevgep, i64 %mul4533.neg
  %1309 = icmp ugt ptr %1308, %scevgep
  %1310 = zext i32 %1303 to i64
  %1311 = shl nuw nsw i64 %1310, 3
  %scevgep4536 = getelementptr i8, ptr %11, i64 %1311
  %1312 = zext i32 %1303 to i64
  %mul4537.neg = mul nsw i64 %1312, -8
  %1313 = getelementptr i8, ptr %scevgep4536, i64 %mul4537.neg
  %1314 = icmp ugt ptr %1313, %scevgep4536
  %1315 = or i1 %1304, %1309
  %1316 = or i1 %1315, %1314
  br i1 %1316, label %.lr.ph2419.preheader4760, label %vector.memcheck4540

vector.memcheck4540:                              ; preds = %vector.scevcheck
  %1317 = add i32 %.11347, -2
  %1318 = add i32 %1317, %1301
  %1319 = zext i32 %1318 to i64
  %1320 = zext i32 %.382415 to i64
  %1321 = sub nsw i64 %1319, %1320
  %1322 = and i64 %1321, 2305843009213693948
  %diff.check4541 = icmp eq i64 %1322, 0
  br i1 %diff.check4541, label %.lr.ph2419.preheader4760, label %vector.ph4545

vector.ph4545:                                    ; preds = %vector.memcheck4540
  %n.vec4547 = and i32 %.382415, -4
  %ind.end = and i32 %.382415, 3
  %ind.end4549 = sub i32 %spec.select1645, %n.vec4547
  br label %vector.body4551

vector.body4551:                                  ; preds = %vector.body4551, %vector.ph4545
  %index4552 = phi i32 [ 0, %vector.ph4545 ], [ %index.next4559, %vector.body4551 ]
  %offset.idx = sub i32 %.382415, %index4552
  %offset.idx4553 = sub i32 %spec.select1645, %index4552
  %1323 = add i32 %offset.idx4553, -2
  %1324 = zext i32 %1323 to i64
  %1325 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1324
  %1326 = getelementptr inbounds i8, ptr %1325, i64 -8
  %1327 = getelementptr inbounds i8, ptr %1325, i64 -24
  %wide.load4554 = load <2 x double>, ptr %1326, align 8, !tbaa !5
  %wide.load4555 = load <2 x double>, ptr %1327, align 8, !tbaa !5
  %1328 = zext i32 %offset.idx to i64
  %1329 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1328
  %1330 = getelementptr inbounds i8, ptr %1329, i64 -8
  %1331 = getelementptr inbounds i8, ptr %1329, i64 -24
  store <2 x double> %wide.load4554, ptr %1330, align 8, !tbaa !5
  store <2 x double> %wide.load4555, ptr %1331, align 8, !tbaa !5
  %index.next4559 = add nuw i32 %index4552, 4
  %1332 = icmp eq i32 %index.next4559, %n.vec4547
  br i1 %1332, label %middle.block4542, label %vector.body4551, !llvm.loop !78

middle.block4542:                                 ; preds = %vector.body4551
  %cmp.n4560 = icmp eq i32 %.382415, %n.vec4547
  br i1 %cmp.n4560, label %.loopexit1677, label %.lr.ph2419.preheader4760

.lr.ph2419.preheader4760:                         ; preds = %middle.block4542, %vector.memcheck4540, %vector.scevcheck, %.lr.ph2419.preheader
  %.382418.ph = phi i32 [ %.382415, %vector.memcheck4540 ], [ %.382415, %vector.scevcheck ], [ %.382415, %.lr.ph2419.preheader ], [ %ind.end, %middle.block4542 ]
  %.38.in2417.ph = phi i32 [ %spec.select1645, %vector.memcheck4540 ], [ %spec.select1645, %vector.scevcheck ], [ %spec.select1645, %.lr.ph2419.preheader ], [ %ind.end4549, %middle.block4542 ]
  %1333 = add i32 %.382418.ph, -1
  %xtraiter5545 = and i32 %.382418.ph, 3
  %lcmp.mod5546.not = icmp eq i32 %xtraiter5545, 0
  br i1 %lcmp.mod5546.not, label %.lr.ph2419.prol.loopexit, label %.lr.ph2419.prol

.lr.ph2419.prol:                                  ; preds = %.lr.ph2419.preheader4760, %.lr.ph2419.prol
  %.382418.prol = phi i32 [ %.38.prol, %.lr.ph2419.prol ], [ %.382418.ph, %.lr.ph2419.preheader4760 ]
  %.38.in2417.prol = phi i32 [ %.382418.prol, %.lr.ph2419.prol ], [ %.38.in2417.ph, %.lr.ph2419.preheader4760 ]
  %prol.iter5547 = phi i32 [ %prol.iter5547.next, %.lr.ph2419.prol ], [ 0, %.lr.ph2419.preheader4760 ]
  %1334 = add i32 %.38.in2417.prol, -2
  %1335 = zext i32 %1334 to i64
  %1336 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !5
  %1338 = zext i32 %.382418.prol to i64
  %1339 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1338
  store double %1337, ptr %1339, align 8, !tbaa !5
  %.38.prol = add i32 %.382418.prol, -1
  %prol.iter5547.next = add i32 %prol.iter5547, 1
  %prol.iter5547.cmp.not = icmp eq i32 %prol.iter5547.next, %xtraiter5545
  br i1 %prol.iter5547.cmp.not, label %.lr.ph2419.prol.loopexit, label %.lr.ph2419.prol, !llvm.loop !79

.lr.ph2419.prol.loopexit:                         ; preds = %.lr.ph2419.prol, %.lr.ph2419.preheader4760
  %.382418.unr = phi i32 [ %.382418.ph, %.lr.ph2419.preheader4760 ], [ %.38.prol, %.lr.ph2419.prol ]
  %.38.in2417.unr = phi i32 [ %.38.in2417.ph, %.lr.ph2419.preheader4760 ], [ %.382418.prol, %.lr.ph2419.prol ]
  %1340 = icmp ult i32 %1333, 3
  br i1 %1340, label %.loopexit1677, label %.lr.ph2419

.lr.ph2419:                                       ; preds = %.lr.ph2419.prol.loopexit, %.lr.ph2419
  %.382418 = phi i32 [ %.38.3, %.lr.ph2419 ], [ %.382418.unr, %.lr.ph2419.prol.loopexit ]
  %.38.in2417 = phi i32 [ %.38.2, %.lr.ph2419 ], [ %.38.in2417.unr, %.lr.ph2419.prol.loopexit ]
  %1341 = add i32 %.38.in2417, -2
  %1342 = zext i32 %1341 to i64
  %1343 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !5
  %1345 = zext i32 %.382418 to i64
  %1346 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1345
  store double %1344, ptr %1346, align 8, !tbaa !5
  %.38 = add i32 %.382418, -1
  %1347 = add i32 %.382418, -2
  %1348 = zext i32 %1347 to i64
  %1349 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1348
  %1350 = load double, ptr %1349, align 8, !tbaa !5
  %1351 = zext i32 %.38 to i64
  %1352 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1351
  store double %1350, ptr %1352, align 8, !tbaa !5
  %.38.1 = add i32 %.382418, -2
  %1353 = add i32 %.382418, -3
  %1354 = zext i32 %1353 to i64
  %1355 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !5
  %1357 = zext i32 %.38.1 to i64
  %1358 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1357
  store double %1356, ptr %1358, align 8, !tbaa !5
  %.38.2 = add i32 %.382418, -3
  %1359 = add i32 %.382418, -4
  %1360 = zext i32 %1359 to i64
  %1361 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1360
  %1362 = load double, ptr %1361, align 8, !tbaa !5
  %1363 = zext i32 %.38.2 to i64
  %1364 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %1363
  store double %1362, ptr %1364, align 8, !tbaa !5
  %.38.3 = add i32 %.382418, -4
  %.not1603.3 = icmp eq i32 %.38.3, 0
  br i1 %.not1603.3, label %.loopexit1677, label %.lr.ph2419, !llvm.loop !80

.loopexit1677:                                    ; preds = %.lr.ph2419.prol.loopexit, %.lr.ph2419, %middle.block4542, %1299
  store double %.61451, ptr %11, align 16, !tbaa !5
  %.not2502 = icmp eq i32 %spec.select1645, 0
  br i1 %.not2502, label %._crit_edge2424, label %.lr.ph2423.preheader

.lr.ph2423.preheader:                             ; preds = %.loopexit1677
  %wide.trip.count3282 = zext i32 %spec.select1645 to i64
  %1365 = zext i32 %.11347 to i64
  %1366 = add nsw i64 %1365, -1
  %1367 = zext i1 %1300 to i64
  %1368 = add nsw i64 %1366, %1367
  %xtraiter5548 = and i64 %wide.trip.count3282, 7
  %1369 = icmp ult i64 %1368, 7
  br i1 %1369, label %._crit_edge2424.loopexit.unr-lcssa, label %.lr.ph2423.preheader.new

.lr.ph2423.preheader.new:                         ; preds = %.lr.ph2423.preheader
  %unroll_iter5552 = and i64 %wide.trip.count3282, 4294967288
  br label %.lr.ph2423

.lr.ph2423:                                       ; preds = %.lr.ph2423, %.lr.ph2423.preheader.new
  %indvars.iv3279 = phi i64 [ 0, %.lr.ph2423.preheader.new ], [ %indvars.iv.next3280.7, %.lr.ph2423 ]
  %.214402420 = phi double [ 1.000000e+00, %.lr.ph2423.preheader.new ], [ %1393, %.lr.ph2423 ]
  %niter5553 = phi i64 [ 0, %.lr.ph2423.preheader.new ], [ %niter5553.next.7, %.lr.ph2423 ]
  %1370 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv3279
  %1371 = load double, ptr %1370, align 16, !tbaa !5
  %1372 = fmul double %.214402420, %1371
  %indvars.iv.next3280 = or disjoint i64 %indvars.iv3279, 1
  %1373 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280
  %1374 = load double, ptr %1373, align 8, !tbaa !5
  %1375 = fmul double %1372, %1374
  %indvars.iv.next3280.1 = or disjoint i64 %indvars.iv3279, 2
  %1376 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.1
  %1377 = load double, ptr %1376, align 16, !tbaa !5
  %1378 = fmul double %1375, %1377
  %indvars.iv.next3280.2 = or disjoint i64 %indvars.iv3279, 3
  %1379 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.2
  %1380 = load double, ptr %1379, align 8, !tbaa !5
  %1381 = fmul double %1378, %1380
  %indvars.iv.next3280.3 = or disjoint i64 %indvars.iv3279, 4
  %1382 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.3
  %1383 = load double, ptr %1382, align 16, !tbaa !5
  %1384 = fmul double %1381, %1383
  %indvars.iv.next3280.4 = or disjoint i64 %indvars.iv3279, 5
  %1385 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.4
  %1386 = load double, ptr %1385, align 8, !tbaa !5
  %1387 = fmul double %1384, %1386
  %indvars.iv.next3280.5 = or disjoint i64 %indvars.iv3279, 6
  %1388 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.5
  %1389 = load double, ptr %1388, align 16, !tbaa !5
  %1390 = fmul double %1387, %1389
  %indvars.iv.next3280.6 = or disjoint i64 %indvars.iv3279, 7
  %1391 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv.next3280.6
  %1392 = load double, ptr %1391, align 8, !tbaa !5
  %1393 = fmul double %1390, %1392
  %indvars.iv.next3280.7 = add nuw nsw i64 %indvars.iv3279, 8
  %niter5553.next.7 = add i64 %niter5553, 8
  %niter5553.ncmp.7 = icmp eq i64 %niter5553.next.7, %unroll_iter5552
  br i1 %niter5553.ncmp.7, label %._crit_edge2424.loopexit.unr-lcssa, label %.lr.ph2423, !llvm.loop !81

._crit_edge2424.loopexit.unr-lcssa:               ; preds = %.lr.ph2423, %.lr.ph2423.preheader
  %.lcssa4863.ph = phi double [ poison, %.lr.ph2423.preheader ], [ %1393, %.lr.ph2423 ]
  %indvars.iv3279.unr = phi i64 [ 0, %.lr.ph2423.preheader ], [ %indvars.iv.next3280.7, %.lr.ph2423 ]
  %.214402420.unr = phi double [ 1.000000e+00, %.lr.ph2423.preheader ], [ %1393, %.lr.ph2423 ]
  %lcmp.mod5550.not = icmp eq i64 %xtraiter5548, 0
  br i1 %lcmp.mod5550.not, label %._crit_edge2424, label %.lr.ph2423.epil

.lr.ph2423.epil:                                  ; preds = %._crit_edge2424.loopexit.unr-lcssa, %.lr.ph2423.epil
  %indvars.iv3279.epil = phi i64 [ %indvars.iv.next3280.epil, %.lr.ph2423.epil ], [ %indvars.iv3279.unr, %._crit_edge2424.loopexit.unr-lcssa ]
  %.214402420.epil = phi double [ %1396, %.lr.ph2423.epil ], [ %.214402420.unr, %._crit_edge2424.loopexit.unr-lcssa ]
  %epil.iter5549 = phi i64 [ %epil.iter5549.next, %.lr.ph2423.epil ], [ 0, %._crit_edge2424.loopexit.unr-lcssa ]
  %1394 = getelementptr inbounds [10 x double], ptr %11, i64 0, i64 %indvars.iv3279.epil
  %1395 = load double, ptr %1394, align 8, !tbaa !5
  %1396 = fmul double %.214402420.epil, %1395
  %indvars.iv.next3280.epil = add nuw nsw i64 %indvars.iv3279.epil, 1
  %epil.iter5549.next = add i64 %epil.iter5549, 1
  %epil.iter5549.cmp.not = icmp eq i64 %epil.iter5549.next, %xtraiter5548
  br i1 %epil.iter5549.cmp.not, label %._crit_edge2424, label %.lr.ph2423.epil, !llvm.loop !82

._crit_edge2424:                                  ; preds = %._crit_edge2424.loopexit.unr-lcssa, %.lr.ph2423.epil, %.loopexit1677
  %.21440.lcssa = phi double [ 1.000000e+00, %.loopexit1677 ], [ %.lcssa4863.ph, %._crit_edge2424.loopexit.unr-lcssa ], [ %1396, %.lr.ph2423.epil ]
  %1397 = uitofp i32 %spec.select1645 to double
  %1398 = fdiv double 1.000000e+00, %1397
  %1399 = tail call double @pow(double noundef %.21440.lcssa, double noundef %1398) #10
  br label %.lr.ph2429.preheader

.lr.ph2429.preheader:                             ; preds = %.loopexit1679, %._crit_edge2424
  %.31441 = phi double [ %1399, %._crit_edge2424 ], [ %.11439, %.loopexit1679 ]
  %.31349 = phi i32 [ %spec.select1645, %._crit_edge2424 ], [ %.11347, %.loopexit1679 ]
  br i1 %387, label %._crit_edge2430.unr-lcssa, label %.lr.ph2429

.lr.ph2429:                                       ; preds = %.lr.ph2429.preheader, %.lr.ph2429
  %indvars.iv3284 = phi i64 [ %indvars.iv.next3285.3, %.lr.ph2429 ], [ 0, %.lr.ph2429.preheader ]
  %.015382426 = phi double [ %1411, %.lr.ph2429 ], [ 0.000000e+00, %.lr.ph2429.preheader ]
  %niter5559 = phi i64 [ %niter5559.next.3, %.lr.ph2429 ], [ 0, %.lr.ph2429.preheader ]
  %1400 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3284
  %1401 = load double, ptr %1400, align 8, !tbaa !5
  %1402 = tail call double @llvm.fmuladd.f64(double %1401, double %1401, double %.015382426)
  %indvars.iv.next3285 = or disjoint i64 %indvars.iv3284, 1
  %1403 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3285
  %1404 = load double, ptr %1403, align 8, !tbaa !5
  %1405 = tail call double @llvm.fmuladd.f64(double %1404, double %1404, double %1402)
  %indvars.iv.next3285.1 = or disjoint i64 %indvars.iv3284, 2
  %1406 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3285.1
  %1407 = load double, ptr %1406, align 8, !tbaa !5
  %1408 = tail call double @llvm.fmuladd.f64(double %1407, double %1407, double %1405)
  %indvars.iv.next3285.2 = or disjoint i64 %indvars.iv3284, 3
  %1409 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3285.2
  %1410 = load double, ptr %1409, align 8, !tbaa !5
  %1411 = tail call double @llvm.fmuladd.f64(double %1410, double %1410, double %1408)
  %indvars.iv.next3285.3 = add nuw nsw i64 %indvars.iv3284, 4
  %niter5559.next.3 = add i64 %niter5559, 4
  %niter5559.ncmp.3 = icmp eq i64 %niter5559.next.3, %unroll_iter5558
  br i1 %niter5559.ncmp.3, label %._crit_edge2430.unr-lcssa, label %.lr.ph2429, !llvm.loop !83

._crit_edge2430.unr-lcssa:                        ; preds = %.lr.ph2429, %.lr.ph2429.preheader
  %.lcssa4864.ph = phi double [ poison, %.lr.ph2429.preheader ], [ %1411, %.lr.ph2429 ]
  %indvars.iv3284.unr = phi i64 [ 0, %.lr.ph2429.preheader ], [ %indvars.iv.next3285.3, %.lr.ph2429 ]
  %.015382426.unr = phi double [ 0.000000e+00, %.lr.ph2429.preheader ], [ %1411, %.lr.ph2429 ]
  br i1 %lcmp.mod5556.not, label %._crit_edge2430, label %.lr.ph2429.epil

.lr.ph2429.epil:                                  ; preds = %._crit_edge2430.unr-lcssa, %.lr.ph2429.epil
  %indvars.iv3284.epil = phi i64 [ %indvars.iv.next3285.epil, %.lr.ph2429.epil ], [ %indvars.iv3284.unr, %._crit_edge2430.unr-lcssa ]
  %.015382426.epil = phi double [ %1414, %.lr.ph2429.epil ], [ %.015382426.unr, %._crit_edge2430.unr-lcssa ]
  %epil.iter5555 = phi i64 [ %epil.iter5555.next, %.lr.ph2429.epil ], [ 0, %._crit_edge2430.unr-lcssa ]
  %1412 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3284.epil
  %1413 = load double, ptr %1412, align 8, !tbaa !5
  %1414 = tail call double @llvm.fmuladd.f64(double %1413, double %1413, double %.015382426.epil)
  %indvars.iv.next3285.epil = add nuw nsw i64 %indvars.iv3284.epil, 1
  %epil.iter5555.next = add i64 %epil.iter5555, 1
  %epil.iter5555.cmp.not = icmp eq i64 %epil.iter5555.next, %xtraiter5554
  br i1 %epil.iter5555.cmp.not, label %._crit_edge2430, label %.lr.ph2429.epil, !llvm.loop !84

._crit_edge2430:                                  ; preds = %.lr.ph2429.epil, %._crit_edge2430.unr-lcssa
  %.lcssa4864 = phi double [ %.lcssa4864.ph, %._crit_edge2430.unr-lcssa ], [ %1414, %.lr.ph2429.epil ]
  %1415 = tail call double @sqrt(double noundef %.lcssa4864) #10
  %1416 = icmp ult i32 %indvars, 6
  br i1 %1416, label %.thread3386, label %1417

1417:                                             ; preds = %._crit_edge2430
  %1418 = icmp ult i32 %indvars, 13
  %1419 = fcmp ogt double %.61451, 1.000000e+00
  %or.cond9 = select i1 %1418, i1 %1419, i1 false
  br i1 %or.cond9, label %.thread3386, label %1420

1420:                                             ; preds = %1417
  %1421 = icmp ugt i32 %.01414, 2
  %1422 = icmp ne i32 %.01344, 0
  %or.cond11 = select i1 %1421, i1 true, i1 %1422
  %.not1604 = or i1 %or.cond11, %or.cond35.not
  br i1 %.not1604, label %.thread3386, label %.lr.ph2435

.lr.ph2435:                                       ; preds = %1420, %1440
  %indvars.iv3289 = phi i64 [ %indvars.iv.next3290, %1440 ], [ 0, %1420 ]
  %.013312434 = phi i32 [ %.11332, %1440 ], [ 1, %1420 ]
  %.414062432 = phi i32 [ %.51407, %1440 ], [ 0, %1420 ]
  %1423 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3289
  %1424 = load double, ptr %1423, align 8, !tbaa !5
  %1425 = tail call double @llvm.fabs.f64(double %1424)
  %1426 = fcmp ult double %1425, %137
  br i1 %1426, label %1440, label %1427

1427:                                             ; preds = %.lr.ph2435
  %1428 = zext i32 %.414062432 to i64
  %1429 = getelementptr inbounds i32, ptr %39, i64 %1428
  %1430 = trunc nuw i64 %indvars.iv3289 to i32
  store i32 %1430, ptr %1429, align 4, !tbaa !49
  %1431 = add i32 %.414062432, 1
  %1432 = getelementptr inbounds double, ptr %34, i64 %indvars.iv3289
  %1433 = load double, ptr %1432, align 8, !tbaa !5
  %1434 = fsub double %1433, %1424
  %1435 = tail call double @llvm.fabs.f64(double %1434)
  %1436 = load double, ptr %58, align 8, !tbaa !5
  %1437 = fmul double %1425, %1436
  %1438 = fcmp ogt double %1435, %1437
  br i1 %1438, label %1439, label %1440

1439:                                             ; preds = %1427
  br label %1440

1440:                                             ; preds = %.lr.ph2435, %1439, %1427
  %.51407 = phi i32 [ %1431, %1439 ], [ %1431, %1427 ], [ %.414062432, %.lr.ph2435 ]
  %.11332 = phi i32 [ 0, %1439 ], [ %.013312434, %1427 ], [ %.013312434, %.lr.ph2435 ]
  %indvars.iv.next3290 = add nuw nsw i64 %indvars.iv3289, 1
  %exitcond3293.not = icmp eq i64 %indvars.iv.next3290, %wide.trip.count3292
  br i1 %exitcond3293.not, label %._crit_edge2436, label %.lr.ph2435, !llvm.loop !85

._crit_edge2436:                                  ; preds = %1440
  %1441 = icmp eq i32 %.51407, 0
  %1442 = icmp ne i32 %.11332, 0
  %or.cond13 = select i1 %1441, i1 true, i1 %1442
  br i1 %or.cond13, label %.lr.ph2442.preheader, label %.thread3386

.lr.ph2442.preheader:                             ; preds = %._crit_edge2436
  %1443 = add i32 %.11361, 1
  br i1 %388, label %._crit_edge2443.unr-lcssa, label %.lr.ph2442

.lr.ph2442:                                       ; preds = %.lr.ph2442.preheader, %.lr.ph2442
  %indvars.iv3294 = phi i64 [ %indvars.iv.next3295.3, %.lr.ph2442 ], [ 0, %.lr.ph2442.preheader ]
  %.814302439 = phi double [ %1467, %.lr.ph2442 ], [ 0.000000e+00, %.lr.ph2442.preheader ]
  %niter5565 = phi i64 [ %niter5565.next.3, %.lr.ph2442 ], [ 0, %.lr.ph2442.preheader ]
  %1444 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3294
  %1445 = load double, ptr %1444, align 8, !tbaa !5
  %1446 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3294
  %1447 = load double, ptr %1446, align 8, !tbaa !5
  %1448 = fsub double %1445, %1447
  %1449 = tail call double @llvm.fmuladd.f64(double %1448, double %1448, double %.814302439)
  %indvars.iv.next3295 = or disjoint i64 %indvars.iv3294, 1
  %1450 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3295
  %1451 = load double, ptr %1450, align 8, !tbaa !5
  %1452 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next3295
  %1453 = load double, ptr %1452, align 8, !tbaa !5
  %1454 = fsub double %1451, %1453
  %1455 = tail call double @llvm.fmuladd.f64(double %1454, double %1454, double %1449)
  %indvars.iv.next3295.1 = or disjoint i64 %indvars.iv3294, 2
  %1456 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3295.1
  %1457 = load double, ptr %1456, align 8, !tbaa !5
  %1458 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next3295.1
  %1459 = load double, ptr %1458, align 8, !tbaa !5
  %1460 = fsub double %1457, %1459
  %1461 = tail call double @llvm.fmuladd.f64(double %1460, double %1460, double %1455)
  %indvars.iv.next3295.2 = or disjoint i64 %indvars.iv3294, 3
  %1462 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3295.2
  %1463 = load double, ptr %1462, align 8, !tbaa !5
  %1464 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next3295.2
  %1465 = load double, ptr %1464, align 8, !tbaa !5
  %1466 = fsub double %1463, %1465
  %1467 = tail call double @llvm.fmuladd.f64(double %1466, double %1466, double %1461)
  %indvars.iv.next3295.3 = add nuw nsw i64 %indvars.iv3294, 4
  %niter5565.next.3 = add i64 %niter5565, 4
  %niter5565.ncmp.3 = icmp eq i64 %niter5565.next.3, %unroll_iter5564
  br i1 %niter5565.ncmp.3, label %._crit_edge2443.unr-lcssa, label %.lr.ph2442, !llvm.loop !86

._crit_edge2443.unr-lcssa:                        ; preds = %.lr.ph2442, %.lr.ph2442.preheader
  %.lcssa4865.ph = phi double [ poison, %.lr.ph2442.preheader ], [ %1467, %.lr.ph2442 ]
  %indvars.iv3294.unr = phi i64 [ 0, %.lr.ph2442.preheader ], [ %indvars.iv.next3295.3, %.lr.ph2442 ]
  %.814302439.unr = phi double [ 0.000000e+00, %.lr.ph2442.preheader ], [ %1467, %.lr.ph2442 ]
  br i1 %lcmp.mod5562.not, label %._crit_edge2443, label %.lr.ph2442.epil

.lr.ph2442.epil:                                  ; preds = %._crit_edge2443.unr-lcssa, %.lr.ph2442.epil
  %indvars.iv3294.epil = phi i64 [ %indvars.iv.next3295.epil, %.lr.ph2442.epil ], [ %indvars.iv3294.unr, %._crit_edge2443.unr-lcssa ]
  %.814302439.epil = phi double [ %1473, %.lr.ph2442.epil ], [ %.814302439.unr, %._crit_edge2443.unr-lcssa ]
  %epil.iter5561 = phi i64 [ %epil.iter5561.next, %.lr.ph2442.epil ], [ 0, %._crit_edge2443.unr-lcssa ]
  %1468 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3294.epil
  %1469 = load double, ptr %1468, align 8, !tbaa !5
  %1470 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3294.epil
  %1471 = load double, ptr %1470, align 8, !tbaa !5
  %1472 = fsub double %1469, %1471
  %1473 = tail call double @llvm.fmuladd.f64(double %1472, double %1472, double %.814302439.epil)
  %indvars.iv.next3295.epil = add nuw nsw i64 %indvars.iv3294.epil, 1
  %epil.iter5561.next = add i64 %epil.iter5561, 1
  %epil.iter5561.cmp.not = icmp eq i64 %epil.iter5561.next, %xtraiter5560
  br i1 %epil.iter5561.cmp.not, label %._crit_edge2443, label %.lr.ph2442.epil, !llvm.loop !87

._crit_edge2443:                                  ; preds = %.lr.ph2442.epil, %._crit_edge2443.unr-lcssa
  %.lcssa4865 = phi double [ %.lcssa4865.ph, %._crit_edge2443.unr-lcssa ], [ %1473, %.lr.ph2442.epil ]
  %1474 = tail call double @sqrt(double noundef %.lcssa4865) #10
  %1475 = fsub double %.61532, %.21489
  %1476 = tail call double @llvm.fabs.f64(double %1475)
  %1477 = tail call double @llvm.fabs.f64(double %.61532)
  %1478 = fmul double %139, %1477
  %1479 = fcmp ogt double %1476, %1478
  %.pre = load double, ptr %72, align 8, !tbaa !5
  br i1 %1479, label %1480, label %._crit_edge2443._crit_edge

._crit_edge2443._crit_edge:                       ; preds = %._crit_edge2443
  %.pre3381 = fmul double %1477, %.pre
  br label %1534

1480:                                             ; preds = %._crit_edge2443
  %1481 = fsub double %.61532, %.21528
  %1482 = tail call double @llvm.fabs.f64(double %1481)
  %1483 = fmul double %1477, %.pre
  %1484 = fcmp ult double %1482, %1483
  %or.cond15.not1607 = select i1 %1484, i1 true, i1 %395
  %or.cond17 = or i1 %45, %or.cond15.not1607
  br i1 %or.cond17, label %1534, label %1485

1485:                                             ; preds = %1480
  br i1 %1441, label %.critedge, label %.preheader1674.preheader

.preheader1674.preheader:                         ; preds = %1485
  %wide.trip.count3302 = zext i32 %.51407 to i64
  br label %.preheader1674

1486:                                             ; preds = %.preheader1674
  %indvars.iv.next3300 = add nuw nsw i64 %indvars.iv3299, 1
  %exitcond3303.not = icmp eq i64 %indvars.iv.next3300, %wide.trip.count3302
  br i1 %exitcond3303.not, label %.critedge, label %.preheader1674, !llvm.loop !88

.preheader1674:                                   ; preds = %.preheader1674.preheader, %1486
  %indvars.iv3299 = phi i64 [ 0, %.preheader1674.preheader ], [ %indvars.iv.next3300, %1486 ]
  %1487 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv3299
  %1488 = load i32, ptr %1487, align 4, !tbaa !49
  %1489 = zext i32 %1488 to i64
  %1490 = getelementptr inbounds double, ptr %35, i64 %1489
  %1491 = load double, ptr %1490, align 8, !tbaa !5
  %1492 = getelementptr inbounds double, ptr %1, i64 %1489
  %1493 = load double, ptr %1492, align 8, !tbaa !5
  %1494 = fsub double %1491, %1493
  %1495 = tail call double @llvm.fabs.f64(double %1494)
  %1496 = tail call double @llvm.fabs.f64(double %1493)
  %1497 = fmul double %140, %1496
  %1498 = fcmp ogt double %1495, %1497
  br i1 %1498, label %1499, label %1486

1499:                                             ; preds = %.preheader1674
  br i1 %.not1589, label %.lr.ph2468.preheader, label %1500

1500:                                             ; preds = %1499
  %1501 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16)
  br label %.lr.ph2468.preheader

.lr.ph2468.preheader:                             ; preds = %1499, %1500
  br i1 %394, label %._crit_edge2469.unr-lcssa, label %.lr.ph2468

.lr.ph2468:                                       ; preds = %.lr.ph2468.preheader, %.lr.ph2468
  %indvars.iv3326 = phi i64 [ %indvars.iv.next3327.1, %.lr.ph2468 ], [ 0, %.lr.ph2468.preheader ]
  %.714522465 = phi double [ %1515, %.lr.ph2468 ], [ 0.000000e+00, %.lr.ph2468.preheader ]
  %niter5595 = phi i64 [ %niter5595.next.1, %.lr.ph2468 ], [ 0, %.lr.ph2468.preheader ]
  %1502 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3326
  %1503 = load double, ptr %1502, align 8, !tbaa !5
  %1504 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3326
  store double %1503, ptr %1504, align 8, !tbaa !5
  %1505 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3326
  %1506 = load double, ptr %1505, align 8, !tbaa !5
  %1507 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3326
  store double %1506, ptr %1507, align 8, !tbaa !5
  %1508 = tail call double @llvm.fmuladd.f64(double %1506, double %1506, double %.714522465)
  %indvars.iv.next3327 = or disjoint i64 %indvars.iv3326, 1
  %1509 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next3327
  %1510 = load double, ptr %1509, align 8, !tbaa !5
  %1511 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3327
  store double %1510, ptr %1511, align 8, !tbaa !5
  %1512 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next3327
  %1513 = load double, ptr %1512, align 8, !tbaa !5
  %1514 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3327
  store double %1513, ptr %1514, align 8, !tbaa !5
  %1515 = tail call double @llvm.fmuladd.f64(double %1513, double %1513, double %1508)
  %indvars.iv.next3327.1 = add nuw nsw i64 %indvars.iv3326, 2
  %niter5595.next.1 = add i64 %niter5595, 2
  %niter5595.ncmp.1 = icmp eq i64 %niter5595.next.1, %unroll_iter5594
  br i1 %niter5595.ncmp.1, label %._crit_edge2469.unr-lcssa, label %.lr.ph2468, !llvm.loop !89

._crit_edge2469.unr-lcssa:                        ; preds = %.lr.ph2468, %.lr.ph2468.preheader
  %.lcssa5400.ph = phi double [ poison, %.lr.ph2468.preheader ], [ %1515, %.lr.ph2468 ]
  %indvars.iv3326.unr = phi i64 [ 0, %.lr.ph2468.preheader ], [ %indvars.iv.next3327.1, %.lr.ph2468 ]
  %.714522465.unr = phi double [ 0.000000e+00, %.lr.ph2468.preheader ], [ %1515, %.lr.ph2468 ]
  br i1 %lcmp.mod5592.not, label %._crit_edge2469, label %.lr.ph2468.epil

.lr.ph2468.epil:                                  ; preds = %._crit_edge2469.unr-lcssa
  %1516 = getelementptr inbounds double, ptr %35, i64 %indvars.iv3326.unr
  %1517 = load double, ptr %1516, align 8, !tbaa !5
  %1518 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3326.unr
  store double %1517, ptr %1518, align 8, !tbaa !5
  %1519 = getelementptr inbounds double, ptr %36, i64 %indvars.iv3326.unr
  %1520 = load double, ptr %1519, align 8, !tbaa !5
  %1521 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3326.unr
  store double %1520, ptr %1521, align 8, !tbaa !5
  %1522 = tail call double @llvm.fmuladd.f64(double %1520, double %1520, double %.714522465.unr)
  br label %._crit_edge2469

._crit_edge2469:                                  ; preds = %._crit_edge2469.unr-lcssa, %.lr.ph2468.epil
  %.lcssa5400 = phi double [ %.lcssa5400.ph, %._crit_edge2469.unr-lcssa ], [ %1522, %.lr.ph2468.epil ]
  %1523 = fcmp olt double %.lcssa5400, 0.000000e+00
  br i1 %1523, label %cdce.call, label %cdce.end, !prof !90

cdce.call:                                        ; preds = %._crit_edge2469
  %1524 = tail call double @sqrt(double noundef %.lcssa5400) #10
  br label %cdce.end

cdce.end:                                         ; preds = %._crit_edge2469, %cdce.call
  %1525 = add nuw nsw i32 %.01366.ph, 1
  %1526 = fmul double %140, %1415
  %1527 = fcmp ogt double %1001, %1526
  %1528 = select i1 %1527, double %1001, double %1526
  %1529 = fmul double %.01467, %1528
  %1530 = uitofp nneg i32 %1525 to double
  %1531 = fdiv double %1529, %1530
  %1532 = load ptr, ptr @endwarn2, align 8, !tbaa !33
  br label %.preheader1694.preheader.outer

.critedge:                                        ; preds = %1486, %1485
  %1533 = fmul double %.41464, 1.000000e+01
  br label %.thread3386

1534:                                             ; preds = %._crit_edge2443._crit_edge, %1480
  %.pre-phi = phi double [ %.pre3381, %._crit_edge2443._crit_edge ], [ %1483, %1480 ]
  %1535 = fcmp ogt double %1476, %.pre-phi
  br i1 %1535, label %1536, label %1540

1536:                                             ; preds = %1534
  %1537 = load double, ptr %58, align 8, !tbaa !5
  %1538 = fmul double %1415, %1537
  %1539 = fcmp olt double %1474, %1538
  %or.cond19 = and i1 %45, %1539
  br i1 %or.cond19, label %.thread3386, label %1540

1540:                                             ; preds = %1536, %1534
  %1541 = fsub double %.61532, %.21528
  %1542 = tail call double @llvm.fabs.f64(double %1541)
  %1543 = fcmp ugt double %1542, %.pre-phi
  %1544 = fcmp ugt double %1477, %138
  %or.cond1647 = select i1 %1543, i1 %1544, i1 false
  br i1 %or.cond1647, label %1545, label %1548

1545:                                             ; preds = %1540
  %1546 = fcmp ole double %1542, %.pre
  %1547 = icmp ugt i32 %1443, 49
  %or.cond1648 = select i1 %1546, i1 %1547, i1 false
  br i1 %or.cond1648, label %1548, label %1575

1548:                                             ; preds = %1545, %1540
  %.not1612 = icmp eq i32 %.11328, 0
  %1549 = fcmp ugt double %1001, %.01456
  %or.cond1651 = select i1 %.not1612, i1 true, i1 %1549
  br i1 %or.cond1651, label %.thread3386, label %1550

1550:                                             ; preds = %1548
  %1551 = icmp eq i32 %.21493, 1
  br i1 %1551, label %1552, label %1556

1552:                                             ; preds = %1550
  %1553 = tail call double @sqrt(double noundef %.pre) #10
  %1554 = fcmp olt double %.61451, %1553
  br i1 %1554, label %1555, label %1556

1555:                                             ; preds = %1552
  br label %1556

1556:                                             ; preds = %1555, %1552, %1550
  %.31494 = phi i32 [ 0, %1555 ], [ 1, %1552 ], [ %.21493, %1550 ]
  br i1 %.not.not, label %.loopexit, label %.lr.ph2494.preheader

.lr.ph2494.preheader:                             ; preds = %1556
  %wide.trip.count3371 = zext i32 %umax3112 to i64
  br label %.lr.ph2494

1557:                                             ; preds = %.lr.ph2494
  %indvars.iv.next3368 = add nuw nsw i64 %indvars.iv3367, 1
  %exitcond3372.not = icmp eq i64 %indvars.iv.next3368, %wide.trip.count3371
  br i1 %exitcond3372.not, label %.loopexit, label %.lr.ph2494, !llvm.loop !91

.lr.ph2494:                                       ; preds = %.lr.ph2494.preheader, %1557
  %indvars.iv3367 = phi i64 [ 0, %.lr.ph2494.preheader ], [ %indvars.iv.next3368, %1557 ]
  %1558 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3367
  %1559 = load double, ptr %1558, align 8, !tbaa !5
  %1560 = tail call double @llvm.fabs.f64(double %1559)
  %1561 = fcmp ugt double %1560, 0x3970000000000000
  br i1 %1561, label %1557, label %.thread

.thread:                                          ; preds = %.lr.ph2494
  %1562 = load ptr, ptr @endwarn3, align 8, !tbaa !33
  br label %1563

.loopexit:                                        ; preds = %1557, %1556
  %.not1613 = icmp eq i32 %.31494, 0
  br i1 %.not1613, label %1573, label %1563

1563:                                             ; preds = %.thread, %.loopexit
  %.31656 = phi ptr [ %1562, %.thread ], [ %.2, %.loopexit ]
  %.414951655 = phi i32 [ 3, %.thread ], [ %.31494, %.loopexit ]
  %1564 = sub nsw i32 0, %.414951655
  %1565 = sitofp i32 %1564 to double
  %1566 = fadd double %1565, -1.000000e+01
  store double %1566, ptr %51, align 8, !tbaa !5
  br i1 %.not1589, label %.loopexit1663, label %1567

1567:                                             ; preds = %1563
  %1568 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %1569 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef %.31656)
  br i1 %.not.not, label %1570, label %.loopexit1663

1570:                                             ; preds = %1567
  %1571 = load ptr, ptr @appwarn, align 8, !tbaa !33
  %1572 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef %1571)
  br label %.loopexit1663

1573:                                             ; preds = %.loopexit
  %1574 = uitofp i32 %440 to double
  store double %1574, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1575:                                             ; preds = %1545
  %1576 = fcmp ogt double %1415, 1.000000e+00
  %1577 = select i1 %1576, double %1415, double 1.000000e+00
  %1578 = fmul double %1577, 0x3D719799812DEA11
  %1579 = fcmp olt double %1001, %1578
  %or.cond1649 = select i1 %1579, i1 %1547, i1 false
  br i1 %or.cond1649, label %1580, label %.thread3386

1580:                                             ; preds = %1575
  store double -1.400000e+01, ptr %51, align 8, !tbaa !5
  br i1 %.not1589, label %.lr.ph2492.preheader, label %1581

1581:                                             ; preds = %1580
  %1582 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %1583 = load ptr, ptr @endwarn4, align 8, !tbaa !33
  %1584 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef %1583)
  br i1 %.not.not, label %1585, label %.lr.ph2492.preheader

1585:                                             ; preds = %1581
  %1586 = load ptr, ptr @appwarn, align 8, !tbaa !33
  %1587 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, ptr noundef %1586)
  br label %.lr.ph2492.preheader

.lr.ph2492.preheader:                             ; preds = %1580, %1585, %1581
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(1) %35, i64 %356, i1 false), !tbaa !5
  br label %.loopexit1663

.thread3386:                                      ; preds = %1417, %._crit_edge2430, %1548, %._crit_edge2436, %1536, %1575, %.critedge, %1420
  %.51465 = phi double [ %.41464, %1536 ], [ %.41464, %1575 ], [ %1533, %.critedge ], [ %.41464, %._crit_edge2436 ], [ %.41464, %1420 ], [ %.41464, %1548 ], [ %.41464, %._crit_edge2430 ], [ %.41464, %1417 ]
  %.21362 = phi i32 [ %1443, %1536 ], [ %1443, %1575 ], [ %1443, %.critedge ], [ %.11361, %._crit_edge2436 ], [ %.11361, %1420 ], [ %1443, %1548 ], [ %.11361, %._crit_edge2430 ], [ %.11361, %1417 ]
  %.21329 = phi i32 [ %.11328, %1536 ], [ %.11328, %1575 ], [ %.11328, %.critedge ], [ %.11328, %._crit_edge2436 ], [ %.11328, %1420 ], [ 1, %1548 ], [ %.11328, %._crit_edge2430 ], [ %.11328, %1417 ]
  %1588 = icmp eq i32 %440, %122
  br i1 %1588, label %1589, label %1592

1589:                                             ; preds = %.thread3386
  store double -9.000000e+00, ptr %51, align 8, !tbaa !5
  br i1 %.not1589, label %.loopexit1663, label %1590

1590:                                             ; preds = %1589
  %1591 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %.loopexit1663

1592:                                             ; preds = %.thread3386
  %1593 = fcmp ugt double %.61451, %135
  br i1 %45, label %1594, label %1600

1594:                                             ; preds = %1592
  br i1 %1593, label %.thread1657.backedge, label %1595

.thread1657.backedge:                             ; preds = %1594, %._crit_edge2449, %1698
  br label %.thread1657

1595:                                             ; preds = %1594
  br i1 %.not1589, label %1599, label %1596

1596:                                             ; preds = %1595
  %1597 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %1598 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  br label %1599

1599:                                             ; preds = %1596, %1595
  store double -8.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1600:                                             ; preds = %1592
  br i1 %1593, label %1698, label %1601

1601:                                             ; preds = %1600
  %1602 = add i32 %.01364.ph4779, 1
  br i1 %.not1589, label %1605, label %1603

1603:                                             ; preds = %1601
  %1604 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  br label %1605

1605:                                             ; preds = %1603, %1601
  %1606 = icmp ugt i32 %1602, 2
  br i1 %1606, label %1613, label %.lr.ph2472

.lr.ph2472:                                       ; preds = %1605
  %1607 = fmul double %.51465, -5.000000e-01
  br i1 %min.iters.check4507, label %scalar.ph4506.preheader, label %vector.ph4508

scalar.ph4506.preheader:                          ; preds = %middle.block4505, %.lr.ph2472
  %indvars.iv3332.ph = phi i64 [ 0, %.lr.ph2472 ], [ %n.vec4510, %middle.block4505 ]
  br label %scalar.ph4506

vector.ph4508:                                    ; preds = %.lr.ph2472
  %broadcast.splatinsert4516 = insertelement <2 x double> poison, double %1607, i64 0
  %broadcast.splat4517 = shufflevector <2 x double> %broadcast.splatinsert4516, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body4512

vector.body4512:                                  ; preds = %vector.body4512, %vector.ph4508
  %index4513 = phi i64 [ 0, %vector.ph4508 ], [ %index.next4518, %vector.body4512 ]
  %1608 = getelementptr inbounds double, ptr %28, i64 %index4513
  %1609 = getelementptr inbounds i8, ptr %1608, i64 16
  %wide.load4514 = load <2 x double>, ptr %1608, align 8, !tbaa !5
  %wide.load4515 = load <2 x double>, ptr %1609, align 8, !tbaa !5
  %1610 = fmul <2 x double> %broadcast.splat4517, %wide.load4514
  %1611 = fmul <2 x double> %broadcast.splat4517, %wide.load4515
  store <2 x double> %1610, ptr %1608, align 8, !tbaa !5
  store <2 x double> %1611, ptr %1609, align 8, !tbaa !5
  %index.next4518 = add nuw i64 %index4513, 4
  %1612 = icmp eq i64 %index.next4518, %n.vec4510
  br i1 %1612, label %middle.block4505, label %vector.body4512, !llvm.loop !92

middle.block4505:                                 ; preds = %vector.body4512
  br i1 %cmp.n4519, label %.lr.ph2474.preheader.preheader, label %scalar.ph4506.preheader

1613:                                             ; preds = %1605
  store double -8.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

scalar.ph4506:                                    ; preds = %scalar.ph4506.preheader, %scalar.ph4506
  %indvars.iv3332 = phi i64 [ %indvars.iv.next3333, %scalar.ph4506 ], [ %indvars.iv3332.ph, %scalar.ph4506.preheader ]
  %1614 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3332
  %1615 = load double, ptr %1614, align 8, !tbaa !5
  %1616 = fmul double %1607, %1615
  store double %1616, ptr %1614, align 8, !tbaa !5
  %indvars.iv.next3333 = add nuw nsw i64 %indvars.iv3332, 1
  %exitcond3337.not = icmp eq i64 %indvars.iv.next3333, %wide.trip.count3336
  br i1 %exitcond3337.not, label %.lr.ph2474.preheader.preheader, label %scalar.ph4506, !llvm.loop !93

.lr.ph2474.preheader.preheader:                   ; preds = %scalar.ph4506, %middle.block4505
  br label %.lr.ph2474.preheader

.lr.ph2474.preheader:                             ; preds = %.lr.ph2474.preheader.preheader, %1685
  %.482485 = phi i32 [ %1687, %1685 ], [ 1, %.lr.ph2474.preheader.preheader ]
  br i1 %min.iters.check4492, label %.lr.ph2474.preheader4758, label %vector.body4497

vector.body4497:                                  ; preds = %.lr.ph2474.preheader, %vector.body4497
  %index4498 = phi i64 [ %index.next4503, %vector.body4497 ], [ 0, %.lr.ph2474.preheader ]
  %1617 = getelementptr inbounds double, ptr %28, i64 %index4498
  %1618 = getelementptr inbounds i8, ptr %1617, i64 16
  %wide.load4499 = load <2 x double>, ptr %1617, align 8, !tbaa !5
  %wide.load4500 = load <2 x double>, ptr %1618, align 8, !tbaa !5
  %1619 = getelementptr inbounds double, ptr %1, i64 %index4498
  %1620 = getelementptr inbounds i8, ptr %1619, i64 16
  %wide.load4501 = load <2 x double>, ptr %1619, align 8, !tbaa !5
  %wide.load4502 = load <2 x double>, ptr %1620, align 8, !tbaa !5
  %1621 = fadd <2 x double> %wide.load4499, %wide.load4501
  %1622 = fadd <2 x double> %wide.load4500, %wide.load4502
  store <2 x double> %1621, ptr %1619, align 8, !tbaa !5
  store <2 x double> %1622, ptr %1620, align 8, !tbaa !5
  %index.next4503 = add nuw i64 %index4498, 4
  %1623 = icmp eq i64 %index.next4503, %n.vec4495
  br i1 %1623, label %middle.block4490, label %vector.body4497, !llvm.loop !94

middle.block4490:                                 ; preds = %vector.body4497
  br i1 %cmp.n4504, label %._crit_edge2475, label %.lr.ph2474.preheader4758

.lr.ph2474.preheader4758:                         ; preds = %middle.block4490, %.lr.ph2474.preheader
  %indvars.iv3338.ph = phi i64 [ 0, %.lr.ph2474.preheader ], [ %n.vec4495, %middle.block4490 ]
  br label %.lr.ph2474

.lr.ph2474:                                       ; preds = %.lr.ph2474.preheader4758, %.lr.ph2474
  %indvars.iv3338 = phi i64 [ %indvars.iv.next3339, %.lr.ph2474 ], [ %indvars.iv3338.ph, %.lr.ph2474.preheader4758 ]
  %1624 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3338
  %1625 = load double, ptr %1624, align 8, !tbaa !5
  %1626 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3338
  %1627 = load double, ptr %1626, align 8, !tbaa !5
  %1628 = fadd double %1625, %1627
  store double %1628, ptr %1626, align 8, !tbaa !5
  %indvars.iv.next3339 = add nuw nsw i64 %indvars.iv3338, 1
  %exitcond3343.not = icmp eq i64 %indvars.iv.next3339, %wide.trip.count3342
  br i1 %exitcond3343.not, label %._crit_edge2475, label %.lr.ph2474, !llvm.loop !95

._crit_edge2475:                                  ; preds = %.lr.ph2474, %middle.block4490
  %1629 = tail call double %2(ptr noundef nonnull %1, ptr noundef %7) #10
  %1630 = load double, ptr %142, align 8, !tbaa !5
  %1631 = fadd double %1630, 1.000000e+00
  store double %1631, ptr %142, align 8, !tbaa !5
  %1632 = tail call double @llvm.fabs.f64(double %1629)
  %1633 = fcmp ult double %1632, 0x7FDFFFFFFFFFFFFF
  br i1 %1633, label %1638, label %1634

1634:                                             ; preds = %._crit_edge2475
  br i1 %.not1589, label %1637, label %1635

1635:                                             ; preds = %1634
  %1636 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  br label %1637

1637:                                             ; preds = %1635, %1634
  store double -3.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1638:                                             ; preds = %._crit_edge2475
  br i1 %.not.not, label %.lr.ph2477.preheader, label %1661

.lr.ph2477.preheader:                             ; preds = %1638
  br i1 %min.iters.check4475, label %.lr.ph2477.preheader4757, label %vector.body4480

vector.body4480:                                  ; preds = %.lr.ph2477.preheader, %vector.body4480
  %index4481 = phi i64 [ %index.next4488, %vector.body4480 ], [ 0, %.lr.ph2477.preheader ]
  %1639 = getelementptr inbounds double, ptr %28, i64 %index4481
  %1640 = getelementptr inbounds i8, ptr %1639, i64 16
  %wide.load4482 = load <2 x double>, ptr %1639, align 8, !tbaa !5
  %wide.load4483 = load <2 x double>, ptr %1640, align 8, !tbaa !5
  %1641 = fcmp ult <2 x double> %wide.load4482, zeroinitializer
  %1642 = fcmp ult <2 x double> %wide.load4483, zeroinitializer
  %1643 = select <2 x i1> %1641, <2 x double> %broadcast.splat4485, <2 x double> %broadcast.splat4487
  %1644 = select <2 x i1> %1642, <2 x double> %broadcast.splat4485, <2 x double> %broadcast.splat4487
  %1645 = getelementptr inbounds double, ptr %38, i64 %index4481
  %1646 = getelementptr inbounds i8, ptr %1645, i64 16
  store <2 x double> %1643, ptr %1645, align 8
  store <2 x double> %1644, ptr %1646, align 8
  %index.next4488 = add nuw i64 %index4481, 4
  %1647 = icmp eq i64 %index.next4488, %n.vec4478
  br i1 %1647, label %middle.block4473, label %vector.body4480, !llvm.loop !96

middle.block4473:                                 ; preds = %vector.body4480
  br i1 %cmp.n4489, label %._crit_edge2478, label %.lr.ph2477.preheader4757

.lr.ph2477.preheader4757:                         ; preds = %middle.block4473, %.lr.ph2477.preheader
  %indvars.iv3344.ph = phi i64 [ 0, %.lr.ph2477.preheader ], [ %n.vec4478, %middle.block4473 ]
  br i1 %lcmp.mod5582.not, label %.lr.ph2477.prol.loopexit, label %.lr.ph2477.prol

.lr.ph2477.prol:                                  ; preds = %.lr.ph2477.preheader4757
  %1648 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3344.ph
  %1649 = load double, ptr %1648, align 8, !tbaa !5
  %1650 = fcmp ult double %1649, 0.000000e+00
  %.sink3375.prol = select i1 %1650, double %350, double %348
  %1651 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3344.ph
  store double %.sink3375.prol, ptr %1651, align 8
  %indvars.iv.next3345.prol = or disjoint i64 %indvars.iv3344.ph, 1
  br label %.lr.ph2477.prol.loopexit

.lr.ph2477.prol.loopexit:                         ; preds = %.lr.ph2477.prol, %.lr.ph2477.preheader4757
  %indvars.iv3344.unr = phi i64 [ %indvars.iv3344.ph, %.lr.ph2477.preheader4757 ], [ %indvars.iv.next3345.prol, %.lr.ph2477.prol ]
  %1652 = icmp eq i64 %indvars.iv3344.ph, %392
  br i1 %1652, label %._crit_edge2478, label %.lr.ph2477

.lr.ph2477:                                       ; preds = %.lr.ph2477.prol.loopexit, %.lr.ph2477
  %indvars.iv3344 = phi i64 [ %indvars.iv.next3345.1, %.lr.ph2477 ], [ %indvars.iv3344.unr, %.lr.ph2477.prol.loopexit ]
  %1653 = getelementptr inbounds double, ptr %28, i64 %indvars.iv3344
  %1654 = load double, ptr %1653, align 8, !tbaa !5
  %1655 = fcmp ult double %1654, 0.000000e+00
  %.sink3375 = select i1 %1655, double %350, double %348
  %1656 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3344
  store double %.sink3375, ptr %1656, align 8
  %indvars.iv.next3345 = add nuw nsw i64 %indvars.iv3344, 1
  %1657 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next3345
  %1658 = load double, ptr %1657, align 8, !tbaa !5
  %1659 = fcmp ult double %1658, 0.000000e+00
  %.sink3375.1 = select i1 %1659, double %350, double %348
  %1660 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next3345
  store double %.sink3375.1, ptr %1660, align 8
  %indvars.iv.next3345.1 = add nuw nsw i64 %indvars.iv3344, 2
  %exitcond3349.not.1 = icmp eq i64 %indvars.iv.next3345.1, %wide.trip.count3348
  br i1 %exitcond3349.not.1, label %._crit_edge2478, label %.lr.ph2477, !llvm.loop !97

._crit_edge2478:                                  ; preds = %.lr.ph2477.prol.loopexit, %.lr.ph2477, %middle.block4473
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %27, ptr noundef %1, double noundef %1629, ptr noundef %2, ptr noundef %38, i32 noundef 1, ptr noundef %7)
  br label %.lr.ph2482.preheader

1661:                                             ; preds = %1638
  tail call void %3(ptr noundef nonnull %1, ptr noundef nonnull %27, ptr noundef %7) #10
  br label %.lr.ph2482.preheader

.lr.ph2482.preheader:                             ; preds = %._crit_edge2478, %1661
  %.sink3913 = phi ptr [ %142, %._crit_edge2478 ], [ %347, %1661 ]
  %.sink3912 = phi double [ %17, %._crit_edge2478 ], [ 1.000000e+00, %1661 ]
  %1662 = load double, ptr %.sink3913, align 8, !tbaa !5
  %1663 = fadd double %1662, %.sink3912
  store double %1663, ptr %.sink3913, align 8, !tbaa !5
  br i1 %393, label %._crit_edge2483.unr-lcssa, label %.lr.ph2482

.lr.ph2482:                                       ; preds = %.lr.ph2482.preheader, %.lr.ph2482
  %indvars.iv3350 = phi i64 [ %indvars.iv.next3351.3, %.lr.ph2482 ], [ 0, %.lr.ph2482.preheader ]
  %.914542479 = phi double [ %1675, %.lr.ph2482 ], [ 0.000000e+00, %.lr.ph2482.preheader ]
  %niter5589 = phi i64 [ %niter5589.next.3, %.lr.ph2482 ], [ 0, %.lr.ph2482.preheader ]
  %1664 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3350
  %1665 = load double, ptr %1664, align 8, !tbaa !5
  %1666 = tail call double @llvm.fmuladd.f64(double %1665, double %1665, double %.914542479)
  %indvars.iv.next3351 = or disjoint i64 %indvars.iv3350, 1
  %1667 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3351
  %1668 = load double, ptr %1667, align 8, !tbaa !5
  %1669 = tail call double @llvm.fmuladd.f64(double %1668, double %1668, double %1666)
  %indvars.iv.next3351.1 = or disjoint i64 %indvars.iv3350, 2
  %1670 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3351.1
  %1671 = load double, ptr %1670, align 8, !tbaa !5
  %1672 = tail call double @llvm.fmuladd.f64(double %1671, double %1671, double %1669)
  %indvars.iv.next3351.2 = or disjoint i64 %indvars.iv3350, 3
  %1673 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3351.2
  %1674 = load double, ptr %1673, align 8, !tbaa !5
  %1675 = tail call double @llvm.fmuladd.f64(double %1674, double %1674, double %1672)
  %indvars.iv.next3351.3 = add nuw nsw i64 %indvars.iv3350, 4
  %niter5589.next.3 = add i64 %niter5589, 4
  %niter5589.ncmp.3 = icmp eq i64 %niter5589.next.3, %unroll_iter5588
  br i1 %niter5589.ncmp.3, label %._crit_edge2483.unr-lcssa, label %.lr.ph2482, !llvm.loop !98

._crit_edge2483.unr-lcssa:                        ; preds = %.lr.ph2482, %.lr.ph2482.preheader
  %.lcssa5379.ph = phi double [ poison, %.lr.ph2482.preheader ], [ %1675, %.lr.ph2482 ]
  %indvars.iv3350.unr = phi i64 [ 0, %.lr.ph2482.preheader ], [ %indvars.iv.next3351.3, %.lr.ph2482 ]
  %.914542479.unr = phi double [ 0.000000e+00, %.lr.ph2482.preheader ], [ %1675, %.lr.ph2482 ]
  br i1 %lcmp.mod5586.not, label %._crit_edge2483, label %.lr.ph2482.epil

.lr.ph2482.epil:                                  ; preds = %._crit_edge2483.unr-lcssa, %.lr.ph2482.epil
  %indvars.iv3350.epil = phi i64 [ %indvars.iv.next3351.epil, %.lr.ph2482.epil ], [ %indvars.iv3350.unr, %._crit_edge2483.unr-lcssa ]
  %.914542479.epil = phi double [ %1678, %.lr.ph2482.epil ], [ %.914542479.unr, %._crit_edge2483.unr-lcssa ]
  %epil.iter5585 = phi i64 [ %epil.iter5585.next, %.lr.ph2482.epil ], [ 0, %._crit_edge2483.unr-lcssa ]
  %1676 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3350.epil
  %1677 = load double, ptr %1676, align 8, !tbaa !5
  %1678 = tail call double @llvm.fmuladd.f64(double %1677, double %1677, double %.914542479.epil)
  %indvars.iv.next3351.epil = add nuw nsw i64 %indvars.iv3350.epil, 1
  %epil.iter5585.next = add i64 %epil.iter5585, 1
  %epil.iter5585.cmp.not = icmp eq i64 %epil.iter5585.next, %xtraiter5584
  br i1 %epil.iter5585.cmp.not, label %._crit_edge2483, label %.lr.ph2482.epil, !llvm.loop !99

._crit_edge2483:                                  ; preds = %.lr.ph2482.epil, %._crit_edge2483.unr-lcssa
  %.lcssa5379 = phi double [ %.lcssa5379.ph, %._crit_edge2483.unr-lcssa ], [ %1678, %.lr.ph2482.epil ]
  %1679 = tail call double @sqrt(double noundef %.lcssa5379) #10
  %1680 = fcmp ult double %1679, 0x7FDFFFFFFFFFFFFF
  br i1 %1680, label %1685, label %1681

1681:                                             ; preds = %._crit_edge2483
  br i1 %.not1589, label %1684, label %1682

1682:                                             ; preds = %1681
  %1683 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %1684

1684:                                             ; preds = %1682, %1681
  store double -4.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1685:                                             ; preds = %._crit_edge2483
  %1686 = fcmp ule double %1679, %135
  %1687 = add nuw nsw i32 %.482485, 1
  %1688 = icmp ult i32 %.482485, 10
  %or.cond2495 = select i1 %1686, i1 %1688, i1 false
  br i1 %or.cond2495, label %.lr.ph2474.preheader, label %1689, !llvm.loop !100

1689:                                             ; preds = %1685
  %1690 = fcmp ugt double %1679, %135
  br i1 %1690, label %1696, label %1691

1691:                                             ; preds = %1689
  br i1 %.not1589, label %1695, label %1692

1692:                                             ; preds = %1691
  %1693 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12)
  %1694 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  br label %1695

1695:                                             ; preds = %1692, %1691
  store double -8.000000e+00, ptr %51, align 8, !tbaa !5
  br label %.loopexit1663

1696:                                             ; preds = %1689
  %1697 = fmul double %.01467, %1001
  br label %.preheader1694.preheader.outer4766

1698:                                             ; preds = %1600
  %1699 = fsub double %.61532, %.21528
  %1700 = tail call double @llvm.fabs.f64(double %1699)
  %1701 = tail call double @llvm.fabs.f64(double %.21528)
  %1702 = load double, ptr %72, align 8, !tbaa !5
  %1703 = fmul double %1701, %1702
  %1704 = fcmp olt double %1700, %1703
  %1705 = icmp ugt i32 %indvars, 5
  %or.cond21 = and i1 %1705, %1704
  %1706 = fcmp olt double %.61451, 1.000000e+00
  %or.cond23 = select i1 %or.cond21, i1 %1706, i1 false
  br i1 %or.cond23, label %.lr.ph2448.preheader, label %.thread1657.backedge

.lr.ph2448.preheader:                             ; preds = %1698
  br i1 %389, label %._crit_edge2449.unr-lcssa, label %.lr.ph2448

.lr.ph2448:                                       ; preds = %.lr.ph2448.preheader, %1725
  %indvars.iv3304 = phi i64 [ %indvars.iv.next3305.1, %1725 ], [ 0, %.lr.ph2448.preheader ]
  %.014002446 = phi i32 [ %.11401.1, %1725 ], [ 0, %.lr.ph2448.preheader ]
  %niter5571 = phi i64 [ %niter5571.next.1, %1725 ], [ 0, %.lr.ph2448.preheader ]
  %1707 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3304
  %1708 = load double, ptr %1707, align 8, !tbaa !5
  %1709 = tail call double @llvm.fabs.f64(double %1708)
  %1710 = fcmp ugt double %1709, 0x3970000000000000
  br i1 %1710, label %.lr.ph2448.1, label %1711

1711:                                             ; preds = %.lr.ph2448
  %1712 = zext i32 %.014002446 to i64
  %1713 = getelementptr inbounds i32, ptr %39, i64 %1712
  %1714 = trunc nuw i64 %indvars.iv3304 to i32
  store i32 %1714, ptr %1713, align 4, !tbaa !49
  %1715 = add i32 %.014002446, 1
  br label %.lr.ph2448.1

.lr.ph2448.1:                                     ; preds = %.lr.ph2448, %1711
  %.11401 = phi i32 [ %1715, %1711 ], [ %.014002446, %.lr.ph2448 ]
  %indvars.iv.next3305 = or disjoint i64 %indvars.iv3304, 1
  %1716 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3305
  %1717 = load double, ptr %1716, align 8, !tbaa !5
  %1718 = tail call double @llvm.fabs.f64(double %1717)
  %1719 = fcmp ugt double %1718, 0x3970000000000000
  br i1 %1719, label %1725, label %1720

1720:                                             ; preds = %.lr.ph2448.1
  %1721 = zext i32 %.11401 to i64
  %1722 = getelementptr inbounds i32, ptr %39, i64 %1721
  %1723 = trunc nuw i64 %indvars.iv.next3305 to i32
  store i32 %1723, ptr %1722, align 4, !tbaa !49
  %1724 = add i32 %.11401, 1
  br label %1725

1725:                                             ; preds = %1720, %.lr.ph2448.1
  %.11401.1 = phi i32 [ %1724, %1720 ], [ %.11401, %.lr.ph2448.1 ]
  %indvars.iv.next3305.1 = add nuw nsw i64 %indvars.iv3304, 2
  %niter5571.next.1 = add i64 %niter5571, 2
  %niter5571.ncmp.1 = icmp eq i64 %niter5571.next.1, %unroll_iter5570
  br i1 %niter5571.ncmp.1, label %._crit_edge2449.unr-lcssa, label %.lr.ph2448, !llvm.loop !101

._crit_edge2449.unr-lcssa:                        ; preds = %1725, %.lr.ph2448.preheader
  %.11401.lcssa.ph = phi i32 [ poison, %.lr.ph2448.preheader ], [ %.11401.1, %1725 ]
  %indvars.iv3304.unr = phi i64 [ 0, %.lr.ph2448.preheader ], [ %indvars.iv.next3305.1, %1725 ]
  %.014002446.unr = phi i32 [ 0, %.lr.ph2448.preheader ], [ %.11401.1, %1725 ]
  br i1 %lcmp.mod5568.not, label %._crit_edge2449, label %.lr.ph2448.epil

.lr.ph2448.epil:                                  ; preds = %._crit_edge2449.unr-lcssa
  %1726 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3304.unr
  %1727 = load double, ptr %1726, align 8, !tbaa !5
  %1728 = tail call double @llvm.fabs.f64(double %1727)
  %1729 = fcmp ugt double %1728, 0x3970000000000000
  br i1 %1729, label %._crit_edge2449, label %1730

1730:                                             ; preds = %.lr.ph2448.epil
  %1731 = zext i32 %.014002446.unr to i64
  %1732 = getelementptr inbounds i32, ptr %39, i64 %1731
  %1733 = trunc nuw i64 %indvars.iv3304.unr to i32
  store i32 %1733, ptr %1732, align 4, !tbaa !49
  %1734 = add i32 %.014002446.unr, 1
  br label %._crit_edge2449

._crit_edge2449:                                  ; preds = %.lr.ph2448.epil, %1730, %._crit_edge2449.unr-lcssa
  %.11401.lcssa = phi i32 [ %.11401.lcssa.ph, %._crit_edge2449.unr-lcssa ], [ %1734, %1730 ], [ %.014002446.unr, %.lr.ph2448.epil ]
  %.not1616 = icmp ne i32 %.11401.lcssa, 0
  %1735 = icmp ule i32 %.11401.lcssa, %353
  %or.cond25 = select i1 %1735, i1 %1792, i1 false
  %or.cond6206 = select i1 %.not1616, i1 %or.cond25, i1 false
  br i1 %or.cond6206, label %1736, label %.thread1657.backedge

1736:                                             ; preds = %._crit_edge2449
  %1737 = add nuw nsw i32 %.11369.ph, 1
  br i1 %.not1589, label %.preheader1672, label %1738

1738:                                             ; preds = %1736
  %1739 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18)
  br label %.preheader1672

.preheader1672:                                   ; preds = %1738, %1736
  %1740 = load ptr, ptr @endwarn1, align 8, !tbaa !33
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %33, ptr noundef nonnull align 8 dereferenceable(1) %1, i64 %356, i1 false), !tbaa !5
  br label %1741

1741:                                             ; preds = %.preheader1672, %1787
  %.512455 = phi i32 [ 0, %.preheader1672 ], [ %1788, %1787 ]
  %.014982454 = phi double [ %.61532, %.preheader1672 ], [ %.11499, %1787 ]
  %1742 = zext nneg i32 %.512455 to i64
  %1743 = getelementptr inbounds i32, ptr %39, i64 %1742
  %1744 = load i32, ptr %1743, align 4, !tbaa !49
  %1745 = zext i32 %1744 to i64
  %1746 = getelementptr inbounds double, ptr %1, i64 %1745
  %1747 = load double, ptr %1746, align 8, !tbaa !5
  %1748 = fcmp oeq double %1747, 0.000000e+00
  br i1 %1748, label %1749, label %1751

1749:                                             ; preds = %1741
  %1750 = getelementptr inbounds double, ptr %33, i64 %1745
  store double 1.000000e+00, ptr %1750, align 8, !tbaa !5
  br label %1761

1751:                                             ; preds = %1741
  %1752 = tail call double @llvm.fabs.f64(double %1747)
  %1753 = fcmp olt double %1752, 1.000000e+00
  br i1 %1753, label %1754, label %1759

1754:                                             ; preds = %1751
  %1755 = fcmp olt double %1747, 0.000000e+00
  %1756 = getelementptr inbounds double, ptr %33, i64 %1745
  br i1 %1755, label %1757, label %1758

1757:                                             ; preds = %1754
  store double -1.000000e+00, ptr %1756, align 8, !tbaa !5
  br label %1761

1758:                                             ; preds = %1754
  store double 1.000000e+00, ptr %1756, align 8, !tbaa !5
  br label %1761

1759:                                             ; preds = %1751
  %1760 = getelementptr inbounds double, ptr %33, i64 %1745
  store double %1747, ptr %1760, align 8, !tbaa !5
  br label %1761

1761:                                             ; preds = %1759, %1758, %1757, %1749
  %1762 = phi double [ %1747, %1759 ], [ 1.000000e+00, %1758 ], [ -1.000000e+00, %1757 ], [ 1.000000e+00, %1749 ]
  %1763 = getelementptr inbounds double, ptr %33, i64 %1745
  br label %1764

1764:                                             ; preds = %1785, %1761
  %1765 = phi double [ %1762, %1761 ], [ %.pre3377, %1785 ]
  %.01541 = phi double [ %1747, %1761 ], [ %.21543, %1785 ]
  %.01502 = phi double [ %.014982454, %1761 ], [ %.11503, %1785 ]
  %.11499 = phi double [ %.014982454, %1761 ], [ %.31501, %1785 ]
  %.52 = phi i32 [ %.512455, %1761 ], [ %1786, %1785 ]
  %1766 = fdiv double %1765, 1.150000e+00
  store double %1766, ptr %1763, align 8, !tbaa !5
  %1767 = tail call double %2(ptr noundef %33, ptr noundef %7) #10
  %1768 = load double, ptr %142, align 8, !tbaa !5
  %1769 = fadd double %1768, 1.000000e+00
  store double %1769, ptr %142, align 8, !tbaa !5
  %1770 = tail call double @llvm.fabs.f64(double %1767)
  %1771 = fcmp olt double %1770, 0x7FDFFFFFFFFFFFFF
  br i1 %1771, label %1772, label %._crit_edge3378

._crit_edge3378:                                  ; preds = %1764
  %.pre3377.pre = load double, ptr %1763, align 8, !tbaa !5
  br label %1785

1772:                                             ; preds = %1764
  %1773 = fmul double %.01467, %1767
  %1774 = fmul double %.01467, %.11499
  %1775 = fcmp ogt double %1773, %1774
  br i1 %1775, label %1776, label %1778

1776:                                             ; preds = %1772
  %1777 = load double, ptr %1763, align 8, !tbaa !5
  br label %1785

1778:                                             ; preds = %1772
  %1779 = fmul double %.01467, %.01502
  %1780 = fcmp ogt double %1779, %1773
  br i1 %1780, label %1787, label %1781

1781:                                             ; preds = %1778
  %1782 = fcmp oeq double %.01502, %1767
  %.pre3377.pre3379 = load double, ptr %1763, align 8, !tbaa !5
  br i1 %1782, label %1783, label %1785

1783:                                             ; preds = %1781
  %1784 = fdiv double %.pre3377.pre3379, 1.500000e+00
  store double %1784, ptr %1763, align 8, !tbaa !5
  br label %1785

1785:                                             ; preds = %._crit_edge3378, %1776, %1781, %1783
  %.pre3377 = phi double [ %.pre3377.pre, %._crit_edge3378 ], [ %1777, %1776 ], [ %1784, %1783 ], [ %.pre3377.pre3379, %1781 ]
  %.21543 = phi double [ %.01541, %._crit_edge3378 ], [ %1777, %1776 ], [ %.01541, %1783 ], [ %.01541, %1781 ]
  %.11503 = phi double [ %.01502, %._crit_edge3378 ], [ %1767, %1776 ], [ %1767, %1783 ], [ %1767, %1781 ]
  %.31501 = phi double [ %.11499, %._crit_edge3378 ], [ %1767, %1776 ], [ %.11499, %1783 ], [ %.11499, %1781 ]
  %1786 = add i32 %.52, 1
  br label %1764, !llvm.loop !102

1787:                                             ; preds = %1778
  store double %.01541, ptr %1763, align 8, !tbaa !5
  %1788 = add i32 %.52, 1
  %1789 = icmp ult i32 %1788, %.11401.lcssa
  br i1 %1789, label %1741, label %1790, !llvm.loop !103

1790:                                             ; preds = %1787
  %1791 = fcmp ogt double %1774, %1267
  br i1 %1791, label %1793, label %.thread1657.outer.backedge

.thread1657.outer:                                ; preds = %.loopexit4752, %.thread1657.outer.backedge
  %indvars.iv3323.ph = phi i64 [ %indvars.iv.next3324, %.thread1657.outer.backedge ], [ 0, %.loopexit4752 ]
  %.21528.ph = phi double [ %.61532, %.thread1657.outer.backedge ], [ %.11527, %.loopexit4752 ]
  %.21519.ph = phi double [ %.71524, %.thread1657.outer.backedge ], [ %.11518, %.loopexit4752 ]
  %.31507.ph = phi double [ %.61510, %.thread1657.outer.backedge ], [ %.21506, %.loopexit4752 ]
  %.11492.ph = phi i32 [ 1, %.thread1657.outer.backedge ], [ %.01491, %.loopexit4752 ]
  %.11488.ph = phi double [ %.21489, %.thread1657.outer.backedge ], [ %.01487, %.loopexit4752 ]
  %.21482.ph = phi i32 [ %.51485, %.thread1657.outer.backedge ], [ %.11481, %.loopexit4752 ]
  %.21475.ph = phi double [ %.51478, %.thread1657.outer.backedge ], [ %.11474, %.loopexit4752 ]
  %.21462.ph = phi double [ %.51465, %.thread1657.outer.backedge ], [ %.11461, %.loopexit4752 ]
  %.01456.ph = phi double [ %1001, %.thread1657.outer.backedge ], [ 0.000000e+00, %.loopexit4752 ]
  %.11439.ph = phi double [ %.31441, %.thread1657.outer.backedge ], [ %.01438, %.loopexit4752 ]
  %.01417.ph = phi i32 [ %spec.select1643, %.thread1657.outer.backedge ], [ 0, %.loopexit4752 ]
  %.01412.ph = phi i32 [ %.11413, %.thread1657.outer.backedge ], [ 0, %.loopexit4752 ]
  %.11409.ph = phi i32 [ %.31411, %.thread1657.outer.backedge ], [ %.01408, %.loopexit4752 ]
  %.11373.ph = phi i32 [ %spec.select1644, %.thread1657.outer.backedge ], [ %.01372, %.loopexit4752 ]
  %.11369.ph = phi i32 [ %1737, %.thread1657.outer.backedge ], [ %.01368, %.loopexit4752 ]
  %.11361.ph = phi i32 [ %.21362, %.thread1657.outer.backedge ], [ %.01360, %.loopexit4752 ]
  %.11352.ph = phi i32 [ %440, %.thread1657.outer.backedge ], [ %.01351, %.loopexit4752 ]
  %.11347.ph = phi i32 [ %.31349, %.thread1657.outer.backedge ], [ %.01346, %.loopexit4752 ]
  %.11336.ph = phi i32 [ %.51340, %.thread1657.outer.backedge ], [ %.01335, %.loopexit4752 ]
  %.11328.ph = phi i32 [ %.21329, %.thread1657.outer.backedge ], [ %.01327, %.loopexit4752 ]
  %.31317.ph = phi i32 [ %.8, %.thread1657.outer.backedge ], [ %.21316, %.loopexit4752 ]
  %.11310.ph = phi ptr [ %1740, %.thread1657.outer.backedge ], [ %.01309, %.loopexit4752 ]
  %1792 = icmp ult i32 %.11369.ph, 4
  br label %.thread1657

1793:                                             ; preds = %1790
  br i1 %.not.not, label %.lr.ph2457.preheader, label %1798

.lr.ph2457.preheader:                             ; preds = %1793
  br i1 %min.iters.check4522, label %.lr.ph2457.preheader4759, label %vector.body4527

vector.body4527:                                  ; preds = %.lr.ph2457.preheader, %vector.body4527
  %index4528 = phi i64 [ %index.next4531, %vector.body4527 ], [ 0, %.lr.ph2457.preheader ]
  %1794 = getelementptr inbounds double, ptr %38, i64 %index4528
  %1795 = getelementptr inbounds i8, ptr %1794, i64 16
  store <2 x double> %broadcast.splat4530, ptr %1794, align 8, !tbaa !5
  store <2 x double> %broadcast.splat4530, ptr %1795, align 8, !tbaa !5
  %index.next4531 = add nuw i64 %index4528, 4
  %1796 = icmp eq i64 %index.next4531, %n.vec4525
  br i1 %1796, label %middle.block4520, label %vector.body4527, !llvm.loop !104

middle.block4520:                                 ; preds = %vector.body4527
  br i1 %cmp.n4532, label %._crit_edge2458, label %.lr.ph2457.preheader4759

.lr.ph2457.preheader4759:                         ; preds = %middle.block4520, %.lr.ph2457.preheader
  %indvars.iv3313.ph = phi i64 [ 0, %.lr.ph2457.preheader ], [ %n.vec4525, %middle.block4520 ]
  br label %.lr.ph2457

.lr.ph2457:                                       ; preds = %.lr.ph2457.preheader4759, %.lr.ph2457
  %indvars.iv3313 = phi i64 [ %indvars.iv.next3314, %.lr.ph2457 ], [ %indvars.iv3313.ph, %.lr.ph2457.preheader4759 ]
  %1797 = getelementptr inbounds double, ptr %38, i64 %indvars.iv3313
  store double %348, ptr %1797, align 8, !tbaa !5
  %indvars.iv.next3314 = add nuw nsw i64 %indvars.iv3313, 1
  %exitcond3317.not = icmp eq i64 %indvars.iv.next3314, %wide.trip.count3316
  br i1 %exitcond3317.not, label %._crit_edge2458, label %.lr.ph2457, !llvm.loop !105

._crit_edge2458:                                  ; preds = %.lr.ph2457, %middle.block4520
  tail call void @apprgrdn(i32 noundef %0, ptr noundef nonnull %30, ptr noundef nonnull %33, double noundef %.11499, ptr noundef %2, ptr noundef %38, i32 noundef 1, ptr noundef %7)
  br label %.lr.ph2462.preheader

1798:                                             ; preds = %1793
  tail call void %3(ptr noundef %33, ptr noundef nonnull %30, ptr noundef %7) #10
  br label %.lr.ph2462.preheader

.lr.ph2462.preheader:                             ; preds = %._crit_edge2458, %1798
  %.sink3918 = phi ptr [ %142, %._crit_edge2458 ], [ %347, %1798 ]
  %.sink3917 = phi double [ %17, %._crit_edge2458 ], [ 1.000000e+00, %1798 ]
  %1799 = load double, ptr %.sink3918, align 8, !tbaa !5
  %1800 = fadd double %1799, %.sink3917
  store double %1800, ptr %.sink3918, align 8, !tbaa !5
  br i1 %390, label %._crit_edge2463.unr-lcssa, label %.lr.ph2462

.lr.ph2462:                                       ; preds = %.lr.ph2462.preheader, %.lr.ph2462
  %indvars.iv3318 = phi i64 [ %indvars.iv.next3319.3, %.lr.ph2462 ], [ 0, %.lr.ph2462.preheader ]
  %.114372459 = phi double [ %1812, %.lr.ph2462 ], [ 0.000000e+00, %.lr.ph2462.preheader ]
  %niter5577 = phi i64 [ %niter5577.next.3, %.lr.ph2462 ], [ 0, %.lr.ph2462.preheader ]
  %1801 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3318
  %1802 = load double, ptr %1801, align 8, !tbaa !5
  %1803 = tail call double @llvm.fmuladd.f64(double %1802, double %1802, double %.114372459)
  %indvars.iv.next3319 = or disjoint i64 %indvars.iv3318, 1
  %1804 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3319
  %1805 = load double, ptr %1804, align 8, !tbaa !5
  %1806 = tail call double @llvm.fmuladd.f64(double %1805, double %1805, double %1803)
  %indvars.iv.next3319.1 = or disjoint i64 %indvars.iv3318, 2
  %1807 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3319.1
  %1808 = load double, ptr %1807, align 8, !tbaa !5
  %1809 = tail call double @llvm.fmuladd.f64(double %1808, double %1808, double %1806)
  %indvars.iv.next3319.2 = or disjoint i64 %indvars.iv3318, 3
  %1810 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3319.2
  %1811 = load double, ptr %1810, align 8, !tbaa !5
  %1812 = tail call double @llvm.fmuladd.f64(double %1811, double %1811, double %1809)
  %indvars.iv.next3319.3 = add nuw nsw i64 %indvars.iv3318, 4
  %niter5577.next.3 = add i64 %niter5577, 4
  %niter5577.ncmp.3 = icmp eq i64 %niter5577.next.3, %unroll_iter5576
  br i1 %niter5577.ncmp.3, label %._crit_edge2463.unr-lcssa, label %.lr.ph2462, !llvm.loop !106

._crit_edge2463.unr-lcssa:                        ; preds = %.lr.ph2462, %.lr.ph2462.preheader
  %.lcssa5336.ph = phi double [ poison, %.lr.ph2462.preheader ], [ %1812, %.lr.ph2462 ]
  %indvars.iv3318.unr = phi i64 [ 0, %.lr.ph2462.preheader ], [ %indvars.iv.next3319.3, %.lr.ph2462 ]
  %.114372459.unr = phi double [ 0.000000e+00, %.lr.ph2462.preheader ], [ %1812, %.lr.ph2462 ]
  br i1 %lcmp.mod5574.not, label %._crit_edge2463, label %.lr.ph2462.epil

.lr.ph2462.epil:                                  ; preds = %._crit_edge2463.unr-lcssa, %.lr.ph2462.epil
  %indvars.iv3318.epil = phi i64 [ %indvars.iv.next3319.epil, %.lr.ph2462.epil ], [ %indvars.iv3318.unr, %._crit_edge2463.unr-lcssa ]
  %.114372459.epil = phi double [ %1815, %.lr.ph2462.epil ], [ %.114372459.unr, %._crit_edge2463.unr-lcssa ]
  %epil.iter5573 = phi i64 [ %epil.iter5573.next, %.lr.ph2462.epil ], [ 0, %._crit_edge2463.unr-lcssa ]
  %1813 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3318.epil
  %1814 = load double, ptr %1813, align 8, !tbaa !5
  %1815 = tail call double @llvm.fmuladd.f64(double %1814, double %1814, double %.114372459.epil)
  %indvars.iv.next3319.epil = add nuw nsw i64 %indvars.iv3318.epil, 1
  %epil.iter5573.next = add i64 %epil.iter5573, 1
  %epil.iter5573.cmp.not = icmp eq i64 %epil.iter5573.next, %xtraiter5572
  br i1 %epil.iter5573.cmp.not, label %._crit_edge2463, label %.lr.ph2462.epil, !llvm.loop !107

._crit_edge2463:                                  ; preds = %.lr.ph2462.epil, %._crit_edge2463.unr-lcssa
  %.lcssa5336 = phi double [ %.lcssa5336.ph, %._crit_edge2463.unr-lcssa ], [ %1815, %.lr.ph2462.epil ]
  %1816 = fcmp ogt double %.lcssa5336, 0x3970000000000000
  %1817 = fcmp olt double %.lcssa5336, 0x7FDFFFFFFFFFFFFF
  %or.cond27 = or i1 %1816, %1817
  br i1 %or.cond27, label %1818, label %.thread1657.outer.backedge

.thread1657.outer.backedge:                       ; preds = %._crit_edge2463, %1790
  br label %.thread1657.outer

1818:                                             ; preds = %._crit_edge2463
  br i1 %.not1589, label %.lr.ph2488.preheader, label %1819

1819:                                             ; preds = %1818
  %1820 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.19)
  br label %.lr.ph2488.preheader

.lr.ph2488.preheader:                             ; preds = %1818, %1819
  br i1 %or.cond4754, label %.lr.ph2488.preheader4765, label %vector.body4463

vector.body4463:                                  ; preds = %.lr.ph2488.preheader, %vector.body4463
  %index4464 = phi i64 [ %index.next4469, %vector.body4463 ], [ 0, %.lr.ph2488.preheader ]
  %1821 = getelementptr inbounds double, ptr %33, i64 %index4464
  %1822 = getelementptr inbounds i8, ptr %1821, i64 16
  %wide.load4465 = load <2 x double>, ptr %1821, align 8, !tbaa !5
  %wide.load4466 = load <2 x double>, ptr %1822, align 8, !tbaa !5
  %1823 = getelementptr inbounds double, ptr %1, i64 %index4464
  %1824 = getelementptr inbounds i8, ptr %1823, i64 16
  store <2 x double> %wide.load4465, ptr %1823, align 8, !tbaa !5
  store <2 x double> %wide.load4466, ptr %1824, align 8, !tbaa !5
  %1825 = getelementptr inbounds double, ptr %30, i64 %index4464
  %1826 = getelementptr inbounds i8, ptr %1825, i64 16
  %wide.load4467 = load <2 x double>, ptr %1825, align 8, !tbaa !5
  %wide.load4468 = load <2 x double>, ptr %1826, align 8, !tbaa !5
  %1827 = getelementptr inbounds double, ptr %27, i64 %index4464
  %1828 = getelementptr inbounds i8, ptr %1827, i64 16
  store <2 x double> %wide.load4467, ptr %1827, align 8, !tbaa !5
  store <2 x double> %wide.load4468, ptr %1828, align 8, !tbaa !5
  %index.next4469 = add nuw i64 %index4464, 4
  %1829 = icmp eq i64 %index.next4469, %n.vec4461
  br i1 %1829, label %middle.block4456, label %vector.body4463, !llvm.loop !108

middle.block4456:                                 ; preds = %vector.body4463
  br i1 %cmp.n4470, label %._crit_edge2489, label %.lr.ph2488.preheader4765

.lr.ph2488.preheader4765:                         ; preds = %middle.block4456, %.lr.ph2488.preheader
  %indvars.iv3356.ph = phi i64 [ 0, %.lr.ph2488.preheader ], [ %n.vec4461, %middle.block4456 ]
  br i1 %lcmp.mod5579.not, label %.lr.ph2488.prol.loopexit, label %.lr.ph2488.prol

.lr.ph2488.prol:                                  ; preds = %.lr.ph2488.preheader4765
  %1830 = getelementptr inbounds double, ptr %33, i64 %indvars.iv3356.ph
  %1831 = load double, ptr %1830, align 8, !tbaa !5
  %1832 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3356.ph
  store double %1831, ptr %1832, align 8, !tbaa !5
  %1833 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3356.ph
  %1834 = load double, ptr %1833, align 8, !tbaa !5
  %1835 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3356.ph
  store double %1834, ptr %1835, align 8, !tbaa !5
  %indvars.iv.next3357.prol = or disjoint i64 %indvars.iv3356.ph, 1
  br label %.lr.ph2488.prol.loopexit

.lr.ph2488.prol.loopexit:                         ; preds = %.lr.ph2488.prol, %.lr.ph2488.preheader4765
  %indvars.iv3356.unr = phi i64 [ %indvars.iv3356.ph, %.lr.ph2488.preheader4765 ], [ %indvars.iv.next3357.prol, %.lr.ph2488.prol ]
  %1836 = icmp eq i64 %indvars.iv3356.ph, %391
  br i1 %1836, label %._crit_edge2489, label %.lr.ph2488

.lr.ph2488:                                       ; preds = %.lr.ph2488.prol.loopexit, %.lr.ph2488
  %indvars.iv3356 = phi i64 [ %indvars.iv.next3357.1, %.lr.ph2488 ], [ %indvars.iv3356.unr, %.lr.ph2488.prol.loopexit ]
  %1837 = getelementptr inbounds double, ptr %33, i64 %indvars.iv3356
  %1838 = load double, ptr %1837, align 8, !tbaa !5
  %1839 = getelementptr inbounds double, ptr %1, i64 %indvars.iv3356
  store double %1838, ptr %1839, align 8, !tbaa !5
  %1840 = getelementptr inbounds double, ptr %30, i64 %indvars.iv3356
  %1841 = load double, ptr %1840, align 8, !tbaa !5
  %1842 = getelementptr inbounds double, ptr %27, i64 %indvars.iv3356
  store double %1841, ptr %1842, align 8, !tbaa !5
  %indvars.iv.next3357 = add nuw nsw i64 %indvars.iv3356, 1
  %1843 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next3357
  %1844 = load double, ptr %1843, align 8, !tbaa !5
  %1845 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next3357
  store double %1844, ptr %1845, align 8, !tbaa !5
  %1846 = getelementptr inbounds double, ptr %30, i64 %indvars.iv.next3357
  %1847 = load double, ptr %1846, align 8, !tbaa !5
  %1848 = getelementptr inbounds double, ptr %27, i64 %indvars.iv.next3357
  store double %1847, ptr %1848, align 8, !tbaa !5
  %indvars.iv.next3357.1 = add nuw nsw i64 %indvars.iv3356, 2
  %exitcond3361.not.1 = icmp eq i64 %indvars.iv.next3357.1, %wide.trip.count3360
  br i1 %exitcond3361.not.1, label %._crit_edge2489, label %.lr.ph2488, !llvm.loop !109

._crit_edge2489:                                  ; preds = %.lr.ph2488.prol.loopexit, %.lr.ph2488, %middle.block4456
  %1849 = load double, ptr %72, align 8, !tbaa !5
  %1850 = fdiv double %1849, 5.000000e+00
  store double %1850, ptr %72, align 8, !tbaa !5
  br label %.preheader1694.preheader.backedge

.preheader1694.preheader.backedge:                ; preds = %1263, %1264, %._crit_edge2489
  %.11527.be = phi double [ %.11499, %._crit_edge2489 ], [ %.61532, %1264 ], [ %.61532, %1263 ]
  %.01491.be = phi i32 [ 1, %._crit_edge2489 ], [ %.21493, %1264 ], [ %.21493, %1263 ]
  %.01487.be = phi double [ %.21489, %._crit_edge2489 ], [ %.11488, %1264 ], [ %.11488, %1263 ]
  %.11481.be = phi i32 [ %.51485, %._crit_edge2489 ], [ %.41484, %1264 ], [ %.41484, %1263 ]
  %.11474.be = phi double [ %.51478, %._crit_edge2489 ], [ %.41477, %1264 ], [ %.41477, %1263 ]
  %.01438.be = phi double [ %.31441, %._crit_edge2489 ], [ %1262, %1264 ], [ %1262, %1263 ]
  %.01368.be = phi i32 [ %1737, %._crit_edge2489 ], [ %.11369.ph, %1264 ], [ %.11369.ph, %1263 ]
  %.01360.be = phi i32 [ %.21362, %._crit_edge2489 ], [ %.11361, %1264 ], [ %.11361, %1263 ]
  %.01351.be = phi i32 [ %440, %._crit_edge2489 ], [ %.11352, %1264 ], [ %.11352, %1263 ]
  %.01346.be = phi i32 [ %.31349, %._crit_edge2489 ], [ %.11347, %1264 ], [ %.11347, %1263 ]
  %.01335.be = phi i32 [ %.51340, %._crit_edge2489 ], [ 1, %1264 ], [ 1, %1263 ]
  %.01327.be = phi i32 [ %.21329, %._crit_edge2489 ], [ %.11328, %1264 ], [ %.11328, %1263 ]
  %.21316.be = phi i32 [ %.8, %._crit_edge2489 ], [ 0, %1264 ], [ 0, %1263 ]
  %.01309.be = phi ptr [ %1740, %._crit_edge2489 ], [ %.2, %1264 ], [ %.2, %1263 ]
  %.11461.be.in = fmul double %.01467, %1001
  %.11461.be = fdiv double %.11461.be.in, 3.000000e+00
  br label %.preheader1694.preheader

.loopexit1663:                                    ; preds = %.lr.ph2492.preheader, %1589, %1590, %1573, %1567, %1570, %1563, %1695, %1684, %1637, %1613, %1599, %1243, %1237, %1176, %941, %927, %874, %862, %271, %264, %208, %201, %164, %151
  %.101536 = phi double [ %141, %151 ], [ %141, %164 ], [ %.01526, %201 ], [ %.01526, %208 ], [ %854, %862 ], [ %854, %874 ], [ %.41530, %927 ], [ %.41530, %941 ], [ %.61532, %1176 ], [ %.61532, %1590 ], [ %.61532, %1589 ], [ %.61532, %1599 ], [ %.61532, %1613 ], [ %1629, %1637 ], [ %1629, %1684 ], [ %1629, %1695 ], [ %.61532, %1570 ], [ %.61532, %1567 ], [ %.61532, %1563 ], [ %.61532, %1573 ], [ %.61532, %1237 ], [ %.61532, %1243 ], [ %.01526, %264 ], [ %.01526, %271 ], [ %.21489, %.lr.ph2492.preheader ]
  tail call void @free(ptr noundef %calloc) #10
  br label %1851

1851:                                             ; preds = %41, %.loopexit1663, %13
  %.1 = phi double [ 0.000000e+00, %13 ], [ 0.000000e+00, %41 ], [ %.101536, %.loopexit1663 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  ret double %.1
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7

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

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

; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fabs.v2f64(<2 x double>) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v2i32(<2 x i32>) #8

; 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>) #8

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nofree 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 #6 = { 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 #7 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #10 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !10, !11, !12}
!18 = distinct !{!18, !10, !11}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !10, !11, !12}
!24 = distinct !{!24, !10, !11}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10, !11, !12}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !10, !11}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !10}
!33 = !{!34, !34, i64 0}
!34 = !{!"any pointer", !7, i64 0}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10, !11, !12}
!38 = distinct !{!38, !10, !12, !11}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10, !11}
!43 = distinct !{!43, !10}
!44 = distinct !{!44, !10, !11, !12}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !10, !11}
!47 = distinct !{!47, !10}
!48 = distinct !{!48, !10}
!49 = !{!50, !50, i64 0}
!50 = !{!"int", !7, i64 0}
!51 = distinct !{!51, !10}
!52 = distinct !{!52, !10}
!53 = distinct !{!53, !10, !11, !12}
!54 = distinct !{!54, !10, !12, !11}
!55 = distinct !{!55, !10, !11, !12}
!56 = distinct !{!56, !10, !12, !11}
!57 = distinct !{!57, !10}
!58 = distinct !{!58, !16}
!59 = distinct !{!59, !10}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !10, !11, !12}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !10, !11}
!64 = distinct !{!64, !10}
!65 = distinct !{!65, !16}
!66 = distinct !{!66, !10}
!67 = distinct !{!67, !10, !11, !12}
!68 = distinct !{!68, !10, !11}
!69 = distinct !{!69, !10}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !10, !11, !12}
!72 = distinct !{!72, !10, !11}
!73 = distinct !{!73, !10}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !10}
!76 = distinct !{!76, !10, !11, !12}
!77 = distinct !{!77, !10, !11}
!78 = distinct !{!78, !10, !11, !12}
!79 = distinct !{!79, !16}
!80 = distinct !{!80, !10, !11}
!81 = distinct !{!81, !10}
!82 = distinct !{!82, !16}
!83 = distinct !{!83, !10}
!84 = distinct !{!84, !16}
!85 = distinct !{!85, !10}
!86 = distinct !{!86, !10}
!87 = distinct !{!87, !16}
!88 = distinct !{!88, !10}
!89 = distinct !{!89, !10}
!90 = !{!"branch_weights", i32 1, i32 1048575}
!91 = distinct !{!91, !10}
!92 = distinct !{!92, !10, !11, !12}
!93 = distinct !{!93, !10, !12, !11}
!94 = distinct !{!94, !10, !11, !12}
!95 = distinct !{!95, !10, !12, !11}
!96 = distinct !{!96, !10, !11, !12}
!97 = distinct !{!97, !10, !11}
!98 = distinct !{!98, !10}
!99 = distinct !{!99, !16}
!100 = distinct !{!100, !10}
!101 = distinct !{!101, !10}
!102 = distinct !{!102, !10}
!103 = distinct !{!103, !10}
!104 = distinct !{!104, !10, !11, !12}
!105 = distinct !{!105, !10, !12, !11}
!106 = distinct !{!106, !10}
!107 = distinct !{!107, !16}
!108 = distinct !{!108, !10, !11, !12}
!109 = distinct !{!109, !10, !11}


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