; LLVM IR from pantor/ruckig :: src/ruckig (position_third_step2)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::array.2" = type { [4 x double] }
%"class.ruckig::roots::PositiveSet.3" = type { %"class.ruckig::roots::Set.4" }
%"class.ruckig::roots::Set.4" = type { %"struct.std::array.5", i64 }
%"struct.std::array.5" = type { [3 x double] }
%"struct.std::array.6" = type { [6 x double] }
%"struct.std::array.7" = type { [5 x double] }
%"class.ruckig::roots::PositiveSet" = type { %"class.ruckig::roots::Set" }
%"class.ruckig::roots::Set" = type { %"struct.std::array.2", i64 }
%class.anon = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.std::array" = type { [7 x double] }
%"class.ruckig::roots::Set.8" = type { %"struct.std::array.9", i64 }
%"struct.std::array.9" = type { [6 x %"struct.std::pair"] }
%"struct.std::pair" = type { double, double }
%class.anon.10 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.ruckig::PositionThirdOrderStep2" = type <{ double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i8, [7 x i8] }>
%"class.ruckig::Profile" = type <{ %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.0", %"class.ruckig::BrakeProfile", %"class.ruckig::BrakeProfile", double, double, double, i32, i32, i32, [4 x i8] }>
%"struct.std::array.0" = type { [8 x double] }
%"class.ruckig::BrakeProfile" = type { double, %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1" }
%"struct.std::array.1" = type { [2 x double] }

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(265) %0, ptr noundef nonnull align 8 dereferenceable(572) %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6) #4 align 2 {
  %8 = alloca i1, align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca %"struct.std::array.2", align 8
  %23 = alloca %"class.ruckig::roots::PositiveSet.3", align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca %"struct.std::array.6", align 8
  %37 = alloca %"struct.std::array.7", align 8
  %38 = alloca %"struct.std::array.2", align 8
  %39 = alloca %"class.ruckig::roots::PositiveSet", align 8
  %40 = alloca double, align 8
  %41 = alloca %class.anon, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca %"struct.std::array", align 8
  %55 = alloca %"struct.std::array.6", align 8
  %56 = alloca %"struct.std::array.7", align 8
  %57 = alloca double, align 8
  %58 = alloca %"class.ruckig::roots::Set.8", align 8
  %59 = alloca %"class.ruckig::roots::PositiveSet", align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca %"struct.std::array.2", align 8
  %66 = alloca %"struct.std::pair", align 8
  %67 = alloca %"struct.std::pair", align 8
  %68 = alloca double, align 8
  %69 = alloca %class.anon.10, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca %"struct.std::pair", align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store double %2, ptr %11, align 8, !tbaa !9
  store double %3, ptr %12, align 8, !tbaa !9
  store double %4, ptr %13, align 8, !tbaa !9
  store double %5, ptr %14, align 8, !tbaa !9
  store double %6, ptr %15, align 8, !tbaa !9
  %76 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %77 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %78 = load double, ptr %77, align 8, !tbaa !11
  %79 = fneg double %78
  %80 = load double, ptr %15, align 8, !tbaa !9
  %81 = fdiv double %79, %80
  store double %81, ptr %18, align 8, !tbaa !9
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  %83 = load double, ptr %82, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  store double %83, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %84 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %85 = load double, ptr %84, align 8, !tbaa !14
  %86 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %87 = load double, ptr %86, align 8, !tbaa !11
  %88 = load double, ptr %15, align 8, !tbaa !9
  %89 = fdiv double %87, %88
  %90 = fsub double %85, %89
  %91 = fdiv double %90, 2.000000e+00
  store double %91, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %92 = load double, ptr %13, align 8, !tbaa !9
  %93 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %94 = load double, ptr %93, align 8, !tbaa !11
  %95 = fsub double %92, %94
  %96 = load double, ptr %15, align 8, !tbaa !9
  %97 = fdiv double %95, %96
  store double %97, ptr %21, align 8, !tbaa !9
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21)
  %99 = load double, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  store double %99, ptr %19, align 8, !tbaa !9
  %100 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 0
  %101 = load double, ptr %100, align 8, !tbaa !15
  %102 = call noundef double @_ZSt3absd(double noundef %101)
  %103 = fcmp olt double %102, 0x3CB0000000000000
  br i1 %103, label %104, label %243

104:                                              ; preds = %7
  %105 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %106 = load double, ptr %105, align 8, !tbaa !11
  %107 = call noundef double @_ZSt3absd(double noundef %106)
  %108 = fcmp olt double %107, 0x3CB0000000000000
  br i1 %108, label %109, label %243

109:                                              ; preds = %104
  %110 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 3
  %111 = load double, ptr %110, align 8, !tbaa !16
  %112 = call noundef double @_ZSt3absd(double noundef %111)
  %113 = fcmp olt double %112, 0x3CB0000000000000
  br i1 %113, label %114, label %243

114:                                              ; preds = %109
  %115 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %116 = load double, ptr %115, align 8, !tbaa !17
  %117 = call noundef double @_ZSt3absd(double noundef %116)
  %118 = fcmp olt double %117, 0x3CB0000000000000
  br i1 %118, label %119, label %243

119:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 0) #7
  store double 1.000000e+00, ptr %120, align 8, !tbaa !9
  %121 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %122 = load double, ptr %121, align 8, !tbaa !14
  %123 = fneg double %122
  %124 = fdiv double %123, 2.000000e+00
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 1) #7
  store double %124, ptr %125, align 8, !tbaa !9
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 2) #7
  store double 0.000000e+00, ptr %126, align 8, !tbaa !9
  %127 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 10
  %128 = load double, ptr %127, align 8, !tbaa !18
  %129 = load double, ptr %15, align 8, !tbaa !9
  %130 = fmul double 2.000000e+00, %129
  %131 = fdiv double %128, %130
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 3) #7
  store double %131, ptr %132, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 0) #7
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 1) #7
  %136 = load double, ptr %135, align 8, !tbaa !9
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 2) #7
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 3) #7
  %140 = load double, ptr %139, align 8, !tbaa !9
  call void @_ZN6ruckig5roots11solve_cubicEdddd(ptr dead_on_unwind writable sret(%"class.ruckig::roots::PositiveSet.3") align 8 %23, double noundef %134, double noundef %136, double noundef %138, double noundef %140)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store ptr %23, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %141 = load ptr, ptr %24, align 8, !tbaa !5
  %142 = call noundef ptr @_ZN6ruckig5roots3SetIdLm3EE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %141)
  store ptr %142, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %143 = load ptr, ptr %24, align 8, !tbaa !5
  %144 = call noundef ptr @_ZN6ruckig5roots3SetIdLm3EE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %143)
  store ptr %144, ptr %26, align 8, !tbaa !5
  br label %145

145:                                              ; preds = %234, %119
  %146 = load ptr, ptr %25, align 8, !tbaa !5
  %147 = load ptr, ptr %26, align 8, !tbaa !5
  %148 = icmp ne ptr %146, %147
  br i1 %148, label %150, label %149

149:                                              ; preds = %145
  store i32 2, ptr %27, align 4
  br label %237

150:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load double, ptr %151, align 8, !tbaa !9
  store double %152, ptr %28, align 8, !tbaa !9
  %153 = load double, ptr %28, align 8, !tbaa !9
  %154 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %155 = load double, ptr %154, align 8, !tbaa !14
  %156 = fdiv double %155, 4.000000e+00
  %157 = fcmp ogt double %153, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %150
  store i32 3, ptr %27, align 4
  br label %231

159:                                              ; preds = %150
  %160 = load double, ptr %28, align 8, !tbaa !9
  %161 = fcmp ogt double %160, 0x3CB0000000000000
  br i1 %161, label %162, label %190

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %163 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 10
  %164 = load double, ptr %163, align 8, !tbaa !18
  %165 = fneg double %164
  %166 = load double, ptr %15, align 8, !tbaa !9
  %167 = load double, ptr %28, align 8, !tbaa !9
  %168 = fmul double %166, %167
  %169 = load double, ptr %28, align 8, !tbaa !9
  %170 = fmul double %168, %169
  %171 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %172 = load double, ptr %171, align 8, !tbaa !14
  %173 = load double, ptr %28, align 8, !tbaa !9
  %174 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %173, double %172)
  %175 = call double @llvm.fmuladd.f64(double %170, double %174, double %165)
  store double %175, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %176 = load double, ptr %15, align 8, !tbaa !9
  %177 = fmul double 2.000000e+00, %176
  %178 = load double, ptr %28, align 8, !tbaa !9
  %179 = fmul double %177, %178
  %180 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %181 = load double, ptr %180, align 8, !tbaa !14
  %182 = load double, ptr %28, align 8, !tbaa !9
  %183 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %182, double %181)
  %184 = fmul double %179, %183
  store double %184, ptr %30, align 8, !tbaa !9
  %185 = load double, ptr %29, align 8, !tbaa !9
  %186 = load double, ptr %30, align 8, !tbaa !9
  %187 = fdiv double %185, %186
  %188 = load double, ptr %28, align 8, !tbaa !9
  %189 = fsub double %188, %187
  store double %189, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %190

190:                                              ; preds = %162, %159
  %191 = load double, ptr %28, align 8, !tbaa !9
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = getelementptr inbounds %"class.ruckig::Profile", ptr %192, i32 0, i32 0
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %193, i64 noundef 0) #7
  store double %191, ptr %194, align 8, !tbaa !9
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = getelementptr inbounds %"class.ruckig::Profile", ptr %195, i32 0, i32 0
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %196, i64 noundef 1) #7
  store double 0.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = load double, ptr %28, align 8, !tbaa !9
  %199 = load ptr, ptr %10, align 8, !tbaa !5
  %200 = getelementptr inbounds %"class.ruckig::Profile", ptr %199, i32 0, i32 0
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %200, i64 noundef 2) #7
  store double %198, ptr %201, align 8, !tbaa !9
  %202 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %203 = load double, ptr %202, align 8, !tbaa !14
  %204 = load double, ptr %28, align 8, !tbaa !9
  %205 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %204, double %203)
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds %"class.ruckig::Profile", ptr %206, i32 0, i32 0
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %207, i64 noundef 3) #7
  store double %205, ptr %208, align 8, !tbaa !9
  %209 = load double, ptr %28, align 8, !tbaa !9
  %210 = load ptr, ptr %10, align 8, !tbaa !5
  %211 = getelementptr inbounds %"class.ruckig::Profile", ptr %210, i32 0, i32 0
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %211, i64 noundef 4) #7
  store double %209, ptr %212, align 8, !tbaa !9
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = getelementptr inbounds %"class.ruckig::Profile", ptr %213, i32 0, i32 0
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %214, i64 noundef 5) #7
  store double 0.000000e+00, ptr %215, align 8, !tbaa !9
  %216 = load double, ptr %28, align 8, !tbaa !9
  %217 = load ptr, ptr %10, align 8, !tbaa !5
  %218 = getelementptr inbounds %"class.ruckig::Profile", ptr %217, i32 0, i32 0
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %218, i64 noundef 6) #7
  store double %216, ptr %219, align 8, !tbaa !9
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %222 = load double, ptr %221, align 8, !tbaa !14
  %223 = load double, ptr %15, align 8, !tbaa !9
  %224 = load double, ptr %11, align 8, !tbaa !9
  %225 = load double, ptr %12, align 8, !tbaa !9
  %226 = load double, ptr %13, align 8, !tbaa !9
  %227 = load double, ptr %14, align 8, !tbaa !9
  %228 = call noundef zeroext i1 @_ZN6ruckig7Profile17check_with_timingILNS0_12ControlSignsE0ELNS0_13ReachedLimitsE1EEEbdddddd(ptr noundef nonnull align 8 dereferenceable(572) %220, double noundef %222, double noundef %223, double noundef %224, double noundef %225, double noundef %226, double noundef %227)
  br i1 %228, label %229, label %230

229:                                              ; preds = %190
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %231

230:                                              ; preds = %190
  store i32 0, ptr %27, align 4
  br label %231

231:                                              ; preds = %230, %229, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  %232 = load i32, ptr %27, align 4
  switch i32 %232, label %237 [
    i32 0, label %233
    i32 3, label %234
  ]

233:                                              ; preds = %231
  br label %234

234:                                              ; preds = %233, %231
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = getelementptr inbounds double, ptr %235, i32 1
  store ptr %236, ptr %25, align 8, !tbaa !5
  br label %145

237:                                              ; preds = %231, %149
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  %238 = load i32, ptr %27, align 4
  switch i32 %238, label %240 [
    i32 2, label %239
  ]

239:                                              ; preds = %237
  store i32 0, ptr %27, align 4
  br label %240

240:                                              ; preds = %239, %237
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  %241 = load i32, ptr %27, align 4
  switch i32 %241, label %1152 [
    i32 0, label %242
  ]

242:                                              ; preds = %240
  br label %691

243:                                              ; preds = %114, %109, %104, %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %244 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %245 = load double, ptr %244, align 8, !tbaa !19
  %246 = load double, ptr %15, align 8, !tbaa !9
  %247 = fmul double 2.000000e+00, %246
  %248 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %249 = load double, ptr %248, align 8, !tbaa !17
  %250 = fmul double -2.000000e+00, %249
  %251 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %252 = load double, ptr %251, align 8, !tbaa !14
  %253 = load double, ptr %15, align 8, !tbaa !9
  %254 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 11
  %255 = load double, ptr %254, align 8, !tbaa !20
  %256 = fmul double %253, %255
  %257 = call double @llvm.fmuladd.f64(double %250, double %252, double %256)
  %258 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %259 = load double, ptr %258, align 8, !tbaa !21
  %260 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %259, double %257)
  %261 = fneg double %247
  %262 = call double @llvm.fmuladd.f64(double %261, double %260, double %245)
  store double %262, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %263 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %264 = load double, ptr %263, align 8, !tbaa !22
  %265 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %266 = load double, ptr %265, align 8, !tbaa !23
  %267 = fmul double 3.000000e+00, %266
  %268 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %269 = load double, ptr %268, align 8, !tbaa !24
  %270 = fneg double %267
  %271 = call double @llvm.fmuladd.f64(double %270, double %269, double %264)
  %272 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %273 = load double, ptr %272, align 8, !tbaa !17
  %274 = fmul double 3.000000e+00, %273
  %275 = load double, ptr %15, align 8, !tbaa !9
  %276 = fmul double %274, %275
  %277 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %278 = load double, ptr %277, align 8, !tbaa !21
  %279 = fneg double %276
  %280 = call double @llvm.fmuladd.f64(double %279, double %278, double %271)
  store double %280, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %281 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 27
  %282 = load double, ptr %281, align 8, !tbaa !25
  %283 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %284 = load double, ptr %283, align 8, !tbaa !22
  %285 = fmul double 8.000000e+00, %284
  %286 = load double, ptr %15, align 8, !tbaa !9
  %287 = fmul double %285, %286
  %288 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %289 = load double, ptr %288, align 8, !tbaa !14
  %290 = call double @llvm.fmuladd.f64(double %287, double %289, double %282)
  %291 = load double, ptr %15, align 8, !tbaa !9
  %292 = fmul double 1.200000e+01, %291
  %293 = load double, ptr %15, align 8, !tbaa !9
  %294 = fmul double 3.000000e+00, %293
  %295 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %296 = load double, ptr %295, align 8, !tbaa !26
  %297 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %298 = load double, ptr %297, align 8, !tbaa !19
  %299 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %300 = load double, ptr %299, align 8, !tbaa !21
  %301 = fmul double %298, %300
  %302 = fneg double %301
  %303 = call double @llvm.fmuladd.f64(double %294, double %296, double %302)
  %304 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %305 = load double, ptr %304, align 8, !tbaa !17
  %306 = fmul double 2.000000e+00, %305
  %307 = load double, ptr %15, align 8, !tbaa !9
  %308 = fmul double %306, %307
  %309 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %310 = load double, ptr %309, align 8, !tbaa !24
  %311 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %312 = load double, ptr %311, align 8, !tbaa !14
  %313 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %314 = load double, ptr %313, align 8, !tbaa !21
  %315 = fneg double %312
  %316 = call double @llvm.fmuladd.f64(double %315, double %314, double %310)
  %317 = call double @llvm.fmuladd.f64(double %308, double %316, double %303)
  %318 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %319 = load double, ptr %318, align 8, !tbaa !23
  %320 = fmul double 2.000000e+00, %319
  %321 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %322 = load double, ptr %321, align 8, !tbaa !14
  %323 = fmul double %320, %322
  %324 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %325 = load double, ptr %324, align 8, !tbaa !24
  %326 = fneg double %323
  %327 = call double @llvm.fmuladd.f64(double %326, double %325, double %317)
  %328 = call double @llvm.fmuladd.f64(double %292, double %327, double %290)
  store double %328, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %329 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %330 = load double, ptr %329, align 8, !tbaa !11
  %331 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %332 = load double, ptr %331, align 8, !tbaa !17
  %333 = load double, ptr %15, align 8, !tbaa !9
  %334 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %335 = load double, ptr %334, align 8, !tbaa !14
  %336 = fneg double %333
  %337 = call double @llvm.fmuladd.f64(double %336, double %335, double %332)
  %338 = fmul double %330, %337
  store double %338, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %339 = load double, ptr %15, align 8, !tbaa !9
  %340 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 16
  %341 = load double, ptr %340, align 8, !tbaa !27
  %342 = fneg double %341
  %343 = load double, ptr %15, align 8, !tbaa !9
  %344 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %345 = load double, ptr %344, align 8, !tbaa !14
  %346 = call double @llvm.fmuladd.f64(double %343, double %345, double %342)
  %347 = fmul double %339, %346
  store double %347, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %36) #7
  %348 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 0) #7
  store double 1.000000e+00, ptr %348, align 8, !tbaa !9
  %349 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %350 = load double, ptr %349, align 8, !tbaa !28
  %351 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %352 = load double, ptr %351, align 8, !tbaa !19
  %353 = call double @llvm.fmuladd.f64(double 1.500000e+01, double %350, double %352)
  %354 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %355 = load double, ptr %354, align 8, !tbaa !17
  %356 = fmul double 4.000000e+00, %355
  %357 = load double, ptr %15, align 8, !tbaa !9
  %358 = fmul double %356, %357
  %359 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %360 = load double, ptr %359, align 8, !tbaa !14
  %361 = call double @llvm.fmuladd.f64(double %358, double %360, double %353)
  %362 = load double, ptr %34, align 8, !tbaa !9
  %363 = call double @llvm.fmuladd.f64(double -1.600000e+01, double %362, double %361)
  %364 = load double, ptr %15, align 8, !tbaa !9
  %365 = fmul double 2.000000e+00, %364
  %366 = load double, ptr %15, align 8, !tbaa !9
  %367 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 11
  %368 = load double, ptr %367, align 8, !tbaa !20
  %369 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %370 = load double, ptr %369, align 8, !tbaa !21
  %371 = fmul double 3.000000e+00, %370
  %372 = call double @llvm.fmuladd.f64(double %366, double %368, double %371)
  %373 = fneg double %365
  %374 = call double @llvm.fmuladd.f64(double %373, double %372, double %363)
  %375 = load double, ptr %35, align 8, !tbaa !9
  %376 = fmul double 4.000000e+00, %375
  %377 = fdiv double %374, %376
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 1) #7
  store double %377, ptr %378, align 8, !tbaa !9
  %379 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %380 = load double, ptr %379, align 8, !tbaa !29
  %381 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %382 = load double, ptr %381, align 8, !tbaa !22
  %383 = fmul double 2.000000e+00, %382
  %384 = fneg double %383
  %385 = call double @llvm.fmuladd.f64(double 2.900000e+01, double %380, double %384)
  %386 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = fmul double 3.300000e+01, %387
  %389 = load double, ptr %34, align 8, !tbaa !9
  %390 = fneg double %388
  %391 = call double @llvm.fmuladd.f64(double %390, double %389, double %385)
  %392 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %393 = load double, ptr %392, align 8, !tbaa !23
  %394 = fmul double 6.000000e+00, %393
  %395 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %396 = load double, ptr %395, align 8, !tbaa !24
  %397 = call double @llvm.fmuladd.f64(double %394, double %396, double %391)
  %398 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %399 = load double, ptr %398, align 8, !tbaa !17
  %400 = fmul double 6.000000e+00, %399
  %401 = load double, ptr %15, align 8, !tbaa !9
  %402 = fmul double %400, %401
  %403 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %404 = load double, ptr %403, align 8, !tbaa !21
  %405 = call double @llvm.fmuladd.f64(double %402, double %404, double %397)
  %406 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = fmul double 6.000000e+00, %407
  %409 = load double, ptr %31, align 8, !tbaa !9
  %410 = call double @llvm.fmuladd.f64(double %408, double %409, double %405)
  %411 = load double, ptr %15, align 8, !tbaa !9
  %412 = fmul double 6.000000e+00, %411
  %413 = load double, ptr %35, align 8, !tbaa !9
  %414 = fmul double %412, %413
  %415 = fdiv double %410, %414
  %416 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 2) #7
  store double %415, ptr %416, align 8, !tbaa !9
  %417 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %418 = load double, ptr %417, align 8, !tbaa !30
  %419 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %420 = load double, ptr %419, align 8, !tbaa !28
  %421 = fmul double 7.600000e+01, %420
  %422 = load double, ptr %34, align 8, !tbaa !9
  %423 = fmul double %421, %422
  %424 = fneg double %423
  %425 = call double @llvm.fmuladd.f64(double 6.100000e+01, double %418, double %424)
  %426 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = fmul double 1.600000e+01, %427
  %429 = load double, ptr %32, align 8, !tbaa !9
  %430 = fneg double %428
  %431 = call double @llvm.fmuladd.f64(double %430, double %429, double %425)
  %432 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %433 = load double, ptr %432, align 8, !tbaa !28
  %434 = fmul double 3.000000e+01, %433
  %435 = load double, ptr %31, align 8, !tbaa !9
  %436 = call double @llvm.fmuladd.f64(double %434, double %435, double %431)
  %437 = load double, ptr %33, align 8, !tbaa !9
  %438 = fadd double %436, %437
  %439 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %440 = load double, ptr %439, align 8, !tbaa !23
  %441 = fmul double 2.400000e+01, %440
  %442 = load double, ptr %35, align 8, !tbaa !9
  %443 = fmul double %441, %442
  %444 = fdiv double %438, %443
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 3) #7
  store double %444, ptr %445, align 8, !tbaa !9
  %446 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %449 = load double, ptr %448, align 8, !tbaa !30
  %450 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %451 = load double, ptr %450, align 8, !tbaa !28
  %452 = fmul double 1.000000e+01, %451
  %453 = load double, ptr %34, align 8, !tbaa !9
  %454 = fmul double %452, %453
  %455 = fneg double %454
  %456 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %449, double %455)
  %457 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %458 = load double, ptr %457, align 8, !tbaa !11
  %459 = fmul double 4.000000e+00, %458
  %460 = load double, ptr %32, align 8, !tbaa !9
  %461 = fneg double %459
  %462 = call double @llvm.fmuladd.f64(double %461, double %460, double %456)
  %463 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %464 = load double, ptr %463, align 8, !tbaa !28
  %465 = fmul double 6.000000e+00, %464
  %466 = load double, ptr %31, align 8, !tbaa !9
  %467 = call double @llvm.fmuladd.f64(double %465, double %466, double %462)
  %468 = load double, ptr %33, align 8, !tbaa !9
  %469 = fadd double %467, %468
  %470 = fmul double %447, %469
  %471 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %472 = load double, ptr %471, align 8, !tbaa !23
  %473 = fmul double 1.200000e+01, %472
  %474 = load double, ptr %15, align 8, !tbaa !9
  %475 = fmul double %473, %474
  %476 = load double, ptr %35, align 8, !tbaa !9
  %477 = fmul double %475, %476
  %478 = fdiv double %470, %477
  %479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 4) #7
  store double %478, ptr %479, align 8, !tbaa !9
  %480 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 24
  %481 = load double, ptr %480, align 8, !tbaa !31
  %482 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 29
  %483 = load double, ptr %482, align 8, !tbaa !32
  %484 = call double @llvm.fmuladd.f64(double 7.000000e+00, double %481, double %483)
  %485 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %486 = load double, ptr %485, align 8, !tbaa !30
  %487 = fmul double 1.200000e+01, %486
  %488 = load double, ptr %34, align 8, !tbaa !9
  %489 = fneg double %487
  %490 = call double @llvm.fmuladd.f64(double %489, double %488, double %484)
  %491 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %492 = load double, ptr %491, align 8, !tbaa !22
  %493 = fmul double 4.800000e+01, %492
  %494 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %495 = load double, ptr %494, align 8, !tbaa !23
  %496 = fmul double %493, %495
  %497 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %498 = load double, ptr %497, align 8, !tbaa !24
  %499 = call double @llvm.fmuladd.f64(double %496, double %498, double %490)
  %500 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %501 = load double, ptr %500, align 8, !tbaa !29
  %502 = fmul double 8.000000e+00, %501
  %503 = load double, ptr %32, align 8, !tbaa !9
  %504 = fneg double %502
  %505 = call double @llvm.fmuladd.f64(double %504, double %503, double %499)
  %506 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %507 = load double, ptr %506, align 8, !tbaa !23
  %508 = fmul double 7.200000e+01, %507
  %509 = load double, ptr %15, align 8, !tbaa !9
  %510 = fmul double %508, %509
  %511 = load double, ptr %15, align 8, !tbaa !9
  %512 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %513 = load double, ptr %512, align 8, !tbaa !24
  %514 = fmul double %511, %513
  %515 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %516 = load double, ptr %515, align 8, !tbaa !24
  %517 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %518 = load double, ptr %517, align 8, !tbaa !26
  %519 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %520 = load double, ptr %519, align 8, !tbaa !21
  %521 = fmul double %518, %520
  %522 = call double @llvm.fmuladd.f64(double %514, double %516, double %521)
  %523 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %524 = load double, ptr %523, align 8, !tbaa !17
  %525 = fmul double 2.000000e+00, %524
  %526 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %527 = load double, ptr %526, align 8, !tbaa !24
  %528 = fmul double %525, %527
  %529 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %530 = load double, ptr %529, align 8, !tbaa !21
  %531 = call double @llvm.fmuladd.f64(double %528, double %530, double %522)
  %532 = fneg double %510
  %533 = call double @llvm.fmuladd.f64(double %532, double %531, double %505)
  %534 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 27
  %535 = load double, ptr %534, align 8, !tbaa !25
  %536 = fmul double 6.000000e+00, %535
  %537 = load double, ptr %15, align 8, !tbaa !9
  %538 = fmul double %536, %537
  %539 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %540 = load double, ptr %539, align 8, !tbaa !21
  %541 = fneg double %538
  %542 = call double @llvm.fmuladd.f64(double %541, double %540, double %533)
  %543 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %544 = load double, ptr %543, align 8, !tbaa !19
  %545 = fmul double 3.600000e+01, %544
  %546 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %547 = load double, ptr %546, align 8, !tbaa !23
  %548 = fmul double %545, %547
  %549 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %550 = load double, ptr %549, align 8, !tbaa !26
  %551 = call double @llvm.fmuladd.f64(double %548, double %550, double %542)
  %552 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %553 = load double, ptr %552, align 8, !tbaa !30
  %554 = fmul double 9.000000e+00, %553
  %555 = load double, ptr %31, align 8, !tbaa !9
  %556 = call double @llvm.fmuladd.f64(double %554, double %555, double %551)
  %557 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %558 = load double, ptr %557, align 8, !tbaa !28
  %559 = fmul double 3.000000e+00, %558
  %560 = load double, ptr %33, align 8, !tbaa !9
  %561 = call double @llvm.fmuladd.f64(double %559, double %560, double %556)
  %562 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %563 = load double, ptr %562, align 8, !tbaa !23
  %564 = fmul double 1.440000e+02, %563
  %565 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %566 = load double, ptr %565, align 8, !tbaa !23
  %567 = fmul double %564, %566
  %568 = load double, ptr %35, align 8, !tbaa !9
  %569 = fmul double %567, %568
  %570 = fdiv double %561, %569
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %36, i64 noundef 5) #7
  store double %570, ptr %571, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %37) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind writable sret(%"struct.std::array.7") align 8 %37, ptr noundef nonnull align 8 dereferenceable(48) %36)
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind writable sret(%"struct.std::array.2") align 8 %38, ptr noundef nonnull align 8 dereferenceable(40) %37)
  call void @llvm.lifetime.start.p0(i64 40, ptr %39) #7
  %572 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %37, i64 noundef 1) #7
  %573 = load double, ptr %572, align 8, !tbaa !9
  %574 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %37, i64 noundef 2) #7
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %37, i64 noundef 3) #7
  %577 = load double, ptr %576, align 8, !tbaa !9
  %578 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %37, i64 noundef 4) #7
  %579 = load double, ptr %578, align 8, !tbaa !9
  call void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind writable sret(%"class.ruckig::roots::PositiveSet") align 8 %39, double noundef %573, double noundef %575, double noundef %577, double noundef %579)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %580 = load double, ptr %16, align 8, !tbaa !9
  store double %580, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %41) #7
  %581 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 0
  store ptr %76, ptr %581, align 8, !tbaa !33
  %582 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 1
  store ptr %15, ptr %582, align 8, !tbaa !5
  %583 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 2
  %584 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %584, ptr %583, align 8, !tbaa !5
  %585 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 3
  store ptr %11, ptr %585, align 8, !tbaa !5
  %586 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 4
  store ptr %12, ptr %586, align 8, !tbaa !5
  %587 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 5
  store ptr %13, ptr %587, align 8, !tbaa !5
  %588 = getelementptr inbounds %class.anon, ptr %41, i32 0, i32 6
  store ptr %14, ptr %588, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store ptr %39, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %589 = load ptr, ptr %42, align 8, !tbaa !5
  %590 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %589)
  store ptr %590, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %591 = load ptr, ptr %42, align 8, !tbaa !5
  %592 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %591)
  store ptr %592, ptr %44, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %656, %243
  %594 = load ptr, ptr %43, align 8, !tbaa !5
  %595 = load ptr, ptr %44, align 8, !tbaa !5
  %596 = icmp ne ptr %594, %595
  br i1 %596, label %598, label %597

597:                                              ; preds = %593
  store i32 4, ptr %27, align 4
  br label %659

598:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %599 = load ptr, ptr %43, align 8, !tbaa !5
  %600 = load double, ptr %599, align 8, !tbaa !9
  store double %600, ptr %45, align 8, !tbaa !9
  %601 = load double, ptr %45, align 8, !tbaa !9
  %602 = load double, ptr %19, align 8, !tbaa !9
  %603 = fcmp oge double %601, %602
  br i1 %603, label %604, label %605

604:                                              ; preds = %598
  store i32 5, ptr %27, align 4
  br label %653

605:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %606 = load double, ptr %45, align 8, !tbaa !9
  %607 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %37, double noundef %606)
  store double %607, ptr %46, align 8, !tbaa !9
  %608 = load double, ptr %46, align 8, !tbaa !9
  %609 = call noundef double @_ZSt3absd(double noundef %608)
  %610 = fcmp ogt double %609, 0x3D06849B86A12B9B
  br i1 %610, label %611, label %618

611:                                              ; preds = %605
  %612 = load double, ptr %46, align 8, !tbaa !9
  %613 = load double, ptr %45, align 8, !tbaa !9
  %614 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %38, double noundef %613)
  %615 = fdiv double %612, %614
  %616 = load double, ptr %45, align 8, !tbaa !9
  %617 = fsub double %616, %615
  store double %617, ptr %45, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %611, %605
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %619 = load double, ptr %45, align 8, !tbaa !9
  %620 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %619)
  store double %620, ptr %47, align 8, !tbaa !9
  %621 = load double, ptr %47, align 8, !tbaa !9
  %622 = call noundef double @_ZSt3absd(double noundef %621)
  %623 = load double, ptr %45, align 8, !tbaa !9
  %624 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %38, double noundef %623)
  %625 = call noundef double @_ZSt3absd(double noundef %624)
  %626 = fmul double 6.400000e+01, %625
  %627 = fmul double %626, 0x3D06849B86A12B9B
  %628 = fcmp olt double %622, %627
  br i1 %628, label %629, label %634

629:                                              ; preds = %618
  %630 = load double, ptr %45, align 8, !tbaa !9
  %631 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %41, double noundef %630)
  br i1 %631, label %632, label %633

632:                                              ; preds = %629
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %650

633:                                              ; preds = %629
  br label %648

634:                                              ; preds = %618
  %635 = load double, ptr %40, align 8, !tbaa !9
  %636 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %635)
  %637 = load double, ptr %47, align 8, !tbaa !9
  %638 = fmul double %636, %637
  %639 = fcmp olt double %638, 0.000000e+00
  br i1 %639, label %640, label %647

640:                                              ; preds = %634
  %641 = load double, ptr %40, align 8, !tbaa !9
  %642 = load double, ptr %45, align 8, !tbaa !9
  %643 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %641, double noundef %642)
  %644 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %41, double noundef %643)
  br i1 %644, label %645, label %646

645:                                              ; preds = %640
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %650

646:                                              ; preds = %640
  br label %647

647:                                              ; preds = %646, %634
  br label %648

648:                                              ; preds = %647, %633
  %649 = load double, ptr %45, align 8, !tbaa !9
  store double %649, ptr %40, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  br label %650

650:                                              ; preds = %648, %645, %632
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %651 = load i32, ptr %27, align 4
  switch i32 %651, label %653 [
    i32 0, label %652
  ]

652:                                              ; preds = %650
  store i32 0, ptr %27, align 4
  br label %653

653:                                              ; preds = %652, %650, %604
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  %654 = load i32, ptr %27, align 4
  switch i32 %654, label %659 [
    i32 0, label %655
    i32 5, label %656
  ]

655:                                              ; preds = %653
  br label %656

656:                                              ; preds = %655, %653
  %657 = load ptr, ptr %43, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i32 1
  store ptr %658, ptr %43, align 8, !tbaa !5
  br label %593

659:                                              ; preds = %653, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %660 = load i32, ptr %27, align 4
  switch i32 %660, label %688 [
    i32 4, label %661
  ]

661:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %662 = load double, ptr %19, align 8, !tbaa !9
  %663 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %662)
  store double %663, ptr %48, align 8, !tbaa !9
  %664 = load double, ptr %40, align 8, !tbaa !9
  %665 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %664)
  %666 = load double, ptr %48, align 8, !tbaa !9
  %667 = fmul double %665, %666
  %668 = fcmp olt double %667, 0.000000e+00
  br i1 %668, label %669, label %676

669:                                              ; preds = %661
  %670 = load double, ptr %40, align 8, !tbaa !9
  %671 = load double, ptr %19, align 8, !tbaa !9
  %672 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %36, double noundef %670, double noundef %671)
  %673 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %41, double noundef %672)
  br i1 %673, label %674, label %675

674:                                              ; preds = %669
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %687

675:                                              ; preds = %669
  br label %686

676:                                              ; preds = %661
  %677 = load double, ptr %48, align 8, !tbaa !9
  %678 = call noundef double @_ZSt3absd(double noundef %677)
  %679 = fcmp olt double %678, 0x3CE0000000000000
  br i1 %679, label %680, label %685

680:                                              ; preds = %676
  %681 = load double, ptr %19, align 8, !tbaa !9
  %682 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %41, double noundef %681)
  br i1 %682, label %683, label %684

683:                                              ; preds = %680
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %687

684:                                              ; preds = %680
  br label %685

685:                                              ; preds = %684, %676
  br label %686

686:                                              ; preds = %685, %675
  store i32 0, ptr %27, align 4
  br label %687

687:                                              ; preds = %686, %683, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %688

688:                                              ; preds = %687, %659
  call void @llvm.lifetime.end.p0(i64 56, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  %689 = load i32, ptr %27, align 4
  switch i32 %689, label %1152 [
    i32 0, label %690
  ]

690:                                              ; preds = %688
  br label %691

691:                                              ; preds = %690, %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %692 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %693 = load double, ptr %692, align 8, !tbaa !19
  %694 = load double, ptr %15, align 8, !tbaa !9
  %695 = fmul double 2.000000e+00, %694
  %696 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %697 = load double, ptr %696, align 8, !tbaa !17
  %698 = fmul double 2.000000e+00, %697
  %699 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %700 = load double, ptr %699, align 8, !tbaa !14
  %701 = load double, ptr %15, align 8, !tbaa !9
  %702 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 11
  %703 = load double, ptr %702, align 8, !tbaa !20
  %704 = fmul double %701, %703
  %705 = call double @llvm.fmuladd.f64(double %698, double %700, double %704)
  %706 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %707 = load double, ptr %706, align 8, !tbaa !21
  %708 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %707, double %705)
  %709 = fneg double %695
  %710 = call double @llvm.fmuladd.f64(double %709, double %708, double %693)
  store double %710, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %711 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %712 = load double, ptr %711, align 8, !tbaa !22
  %713 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %714 = load double, ptr %713, align 8, !tbaa !23
  %715 = fmul double 3.000000e+00, %714
  %716 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %717 = load double, ptr %716, align 8, !tbaa !24
  %718 = fneg double %715
  %719 = call double @llvm.fmuladd.f64(double %718, double %717, double %712)
  %720 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %721 = load double, ptr %720, align 8, !tbaa !17
  %722 = fmul double 3.000000e+00, %721
  %723 = load double, ptr %15, align 8, !tbaa !9
  %724 = fmul double %722, %723
  %725 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %726 = load double, ptr %725, align 8, !tbaa !21
  %727 = call double @llvm.fmuladd.f64(double %724, double %726, double %719)
  store double %727, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %728 = load double, ptr %15, align 8, !tbaa !9
  %729 = fmul double 2.000000e+00, %728
  %730 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %731 = load double, ptr %730, align 8, !tbaa !14
  %732 = fmul double %729, %731
  %733 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %734 = load double, ptr %733, align 8, !tbaa !24
  %735 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %736 = load double, ptr %735, align 8, !tbaa !26
  %737 = fmul double 3.000000e+00, %736
  %738 = call double @llvm.fmuladd.f64(double %732, double %734, double %737)
  store double %738, ptr %51, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %739 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 27
  %740 = load double, ptr %739, align 8, !tbaa !25
  %741 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %742 = load double, ptr %741, align 8, !tbaa !22
  %743 = fmul double 8.000000e+00, %742
  %744 = load double, ptr %15, align 8, !tbaa !9
  %745 = fmul double %743, %744
  %746 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %747 = load double, ptr %746, align 8, !tbaa !14
  %748 = fneg double %745
  %749 = call double @llvm.fmuladd.f64(double %748, double %747, double %740)
  %750 = load double, ptr %15, align 8, !tbaa !9
  %751 = fmul double 1.200000e+01, %750
  %752 = load double, ptr %15, align 8, !tbaa !9
  %753 = load double, ptr %51, align 8, !tbaa !9
  %754 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %755 = load double, ptr %754, align 8, !tbaa !19
  %756 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %757 = load double, ptr %756, align 8, !tbaa !21
  %758 = fmul double %755, %757
  %759 = call double @llvm.fmuladd.f64(double %752, double %753, double %758)
  %760 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %761 = load double, ptr %760, align 8, !tbaa !17
  %762 = fmul double 2.000000e+00, %761
  %763 = load double, ptr %15, align 8, !tbaa !9
  %764 = fmul double %762, %763
  %765 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %766 = load double, ptr %765, align 8, !tbaa !24
  %767 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %768 = load double, ptr %767, align 8, !tbaa !14
  %769 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %770 = load double, ptr %769, align 8, !tbaa !21
  %771 = fneg double %768
  %772 = call double @llvm.fmuladd.f64(double %771, double %770, double %766)
  %773 = call double @llvm.fmuladd.f64(double %764, double %772, double %759)
  %774 = call double @llvm.fmuladd.f64(double %751, double %773, double %749)
  store double %774, ptr %52, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %775 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %776 = load double, ptr %775, align 8, !tbaa !17
  %777 = load double, ptr %15, align 8, !tbaa !9
  %778 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 2
  %779 = load double, ptr %778, align 8, !tbaa !14
  %780 = call double @llvm.fmuladd.f64(double %777, double %779, double %776)
  store double %780, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %54) #7
  %781 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 0) #7
  store double 1.000000e+00, ptr %781, align 8, !tbaa !9
  %782 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %783 = load double, ptr %782, align 8, !tbaa !11
  %784 = load double, ptr %53, align 8, !tbaa !9
  %785 = fneg double %784
  %786 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %783, double %785)
  %787 = load double, ptr %15, align 8, !tbaa !9
  %788 = fdiv double %786, %787
  %789 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 1) #7
  store double %788, ptr %789, align 8, !tbaa !9
  %790 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %791 = load double, ptr %790, align 8, !tbaa !28
  %792 = load double, ptr %49, align 8, !tbaa !9
  %793 = fneg double %792
  %794 = call double @llvm.fmuladd.f64(double 3.900000e+01, double %791, double %793)
  %795 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %796 = load double, ptr %795, align 8, !tbaa !11
  %797 = fmul double 1.600000e+01, %796
  %798 = load double, ptr %53, align 8, !tbaa !9
  %799 = fneg double %797
  %800 = call double @llvm.fmuladd.f64(double %799, double %798, double %794)
  %801 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %802 = load double, ptr %801, align 8, !tbaa !23
  %803 = fmul double 4.000000e+00, %802
  %804 = fdiv double %800, %803
  %805 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 2) #7
  store double %804, ptr %805, align 8, !tbaa !9
  %806 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %807 = load double, ptr %806, align 8, !tbaa !29
  %808 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %809 = load double, ptr %808, align 8, !tbaa !28
  %810 = fmul double 3.300000e+01, %809
  %811 = load double, ptr %53, align 8, !tbaa !9
  %812 = fmul double %810, %811
  %813 = fneg double %812
  %814 = call double @llvm.fmuladd.f64(double 5.500000e+01, double %807, double %813)
  %815 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %816 = load double, ptr %815, align 8, !tbaa !11
  %817 = fmul double 6.000000e+00, %816
  %818 = load double, ptr %49, align 8, !tbaa !9
  %819 = fneg double %817
  %820 = call double @llvm.fmuladd.f64(double %819, double %818, double %814)
  %821 = load double, ptr %50, align 8, !tbaa !9
  %822 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %821, double %820)
  %823 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %824 = load double, ptr %823, align 8, !tbaa !23
  %825 = fmul double 6.000000e+00, %824
  %826 = load double, ptr %15, align 8, !tbaa !9
  %827 = fmul double %825, %826
  %828 = fdiv double %822, %827
  %829 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 3) #7
  store double %828, ptr %829, align 8, !tbaa !9
  %830 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %831 = load double, ptr %830, align 8, !tbaa !30
  %832 = load double, ptr %52, align 8, !tbaa !9
  %833 = call double @llvm.fmuladd.f64(double 1.010000e+02, double %831, double %832)
  %834 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %835 = load double, ptr %834, align 8, !tbaa !29
  %836 = fmul double 7.600000e+01, %835
  %837 = load double, ptr %53, align 8, !tbaa !9
  %838 = fneg double %836
  %839 = call double @llvm.fmuladd.f64(double %838, double %837, double %833)
  %840 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %841 = load double, ptr %840, align 8, !tbaa !28
  %842 = fmul double 3.000000e+01, %841
  %843 = load double, ptr %49, align 8, !tbaa !9
  %844 = fneg double %842
  %845 = call double @llvm.fmuladd.f64(double %844, double %843, double %839)
  %846 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = fmul double 1.600000e+01, %847
  %849 = load double, ptr %50, align 8, !tbaa !9
  %850 = call double @llvm.fmuladd.f64(double %848, double %849, double %845)
  %851 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %852 = load double, ptr %851, align 8, !tbaa !23
  %853 = fmul double 2.400000e+01, %852
  %854 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %855 = load double, ptr %854, align 8, !tbaa !23
  %856 = fmul double %853, %855
  %857 = fdiv double %850, %856
  %858 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 4) #7
  store double %857, ptr %858, align 8, !tbaa !9
  %859 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %860 = load double, ptr %859, align 8, !tbaa !11
  %861 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %862 = load double, ptr %861, align 8, !tbaa !30
  %863 = load double, ptr %52, align 8, !tbaa !9
  %864 = call double @llvm.fmuladd.f64(double 1.100000e+01, double %862, double %863)
  %865 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %866 = load double, ptr %865, align 8, !tbaa !29
  %867 = fmul double 1.000000e+01, %866
  %868 = load double, ptr %53, align 8, !tbaa !9
  %869 = fneg double %867
  %870 = call double @llvm.fmuladd.f64(double %869, double %868, double %864)
  %871 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %872 = load double, ptr %871, align 8, !tbaa !28
  %873 = fmul double 6.000000e+00, %872
  %874 = load double, ptr %49, align 8, !tbaa !9
  %875 = fneg double %873
  %876 = call double @llvm.fmuladd.f64(double %875, double %874, double %870)
  %877 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 1
  %878 = load double, ptr %877, align 8, !tbaa !11
  %879 = fmul double 4.000000e+00, %878
  %880 = load double, ptr %50, align 8, !tbaa !9
  %881 = call double @llvm.fmuladd.f64(double %879, double %880, double %876)
  %882 = fmul double %860, %881
  %883 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %884 = load double, ptr %883, align 8, !tbaa !23
  %885 = fmul double 1.200000e+01, %884
  %886 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %887 = load double, ptr %886, align 8, !tbaa !23
  %888 = fmul double %885, %887
  %889 = load double, ptr %15, align 8, !tbaa !9
  %890 = fmul double %888, %889
  %891 = fdiv double %882, %890
  %892 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 5) #7
  store double %891, ptr %892, align 8, !tbaa !9
  %893 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 24
  %894 = load double, ptr %893, align 8, !tbaa !31
  %895 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 29
  %896 = load double, ptr %895, align 8, !tbaa !32
  %897 = fneg double %896
  %898 = call double @llvm.fmuladd.f64(double 1.100000e+01, double %894, double %897)
  %899 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 23
  %900 = load double, ptr %899, align 8, !tbaa !35
  %901 = fmul double 1.200000e+01, %900
  %902 = load double, ptr %53, align 8, !tbaa !9
  %903 = fneg double %901
  %904 = call double @llvm.fmuladd.f64(double %903, double %902, double %898)
  %905 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 26
  %906 = load double, ptr %905, align 8, !tbaa !22
  %907 = fmul double 4.800000e+01, %906
  %908 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %909 = load double, ptr %908, align 8, !tbaa !23
  %910 = fmul double %907, %909
  %911 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %912 = load double, ptr %911, align 8, !tbaa !24
  %913 = fneg double %910
  %914 = call double @llvm.fmuladd.f64(double %913, double %912, double %904)
  %915 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 22
  %916 = load double, ptr %915, align 8, !tbaa !30
  %917 = fmul double 9.000000e+00, %916
  %918 = load double, ptr %49, align 8, !tbaa !9
  %919 = fneg double %917
  %920 = call double @llvm.fmuladd.f64(double %919, double %918, double %914)
  %921 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %922 = load double, ptr %921, align 8, !tbaa !23
  %923 = fmul double 7.200000e+01, %922
  %924 = load double, ptr %15, align 8, !tbaa !9
  %925 = fmul double %923, %924
  %926 = load double, ptr %15, align 8, !tbaa !9
  %927 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %928 = load double, ptr %927, align 8, !tbaa !24
  %929 = fmul double %926, %928
  %930 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %931 = load double, ptr %930, align 8, !tbaa !24
  %932 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %933 = load double, ptr %932, align 8, !tbaa !26
  %934 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %935 = load double, ptr %934, align 8, !tbaa !21
  %936 = fmul double %933, %935
  %937 = fneg double %936
  %938 = call double @llvm.fmuladd.f64(double %929, double %931, double %937)
  %939 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 4
  %940 = load double, ptr %939, align 8, !tbaa !17
  %941 = fmul double 2.000000e+00, %940
  %942 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 31
  %943 = load double, ptr %942, align 8, !tbaa !24
  %944 = fmul double %941, %943
  %945 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %946 = load double, ptr %945, align 8, !tbaa !21
  %947 = fneg double %944
  %948 = call double @llvm.fmuladd.f64(double %947, double %946, double %938)
  %949 = call double @llvm.fmuladd.f64(double %925, double %948, double %920)
  %950 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 27
  %951 = load double, ptr %950, align 8, !tbaa !25
  %952 = fmul double 6.000000e+00, %951
  %953 = load double, ptr %15, align 8, !tbaa !9
  %954 = fmul double %952, %953
  %955 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 14
  %956 = load double, ptr %955, align 8, !tbaa !21
  %957 = fneg double %954
  %958 = call double @llvm.fmuladd.f64(double %957, double %956, double %949)
  %959 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 25
  %960 = load double, ptr %959, align 8, !tbaa !19
  %961 = fmul double 3.600000e+01, %960
  %962 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %963 = load double, ptr %962, align 8, !tbaa !23
  %964 = fmul double %961, %963
  %965 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 15
  %966 = load double, ptr %965, align 8, !tbaa !26
  %967 = fneg double %964
  %968 = call double @llvm.fmuladd.f64(double %967, double %966, double %958)
  %969 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 21
  %970 = load double, ptr %969, align 8, !tbaa !29
  %971 = fmul double 8.000000e+00, %970
  %972 = load double, ptr %50, align 8, !tbaa !9
  %973 = call double @llvm.fmuladd.f64(double %971, double %972, double %968)
  %974 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 20
  %975 = load double, ptr %974, align 8, !tbaa !28
  %976 = fmul double 3.000000e+00, %975
  %977 = load double, ptr %52, align 8, !tbaa !9
  %978 = call double @llvm.fmuladd.f64(double %976, double %977, double %973)
  %979 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %980 = load double, ptr %979, align 8, !tbaa !23
  %981 = fmul double 1.440000e+02, %980
  %982 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %983 = load double, ptr %982, align 8, !tbaa !23
  %984 = fmul double %981, %983
  %985 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep2", ptr %76, i32 0, i32 30
  %986 = load double, ptr %985, align 8, !tbaa !23
  %987 = fmul double %984, %986
  %988 = fdiv double %978, %987
  %989 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %54, i64 noundef 6) #7
  store double %988, ptr %989, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %55) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm7EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind writable sret(%"struct.std::array.6") align 8 %55, ptr noundef nonnull align 8 dereferenceable(56) %54)
  call void @llvm.lifetime.start.p0(i64 40, ptr %56) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind writable sret(%"struct.std::array.7") align 8 %56, ptr noundef nonnull align 8 dereferenceable(48) %55)
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %990 = load double, ptr %16, align 8, !tbaa !9
  store double %990, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 104, ptr %58) #7
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(104) %58)
  call void @llvm.lifetime.start.p0(i64 40, ptr %59) #7
  %991 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %56, i64 noundef 1) #7
  %992 = load double, ptr %991, align 8, !tbaa !9
  %993 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %56, i64 noundef 2) #7
  %994 = load double, ptr %993, align 8, !tbaa !9
  %995 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %56, i64 noundef 3) #7
  %996 = load double, ptr %995, align 8, !tbaa !9
  %997 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %56, i64 noundef 4) #7
  %998 = load double, ptr %997, align 8, !tbaa !9
  call void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind writable sret(%"class.ruckig::roots::PositiveSet") align 8 %59, double noundef %992, double noundef %994, double noundef %996, double noundef %998)
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  store ptr %59, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %999 = load ptr, ptr %60, align 8, !tbaa !5
  %1000 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %999)
  store ptr %1000, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %1001 = load ptr, ptr %60, align 8, !tbaa !5
  %1002 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %1001)
  store ptr %1002, ptr %62, align 8, !tbaa !5
  br label %1003

1003:                                             ; preds = %1045, %691
  %1004 = load ptr, ptr %61, align 8, !tbaa !5
  %1005 = load ptr, ptr %62, align 8, !tbaa !5
  %1006 = icmp ne ptr %1004, %1005
  br i1 %1006, label %1008, label %1007

1007:                                             ; preds = %1003
  store i32 6, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %1048

1008:                                             ; preds = %1003
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %1009 = load ptr, ptr %61, align 8, !tbaa !5
  %1010 = load double, ptr %1009, align 8, !tbaa !9
  store double %1010, ptr %63, align 8, !tbaa !9
  %1011 = load double, ptr %63, align 8, !tbaa !9
  %1012 = load double, ptr %19, align 8, !tbaa !9
  %1013 = fcmp oge double %1011, %1012
  br i1 %1013, label %1014, label %1015

1014:                                             ; preds = %1008
  store i32 7, ptr %27, align 4
  br label %1042

1015:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %1016 = load double, ptr %63, align 8, !tbaa !9
  %1017 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %56, double noundef %1016)
  store double %1017, ptr %64, align 8, !tbaa !9
  %1018 = load double, ptr %64, align 8, !tbaa !9
  %1019 = call noundef double @_ZSt3absd(double noundef %1018)
  %1020 = fcmp ogt double %1019, 0x3D06849B86A12B9B
  br i1 %1020, label %1021, label %1028

1021:                                             ; preds = %1015
  %1022 = load double, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #7
  call void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind writable sret(%"struct.std::array.2") align 8 %65, ptr noundef nonnull align 8 dereferenceable(40) %56)
  %1023 = load double, ptr %63, align 8, !tbaa !9
  %1024 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %65, double noundef %1023)
  %1025 = fdiv double %1022, %1024
  %1026 = load double, ptr %63, align 8, !tbaa !9
  %1027 = fsub double %1026, %1025
  store double %1027, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #7
  br label %1028

1028:                                             ; preds = %1021, %1015
  %1029 = load double, ptr %57, align 8, !tbaa !9
  %1030 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %55, double noundef %1029)
  %1031 = load double, ptr %63, align 8, !tbaa !9
  %1032 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %55, double noundef %1031)
  %1033 = fmul double %1030, %1032
  %1034 = fcmp olt double %1033, 0.000000e+00
  br i1 %1034, label %1035, label %1040

1035:                                             ; preds = %1028
  call void @_ZNSt4pairIddEC2IRdS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %63)
  %1036 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %1037 = load double, ptr %1036, align 8
  %1038 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %1039 = load double, ptr %1038, align 8
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104) %58, double %1037, double %1039)
  br label %1040

1040:                                             ; preds = %1035, %1028
  %1041 = load double, ptr %63, align 8, !tbaa !9
  store double %1041, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  store i32 0, ptr %27, align 4
  br label %1042

1042:                                             ; preds = %1040, %1014
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  %1043 = load i32, ptr %27, align 4
  switch i32 %1043, label %1154 [
    i32 0, label %1044
    i32 7, label %1045
  ]

1044:                                             ; preds = %1042
  br label %1045

1045:                                             ; preds = %1044, %1042
  %1046 = load ptr, ptr %61, align 8, !tbaa !5
  %1047 = getelementptr inbounds double, ptr %1046, i32 1
  store ptr %1047, ptr %61, align 8, !tbaa !5
  br label %1003

1048:                                             ; preds = %1007
  %1049 = load double, ptr %57, align 8, !tbaa !9
  %1050 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %55, double noundef %1049)
  %1051 = load double, ptr %19, align 8, !tbaa !9
  %1052 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %55, double noundef %1051)
  %1053 = fmul double %1050, %1052
  %1054 = fcmp olt double %1053, 0.000000e+00
  br i1 %1054, label %1055, label %1060

1055:                                             ; preds = %1048
  call void @_ZNSt4pairIddEC2IRdRKdTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %19)
  %1056 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %1057 = load double, ptr %1056, align 8
  %1058 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %1059 = load double, ptr %1058, align 8
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104) %58, double %1057, double %1059)
  br label %1060

1060:                                             ; preds = %1055, %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %1061 = load double, ptr %16, align 8, !tbaa !9
  store double %1061, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %69) #7
  %1062 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 0
  store ptr %76, ptr %1062, align 8, !tbaa !36
  %1063 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 1
  store ptr %15, ptr %1063, align 8, !tbaa !5
  %1064 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 2
  %1065 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1065, ptr %1064, align 8, !tbaa !5
  %1066 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 3
  store ptr %11, ptr %1066, align 8, !tbaa !5
  %1067 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 4
  store ptr %12, ptr %1067, align 8, !tbaa !5
  %1068 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 5
  store ptr %13, ptr %1068, align 8, !tbaa !5
  %1069 = getelementptr inbounds %class.anon.10, ptr %69, i32 0, i32 6
  store ptr %14, ptr %1069, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  store ptr %58, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %1070 = load ptr, ptr %70, align 8, !tbaa !5
  %1071 = call noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(104) %1070)
  store ptr %1071, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %1072 = load ptr, ptr %70, align 8, !tbaa !5
  %1073 = call noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE3endEv(ptr noundef nonnull align 8 dereferenceable(104) %1072)
  store ptr %1073, ptr %72, align 8, !tbaa !5
  br label %1074

1074:                                             ; preds = %1129, %1060
  %1075 = load ptr, ptr %71, align 8, !tbaa !5
  %1076 = load ptr, ptr %72, align 8, !tbaa !5
  %1077 = icmp ne ptr %1075, %1076
  br i1 %1077, label %1079, label %1078

1078:                                             ; preds = %1074
  store i32 8, ptr %27, align 4
  br label %1132

1079:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #7
  %1080 = load ptr, ptr %71, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %73, ptr align 8 %1080, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %1081 = getelementptr inbounds %"struct.std::pair", ptr %73, i32 0, i32 0
  %1082 = load double, ptr %1081, align 8, !tbaa !38
  %1083 = getelementptr inbounds %"struct.std::pair", ptr %73, i32 0, i32 1
  %1084 = load double, ptr %1083, align 8, !tbaa !40
  %1085 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %55, double noundef %1082, double noundef %1084)
  store double %1085, ptr %74, align 8, !tbaa !9
  %1086 = load double, ptr %74, align 8, !tbaa !9
  %1087 = load double, ptr %19, align 8, !tbaa !9
  %1088 = fcmp oge double %1086, %1087
  br i1 %1088, label %1089, label %1090

1089:                                             ; preds = %1079
  store i32 9, ptr %27, align 4
  br label %1123

1090:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %1091 = load double, ptr %74, align 8, !tbaa !9
  %1092 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1091)
  store double %1092, ptr %75, align 8, !tbaa !9
  %1093 = load double, ptr %75, align 8, !tbaa !9
  %1094 = call noundef double @_ZSt3absd(double noundef %1093)
  %1095 = load double, ptr %74, align 8, !tbaa !9
  %1096 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %56, double noundef %1095)
  %1097 = call noundef double @_ZSt3absd(double noundef %1096)
  %1098 = fmul double 6.400000e+01, %1097
  %1099 = fmul double %1098, 0x3D06849B86A12B9B
  %1100 = fcmp olt double %1094, %1099
  br i1 %1100, label %1101, label %1106

1101:                                             ; preds = %1090
  %1102 = load double, ptr %74, align 8, !tbaa !9
  %1103 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %69, double noundef %1102)
  br i1 %1103, label %1104, label %1105

1104:                                             ; preds = %1101
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %1122

1105:                                             ; preds = %1101
  br label %1120

1106:                                             ; preds = %1090
  %1107 = load double, ptr %68, align 8, !tbaa !9
  %1108 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1107)
  %1109 = load double, ptr %75, align 8, !tbaa !9
  %1110 = fmul double %1108, %1109
  %1111 = fcmp olt double %1110, 0.000000e+00
  br i1 %1111, label %1112, label %1119

1112:                                             ; preds = %1106
  %1113 = load double, ptr %68, align 8, !tbaa !9
  %1114 = load double, ptr %74, align 8, !tbaa !9
  %1115 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1113, double noundef %1114)
  %1116 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %69, double noundef %1115)
  br i1 %1116, label %1117, label %1118

1117:                                             ; preds = %1112
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %1122

1118:                                             ; preds = %1112
  br label %1119

1119:                                             ; preds = %1118, %1106
  br label %1120

1120:                                             ; preds = %1119, %1105
  %1121 = load double, ptr %74, align 8, !tbaa !9
  store double %1121, ptr %68, align 8, !tbaa !9
  store i32 0, ptr %27, align 4
  br label %1122

1122:                                             ; preds = %1120, %1117, %1104
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %1123

1123:                                             ; preds = %1122, %1089
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  %1124 = load i32, ptr %27, align 4
  switch i32 %1124, label %1126 [
    i32 0, label %1125
  ]

1125:                                             ; preds = %1123
  store i32 0, ptr %27, align 4
  br label %1126

1126:                                             ; preds = %1125, %1123
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  %1127 = load i32, ptr %27, align 4
  switch i32 %1127, label %1132 [
    i32 0, label %1128
    i32 9, label %1129
  ]

1128:                                             ; preds = %1126
  br label %1129

1129:                                             ; preds = %1128, %1126
  %1130 = load ptr, ptr %71, align 8, !tbaa !5
  %1131 = getelementptr inbounds %"struct.std::pair", ptr %1130, i32 1
  store ptr %1131, ptr %71, align 8, !tbaa !5
  br label %1074

1132:                                             ; preds = %1126, %1078
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  %1133 = load i32, ptr %27, align 4
  switch i32 %1133, label %1149 [
    i32 8, label %1134
  ]

1134:                                             ; preds = %1132
  %1135 = load double, ptr %68, align 8, !tbaa !9
  %1136 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1135)
  %1137 = load double, ptr %19, align 8, !tbaa !9
  %1138 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1137)
  %1139 = fmul double %1136, %1138
  %1140 = fcmp olt double %1139, 0.000000e+00
  br i1 %1140, label %1141, label %1148

1141:                                             ; preds = %1134
  %1142 = load double, ptr %68, align 8, !tbaa !9
  %1143 = load double, ptr %19, align 8, !tbaa !9
  %1144 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56) %54, double noundef %1142, double noundef %1143)
  %1145 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %69, double noundef %1144)
  br i1 %1145, label %1146, label %1147

1146:                                             ; preds = %1141
  store i1 true, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %1149

1147:                                             ; preds = %1141
  br label %1148

1148:                                             ; preds = %1147, %1134
  store i32 0, ptr %27, align 4
  br label %1149

1149:                                             ; preds = %1148, %1146, %1132
  call void @llvm.lifetime.end.p0(i64 56, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 104, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  %1150 = load i32, ptr %27, align 4
  switch i32 %1150, label %1152 [
    i32 0, label %1151
  ]

1151:                                             ; preds = %1149
  store i1 false, ptr %8, align 1
  store i32 1, ptr %27, align 4
  br label %1152

1152:                                             ; preds = %1151, %1149, %688, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  %1153 = load i1, ptr %8, align 1
  ret i1 %1153

1154:                                             ; preds = %1042
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots11solve_cubicEdddd(ptr dead_on_unwind noalias writable sret(%"class.ruckig::roots::PositiveSet.3") align 8, double noundef, double noundef, double noundef, double noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm3EE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm3EE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ruckig7Profile17check_with_timingILNS0_12ControlSignsE0ELNS0_13ReachedLimitsE1EEEbdddddd(ptr noundef nonnull align 8 dereferenceable(572), double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.7") align 8, ptr noundef nonnull align 8 dereferenceable(48)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.2") align 8, ptr noundef nonnull align 8 dereferenceable(40)) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind noalias writable sret(%"class.ruckig::roots::PositiveSet") align 8, double noundef, double noundef, double noundef, double noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40), double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32), double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48), double noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56), double noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48), double noundef, double noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots21poly_monic_derivativeILm7EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.6") align 8, ptr noundef nonnull align 8 dereferenceable(56)) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots3SetISt4pairIddELm6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104), double, double) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIddEC2IRdS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIddEC2IRdRKdTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(104)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE3endEv(ptr noundef nonnull align 8 dereferenceable(104)) #3 align 2

; 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) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56), double noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56), double noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56), double noundef, double noundef) #5

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress 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 #3 = { mustprogress 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 #4 = { mustprogress 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 #5 = { inlinehint mustprogress 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 8}
!12 = !{!"_ZTSN6ruckig23PositionThirdOrderStep2E", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !13, i64 264}
!13 = !{!"bool", !7, i64 0}
!14 = !{!12, !10, i64 16}
!15 = !{!12, !10, i64 0}
!16 = !{!12, !10, i64 24}
!17 = !{!12, !10, i64 32}
!18 = !{!12, !10, i64 80}
!19 = !{!12, !10, i64 200}
!20 = !{!12, !10, i64 88}
!21 = !{!12, !10, i64 112}
!22 = !{!12, !10, i64 208}
!23 = !{!12, !10, i64 240}
!24 = !{!12, !10, i64 248}
!25 = !{!12, !10, i64 216}
!26 = !{!12, !10, i64 120}
!27 = !{!12, !10, i64 128}
!28 = !{!12, !10, i64 160}
!29 = !{!12, !10, i64 168}
!30 = !{!12, !10, i64 176}
!31 = !{!12, !10, i64 192}
!32 = !{!12, !10, i64 232}
!33 = !{!34, !6, i64 0}
!34 = !{!"_ZTSZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!35 = !{!12, !10, i64 184}
!36 = !{!37, !6, i64 0}
!37 = !{!"_ZTSZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!38 = !{!39, !10, i64 0}
!39 = !{!"_ZTSSt4pairIddE", !10, i64 0, !10, i64 8}
!40 = !{!39, !10, i64 8}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::array.2" = type { [4 x double] }
%"class.ruckig::roots::PositiveSet.3" = type { %"class.ruckig::roots::Set.4" }
%"class.ruckig::roots::Set.4" = type { %"struct.std::array.5", i64 }
%"struct.std::array.5" = type { [3 x double] }
%"struct.std::array.6" = type { [6 x double] }
%"struct.std::array.7" = type { [5 x double] }
%"class.ruckig::roots::PositiveSet" = type { %"class.ruckig::roots::Set" }
%"class.ruckig::roots::Set" = type { %"struct.std::array.2", i64 }
%class.anon = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.std::array" = type { [7 x double] }
%"class.ruckig::roots::Set.8" = type { %"struct.std::array.9", i64 }
%"struct.std::array.9" = type { [6 x %"struct.std::pair"] }
%"struct.std::pair" = type { double, double }
%class.anon.10 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef) local_unnamed_addr #3 align 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(265) %0, ptr noundef nonnull align 8 dereferenceable(572) %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6) local_unnamed_addr #4 align 2 {
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"struct.std::array.2", align 8
  %19 = alloca %"class.ruckig::roots::PositiveSet.3", align 8
  %20 = alloca %"struct.std::array.6", align 8
  %21 = alloca %"struct.std::array.7", align 8
  %22 = alloca %"struct.std::array.2", align 8
  %23 = alloca %"class.ruckig::roots::PositiveSet", align 8
  %24 = alloca %class.anon, align 8
  %25 = alloca %"struct.std::array", align 8
  %26 = alloca %"struct.std::array.6", align 8
  %27 = alloca %"struct.std::array.7", align 8
  %28 = alloca double, align 8
  %29 = alloca %"class.ruckig::roots::Set.8", align 8
  %30 = alloca %"class.ruckig::roots::PositiveSet", align 8
  %31 = alloca double, align 8
  %32 = alloca %"struct.std::array.2", align 8
  %33 = alloca %"struct.std::pair", align 8
  %34 = alloca %"struct.std::pair", align 8
  %35 = alloca %class.anon.10, align 8
  store double %2, ptr %8, align 8, !tbaa !5
  store double %3, ptr %9, align 8, !tbaa !5
  store double %4, ptr %10, align 8, !tbaa !5
  store double %5, ptr %11, align 8, !tbaa !5
  store double %6, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %36 = getelementptr inbounds i8, ptr %0, i64 8
  %37 = load double, ptr %36, align 8, !tbaa !9
  %38 = fneg double %37
  %39 = fdiv double %38, %6
  store double %39, ptr %14, align 8, !tbaa !5
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
  %41 = load double, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %42 = getelementptr inbounds i8, ptr %0, i64 16
  %43 = load double, ptr %42, align 8, !tbaa !12
  %44 = load double, ptr %36, align 8, !tbaa !9
  %45 = fdiv double %44, %6
  %46 = fsub double %43, %45
  %47 = fmul double %46, 5.000000e-01
  store double %47, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %48 = fsub double %4, %44
  %49 = fdiv double %48, %6
  store double %49, ptr %17, align 8, !tbaa !5
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17)
  %51 = load double, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  store double %51, ptr %15, align 8, !tbaa !5
  %52 = load double, ptr %0, align 8, !tbaa !13
  %53 = call noundef double @_ZSt3absd(double noundef %52)
  %54 = fcmp olt double %53, 0x3CB0000000000000
  br i1 %54, label %55, label %131

55:                                               ; preds = %7
  %56 = load double, ptr %36, align 8, !tbaa !9
  %57 = call noundef double @_ZSt3absd(double noundef %56)
  %58 = fcmp olt double %57, 0x3CB0000000000000
  br i1 %58, label %59, label %131

59:                                               ; preds = %55
  %60 = getelementptr inbounds i8, ptr %0, i64 24
  %61 = load double, ptr %60, align 8, !tbaa !14
  %62 = call noundef double @_ZSt3absd(double noundef %61)
  %63 = fcmp olt double %62, 0x3CB0000000000000
  br i1 %63, label %64, label %131

64:                                               ; preds = %59
  %65 = getelementptr inbounds i8, ptr %0, i64 32
  %66 = load double, ptr %65, align 8, !tbaa !15
  %67 = call noundef double @_ZSt3absd(double noundef %66)
  %68 = fcmp olt double %67, 0x3CB0000000000000
  br i1 %68, label %69, label %131

69:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 0) #7
  store double 1.000000e+00, ptr %70, align 8, !tbaa !5
  %71 = load double, ptr %42, align 8, !tbaa !12
  %72 = fmul double %71, -5.000000e-01
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 1) #7
  store double %72, ptr %73, align 8, !tbaa !5
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 2) #7
  store double 0.000000e+00, ptr %74, align 8, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %0, i64 80
  %76 = load double, ptr %75, align 8, !tbaa !16
  %77 = load double, ptr %12, align 8, !tbaa !5
  %78 = fmul double %77, 2.000000e+00
  %79 = fdiv double %76, %78
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 3) #7
  store double %79, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 0) #7
  %82 = load double, ptr %81, align 8, !tbaa !5
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 1) #7
  %84 = load double, ptr %83, align 8, !tbaa !5
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 2) #7
  %86 = load double, ptr %85, align 8, !tbaa !5
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm4EEixEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 3) #7
  %88 = load double, ptr %87, align 8, !tbaa !5
  call void @_ZN6ruckig5roots11solve_cubicEdddd(ptr dead_on_unwind nonnull writable sret(%"class.ruckig::roots::PositiveSet.3") align 8 %19, double noundef %82, double noundef %84, double noundef %86, double noundef %88)
  %89 = call noundef ptr @_ZN6ruckig5roots3SetIdLm3EE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %19)
  %90 = call noundef ptr @_ZN6ruckig5roots3SetIdLm3EE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %19)
  %.not174213 = icmp eq ptr %89, %90
  br i1 %.not174213, label %.thread179, label %.lr.ph216

.thread179:                                       ; preds = %128, %69
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %386

.lr.ph216:                                        ; preds = %69, %128
  %.0145214 = phi ptr [ %129, %128 ], [ %89, %69 ]
  %91 = load double, ptr %.0145214, align 8, !tbaa !5
  %92 = load double, ptr %42, align 8, !tbaa !12
  %93 = fmul double %92, 2.500000e-01
  %94 = fcmp ogt double %91, %93
  br i1 %94, label %128, label %95

95:                                               ; preds = %.lr.ph216
  %96 = fcmp ogt double %91, 0x3CB0000000000000
  br i1 %96, label %97, label %111

97:                                               ; preds = %95
  %98 = load double, ptr %75, align 8, !tbaa !16
  %99 = fneg double %98
  %100 = load double, ptr %12, align 8, !tbaa !5
  %101 = fmul double %91, %100
  %102 = fmul double %91, %101
  %103 = call double @llvm.fmuladd.f64(double %91, double -2.000000e+00, double %92)
  %104 = call double @llvm.fmuladd.f64(double %102, double %103, double %99)
  %105 = fmul double %100, 2.000000e+00
  %106 = fmul double %91, %105
  %107 = call double @llvm.fmuladd.f64(double %91, double -3.000000e+00, double %92)
  %108 = fmul double %107, %106
  %109 = fdiv double %104, %108
  %110 = fsub double %91, %109
  br label %111

111:                                              ; preds = %97, %95
  %.0157 = phi double [ %110, %97 ], [ %91, %95 ]
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 0) #7
  store double %.0157, ptr %112, align 8, !tbaa !5
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 1) #7
  store double 0.000000e+00, ptr %113, align 8, !tbaa !5
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 2) #7
  store double %.0157, ptr %114, align 8, !tbaa !5
  %115 = load double, ptr %42, align 8, !tbaa !12
  %116 = call double @llvm.fmuladd.f64(double %.0157, double -4.000000e+00, double %115)
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 3) #7
  store double %116, ptr %117, align 8, !tbaa !5
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 4) #7
  store double %.0157, ptr %118, align 8, !tbaa !5
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 5) #7
  store double 0.000000e+00, ptr %119, align 8, !tbaa !5
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %1, i64 noundef 6) #7
  store double %.0157, ptr %120, align 8, !tbaa !5
  %121 = load double, ptr %42, align 8, !tbaa !12
  %122 = load double, ptr %12, align 8, !tbaa !5
  %123 = load double, ptr %8, align 8, !tbaa !5
  %124 = load double, ptr %9, align 8, !tbaa !5
  %125 = load double, ptr %10, align 8, !tbaa !5
  %126 = load double, ptr %11, align 8, !tbaa !5
  %127 = call noundef zeroext i1 @_ZN6ruckig7Profile17check_with_timingILNS0_12ControlSignsE0ELNS0_13ReachedLimitsE1EEEbdddddd(ptr noundef nonnull align 8 dereferenceable(572) %1, double noundef %121, double noundef %122, double noundef %123, double noundef %124, double noundef %125, double noundef %126)
  br i1 %127, label %130, label %128

128:                                              ; preds = %.lr.ph216, %111
  %129 = getelementptr inbounds i8, ptr %.0145214, i64 8
  %.not174 = icmp eq ptr %129, %90
  br i1 %.not174, label %.thread179, label %.lr.ph216

130:                                              ; preds = %111
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %646

131:                                              ; preds = %64, %59, %55, %7
  %132 = getelementptr inbounds i8, ptr %0, i64 200
  %133 = load double, ptr %132, align 8, !tbaa !17
  %134 = load double, ptr %12, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %0, i64 32
  %136 = load double, ptr %135, align 8, !tbaa !15
  %137 = fmul double %136, -2.000000e+00
  %138 = load double, ptr %42, align 8, !tbaa !12
  %139 = getelementptr inbounds i8, ptr %0, i64 88
  %140 = load double, ptr %139, align 8, !tbaa !18
  %141 = fmul double %134, %140
  %142 = call double @llvm.fmuladd.f64(double %137, double %138, double %141)
  %143 = getelementptr inbounds i8, ptr %0, i64 112
  %144 = load double, ptr %143, align 8, !tbaa !19
  %145 = call double @llvm.fmuladd.f64(double %144, double 3.000000e+00, double %142)
  %146 = getelementptr inbounds i8, ptr %0, i64 208
  %147 = load double, ptr %146, align 8, !tbaa !20
  %148 = getelementptr inbounds i8, ptr %0, i64 240
  %149 = load double, ptr %148, align 8, !tbaa !21
  %150 = getelementptr inbounds i8, ptr %0, i64 248
  %151 = load double, ptr %150, align 8, !tbaa !22
  %152 = fmul double %149, -3.000000e+00
  %153 = call double @llvm.fmuladd.f64(double %152, double %151, double %147)
  %154 = fmul double %136, -3.000000e+00
  %155 = fmul double %134, %154
  %156 = call double @llvm.fmuladd.f64(double %155, double %144, double %153)
  %157 = getelementptr inbounds i8, ptr %0, i64 216
  %158 = load <2 x double>, ptr %157, align 8
  %159 = fmul double %147, 8.000000e+00
  %160 = fmul double %134, 3.000000e+00
  %161 = getelementptr inbounds i8, ptr %0, i64 120
  %162 = load double, ptr %161, align 8, !tbaa !23
  %163 = fneg double %133
  %164 = fmul double %144, %163
  %165 = call double @llvm.fmuladd.f64(double %160, double %162, double %164)
  %166 = fmul double %136, 2.000000e+00
  %167 = fmul double %134, %166
  %168 = fneg double %138
  %169 = call double @llvm.fmuladd.f64(double %168, double %144, double %151)
  %170 = call double @llvm.fmuladd.f64(double %167, double %169, double %165)
  %171 = fmul double %149, -2.000000e+00
  %172 = load double, ptr %36, align 8, !tbaa !9
  %173 = fneg double %134
  %174 = call double @llvm.fmuladd.f64(double %173, double %138, double %136)
  %175 = fmul double %174, %172
  %176 = getelementptr inbounds i8, ptr %0, i64 128
  %177 = load double, ptr %176, align 8, !tbaa !24
  %178 = fneg double %177
  %179 = call double @llvm.fmuladd.f64(double %134, double %138, double %178)
  %180 = fmul double %134, %179
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #7
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 0) #7
  store double 1.000000e+00, ptr %181, align 8, !tbaa !5
  %182 = getelementptr inbounds i8, ptr %0, i64 160
  %183 = load double, ptr %182, align 8, !tbaa !25
  %184 = load double, ptr %132, align 8, !tbaa !17
  %185 = call double @llvm.fmuladd.f64(double %183, double 1.500000e+01, double %184)
  %186 = load double, ptr %135, align 8, !tbaa !15
  %187 = fmul double %186, 4.000000e+00
  %188 = load double, ptr %12, align 8, !tbaa !5
  %189 = fmul double %187, %188
  %190 = load double, ptr %42, align 8, !tbaa !12
  %191 = call double @llvm.fmuladd.f64(double %189, double %190, double %185)
  %192 = call double @llvm.fmuladd.f64(double %175, double -1.600000e+01, double %191)
  %193 = load double, ptr %139, align 8, !tbaa !18
  %194 = load double, ptr %143, align 8, !tbaa !19
  %195 = fmul double %194, 3.000000e+00
  %196 = call double @llvm.fmuladd.f64(double %188, double %193, double %195)
  %197 = fmul double %188, -2.000000e+00
  %198 = call double @llvm.fmuladd.f64(double %197, double %196, double %192)
  %199 = fmul double %180, 4.000000e+00
  %200 = fdiv double %198, %199
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 1) #7
  store double %200, ptr %201, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %0, i64 168
  %203 = load double, ptr %202, align 8, !tbaa !26
  %204 = load double, ptr %146, align 8, !tbaa !20
  %205 = fmul double %204, -2.000000e+00
  %206 = call double @llvm.fmuladd.f64(double %203, double 2.900000e+01, double %205)
  %207 = load double, ptr %36, align 8, !tbaa !9
  %208 = fmul double %207, -3.300000e+01
  %209 = call double @llvm.fmuladd.f64(double %208, double %175, double %206)
  %210 = load double, ptr %148, align 8, !tbaa !21
  %211 = fmul double %210, 6.000000e+00
  %212 = load double, ptr %150, align 8, !tbaa !22
  %213 = call double @llvm.fmuladd.f64(double %211, double %212, double %209)
  %214 = load double, ptr %135, align 8, !tbaa !15
  %215 = fmul double %214, 6.000000e+00
  %216 = load double, ptr %12, align 8, !tbaa !5
  %217 = fmul double %215, %216
  %218 = load double, ptr %143, align 8, !tbaa !19
  %219 = call double @llvm.fmuladd.f64(double %217, double %218, double %213)
  %220 = fmul double %207, 6.000000e+00
  %221 = fmul double %216, 6.000000e+00
  %222 = fmul double %180, %221
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 2) #7
  %224 = getelementptr inbounds i8, ptr %0, i64 176
  %225 = insertelement <2 x double> poison, double %138, i64 0
  %226 = insertelement <2 x double> %225, double %134, i64 1
  %227 = insertelement <2 x double> <double poison, double -2.000000e+00>, double %171, i64 0
  %228 = fmul <2 x double> %226, %227
  %229 = insertelement <2 x double> poison, double %151, i64 0
  %230 = insertelement <2 x double> %229, double %145, i64 1
  %231 = insertelement <2 x double> poison, double %170, i64 0
  %232 = insertelement <2 x double> %231, double %133, i64 1
  %233 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %228, <2 x double> %230, <2 x double> %232)
  %234 = extractelement <2 x double> %233, i64 1
  %235 = call double @llvm.fmuladd.f64(double %220, double %234, double %219)
  %236 = fdiv double %235, %222
  store double %236, ptr %223, align 8, !tbaa !5
  %237 = load double, ptr %224, align 8, !tbaa !27
  %238 = load double, ptr %182, align 8, !tbaa !25
  %239 = fmul double %238, -7.600000e+01
  %240 = fmul double %175, %239
  %241 = call double @llvm.fmuladd.f64(double %237, double 6.100000e+01, double %240)
  %242 = load double, ptr %36, align 8, !tbaa !9
  %243 = insertelement <2 x double> poison, double %134, i64 0
  %244 = insertelement <2 x double> %243, double %242, i64 1
  %245 = insertelement <2 x double> <double poison, double -1.600000e+01>, double %159, i64 0
  %246 = fmul <2 x double> %244, %245
  %247 = insertelement <2 x double> %226, double %156, i64 1
  %248 = insertelement <2 x double> %158, double %241, i64 1
  %249 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %246, <2 x double> %247, <2 x double> %248)
  %250 = insertelement <2 x double> %243, double %238, i64 1
  %251 = fmul <2 x double> %250, <double 1.200000e+01, double 3.000000e+01>
  %252 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %251, <2 x double> %233, <2 x double> %249)
  %253 = extractelement <2 x double> %252, i64 0
  %shift = shufflevector <2 x double> %252, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %254 = fadd <2 x double> %252, %shift
  %255 = extractelement <2 x double> %254, i64 0
  %256 = load double, ptr %148, align 8, !tbaa !21
  %257 = fmul double %256, 2.400000e+01
  %258 = fmul double %180, %257
  %259 = fdiv double %255, %258
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 3) #7
  store double %259, ptr %260, align 8, !tbaa !5
  %261 = load double, ptr %36, align 8, !tbaa !9
  %262 = load double, ptr %224, align 8, !tbaa !27
  %263 = load double, ptr %182, align 8, !tbaa !25
  %264 = fmul double %263, -1.000000e+01
  %265 = fmul double %175, %264
  %266 = call double @llvm.fmuladd.f64(double %262, double 7.000000e+00, double %265)
  %267 = fmul double %261, -4.000000e+00
  %268 = call double @llvm.fmuladd.f64(double %267, double %156, double %266)
  %269 = fmul double %263, 6.000000e+00
  %270 = call double @llvm.fmuladd.f64(double %269, double %234, double %268)
  %271 = fadd double %253, %270
  %272 = fmul double %261, %271
  %273 = load double, ptr %148, align 8, !tbaa !21
  %274 = fmul double %273, 1.200000e+01
  %275 = load double, ptr %12, align 8, !tbaa !5
  %276 = fmul double %274, %275
  %277 = fmul double %180, %276
  %278 = fdiv double %272, %277
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 4) #7
  store double %278, ptr %279, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %0, i64 192
  %281 = load double, ptr %280, align 8, !tbaa !28
  %282 = getelementptr inbounds i8, ptr %0, i64 232
  %283 = load double, ptr %282, align 8, !tbaa !29
  %284 = call double @llvm.fmuladd.f64(double %281, double 7.000000e+00, double %283)
  %285 = load double, ptr %224, align 8, !tbaa !27
  %286 = fmul double %285, -1.200000e+01
  %287 = call double @llvm.fmuladd.f64(double %286, double %175, double %284)
  %288 = load double, ptr %146, align 8, !tbaa !20
  %289 = fmul double %288, 4.800000e+01
  %290 = load double, ptr %148, align 8, !tbaa !21
  %291 = fmul double %289, %290
  %292 = load double, ptr %150, align 8, !tbaa !22
  %293 = call double @llvm.fmuladd.f64(double %291, double %292, double %287)
  %294 = load double, ptr %202, align 8, !tbaa !26
  %295 = fmul double %294, -8.000000e+00
  %296 = call double @llvm.fmuladd.f64(double %295, double %156, double %293)
  %297 = load double, ptr %12, align 8, !tbaa !5
  %298 = fmul double %292, %297
  %299 = load double, ptr %161, align 8, !tbaa !23
  %300 = load double, ptr %143, align 8, !tbaa !19
  %301 = fmul double %299, %300
  %302 = call double @llvm.fmuladd.f64(double %298, double %292, double %301)
  %303 = load double, ptr %135, align 8, !tbaa !15
  %304 = fmul double %303, 2.000000e+00
  %305 = fmul double %292, %304
  %306 = call double @llvm.fmuladd.f64(double %305, double %300, double %302)
  %307 = fmul double %290, -7.200000e+01
  %308 = fmul double %307, %297
  %309 = call double @llvm.fmuladd.f64(double %308, double %306, double %296)
  %310 = load double, ptr %157, align 8, !tbaa !30
  %311 = fmul double %310, -6.000000e+00
  %312 = fmul double %297, %311
  %313 = call double @llvm.fmuladd.f64(double %312, double %300, double %309)
  %314 = load double, ptr %132, align 8, !tbaa !17
  %315 = fmul double %314, 3.600000e+01
  %316 = fmul double %290, %315
  %317 = call double @llvm.fmuladd.f64(double %316, double %299, double %313)
  %318 = fmul double %285, 9.000000e+00
  %319 = call double @llvm.fmuladd.f64(double %318, double %234, double %317)
  %320 = load double, ptr %182, align 8, !tbaa !25
  %321 = fmul double %320, 3.000000e+00
  %322 = call double @llvm.fmuladd.f64(double %321, double %253, double %319)
  %323 = fmul double %290, 1.440000e+02
  %324 = fmul double %290, %323
  %325 = fmul double %180, %324
  %326 = fdiv double %322, %325
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48) %20, i64 noundef 5) #7
  store double %326, ptr %327, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind nonnull writable sret(%"struct.std::array.7") align 8 %21, ptr noundef nonnull align 8 dereferenceable(48) %20)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind nonnull writable sret(%"struct.std::array.2") align 8 %22, ptr noundef nonnull align 8 dereferenceable(40) %21)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %23) #7
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef 1) #7
  %329 = load double, ptr %328, align 8, !tbaa !5
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef 2) #7
  %331 = load double, ptr %330, align 8, !tbaa !5
  %332 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef 3) #7
  %333 = load double, ptr %332, align 8, !tbaa !5
  %334 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %21, i64 noundef 4) #7
  %335 = load double, ptr %334, align 8, !tbaa !5
  call void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind nonnull writable sret(%"class.ruckig::roots::PositiveSet") align 8 %23, double noundef %329, double noundef %331, double noundef %333, double noundef %335)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #7
  store ptr %0, ptr %24, align 8, !tbaa !31
  %336 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %12, ptr %336, align 8, !tbaa !34
  %337 = getelementptr inbounds i8, ptr %24, i64 16
  store ptr %1, ptr %337, align 8, !tbaa !34
  %338 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %8, ptr %338, align 8, !tbaa !34
  %339 = getelementptr inbounds i8, ptr %24, i64 32
  store ptr %9, ptr %339, align 8, !tbaa !34
  %340 = getelementptr inbounds i8, ptr %24, i64 40
  store ptr %10, ptr %340, align 8, !tbaa !34
  %341 = getelementptr inbounds i8, ptr %24, i64 48
  store ptr %11, ptr %341, align 8, !tbaa !34
  %342 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %23)
  %343 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %23)
  %.not210 = icmp eq ptr %342, %343
  %.pre229 = load double, ptr %15, align 8, !tbaa !5
  br i1 %.not210, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %131, %371
  %.0158212 = phi double [ %.2160, %371 ], [ %41, %131 ]
  %.0163211 = phi ptr [ %372, %371 ], [ %342, %131 ]
  %344 = load double, ptr %.0163211, align 8, !tbaa !5
  %345 = fcmp ult double %344, %.pre229
  br i1 %345, label %346, label %371

346:                                              ; preds = %.lr.ph
  %347 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %21, double noundef %344)
  %348 = call noundef double @_ZSt3absd(double noundef %347)
  %349 = fcmp ogt double %348, 0x3D06849B86A12B9B
  br i1 %349, label %350, label %354

350:                                              ; preds = %346
  %351 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %22, double noundef %344)
  %352 = fdiv double %347, %351
  %353 = fsub double %344, %352
  br label %354

354:                                              ; preds = %350, %346
  %.0168 = phi double [ %353, %350 ], [ %344, %346 ]
  %355 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.0168)
  %356 = call noundef double @_ZSt3absd(double noundef %355)
  %357 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %22, double noundef %.0168)
  %358 = call noundef double @_ZSt3absd(double noundef %357)
  %359 = fmul double %358, 6.400000e+01
  %360 = fmul double %359, 0x3D06849B86A12B9B
  %361 = fcmp olt double %356, %360
  br i1 %361, label %362, label %364

362:                                              ; preds = %354
  %363 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %24, double noundef %.0168)
  br i1 %363, label %.thread192, label %371

364:                                              ; preds = %354
  %365 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.0158212)
  %366 = fmul double %355, %365
  %367 = fcmp olt double %366, 0.000000e+00
  br i1 %367, label %368, label %371

368:                                              ; preds = %364
  %369 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.0158212, double noundef %.0168)
  %370 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %24, double noundef %369)
  br i1 %370, label %.thread192, label %371

371:                                              ; preds = %362, %368, %364, %.lr.ph
  %.2160 = phi double [ %.0158212, %.lr.ph ], [ %.0168, %364 ], [ %.0168, %368 ], [ %.0168, %362 ]
  %372 = getelementptr inbounds i8, ptr %.0163211, i64 8
  %.not = icmp eq ptr %372, %343
  br i1 %.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %371, %131
  %.0158.lcssa = phi double [ %41, %131 ], [ %.2160, %371 ]
  %373 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.pre229)
  %374 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.0158.lcssa)
  %375 = fmul double %373, %374
  %376 = fcmp olt double %375, 0.000000e+00
  br i1 %376, label %377, label %380

377:                                              ; preds = %._crit_edge
  %378 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %20, double noundef %.0158.lcssa, double noundef %.pre229)
  %379 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %24, double noundef %378)
  br i1 %379, label %.thread192, label %385

380:                                              ; preds = %._crit_edge
  %381 = call noundef double @_ZSt3absd(double noundef %373)
  %382 = fcmp olt double %381, 0x3CE0000000000000
  br i1 %382, label %383, label %385

383:                                              ; preds = %380
  %384 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56) %24, double noundef %.pre229)
  br i1 %384, label %.thread192, label %385

.thread192:                                       ; preds = %362, %368, %377, %383
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #7
  br label %646

385:                                              ; preds = %377, %383, %380
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #7
  br label %386

386:                                              ; preds = %385, %.thread179
  %387 = getelementptr inbounds i8, ptr %0, i64 200
  %388 = load double, ptr %387, align 8, !tbaa !17
  %389 = load double, ptr %12, align 8, !tbaa !5
  %390 = fmul double %389, 2.000000e+00
  %391 = getelementptr inbounds i8, ptr %0, i64 32
  %392 = load double, ptr %391, align 8, !tbaa !15
  %393 = fmul double %392, 2.000000e+00
  %394 = load double, ptr %42, align 8, !tbaa !12
  %395 = getelementptr inbounds i8, ptr %0, i64 88
  %396 = load double, ptr %395, align 8, !tbaa !18
  %397 = fmul double %389, %396
  %398 = call double @llvm.fmuladd.f64(double %393, double %394, double %397)
  %399 = getelementptr inbounds i8, ptr %0, i64 112
  %400 = load double, ptr %399, align 8, !tbaa !19
  %401 = call double @llvm.fmuladd.f64(double %400, double -3.000000e+00, double %398)
  %402 = fneg double %390
  %403 = call double @llvm.fmuladd.f64(double %402, double %401, double %388)
  %404 = getelementptr inbounds i8, ptr %0, i64 208
  %405 = load double, ptr %404, align 8, !tbaa !20
  %406 = getelementptr inbounds i8, ptr %0, i64 240
  %407 = load double, ptr %406, align 8, !tbaa !21
  %408 = getelementptr inbounds i8, ptr %0, i64 248
  %409 = load double, ptr %408, align 8, !tbaa !22
  %410 = fmul double %407, -3.000000e+00
  %411 = call double @llvm.fmuladd.f64(double %410, double %409, double %405)
  %412 = fmul double %392, 3.000000e+00
  %413 = fmul double %389, %412
  %414 = call double @llvm.fmuladd.f64(double %413, double %400, double %411)
  %415 = fmul double %390, %394
  %416 = getelementptr inbounds i8, ptr %0, i64 120
  %417 = load double, ptr %416, align 8, !tbaa !23
  %418 = fmul double %417, 3.000000e+00
  %419 = call double @llvm.fmuladd.f64(double %415, double %409, double %418)
  %420 = getelementptr inbounds i8, ptr %0, i64 216
  %421 = load double, ptr %420, align 8, !tbaa !30
  %422 = fmul double %405, -8.000000e+00
  %423 = fmul double %389, %422
  %424 = call double @llvm.fmuladd.f64(double %423, double %394, double %421)
  %425 = fmul double %389, 1.200000e+01
  %426 = fmul double %388, %400
  %427 = call double @llvm.fmuladd.f64(double %389, double %419, double %426)
  %428 = fmul double %389, %393
  %429 = fneg double %394
  %430 = call double @llvm.fmuladd.f64(double %429, double %400, double %409)
  %431 = call double @llvm.fmuladd.f64(double %428, double %430, double %427)
  %432 = call double @llvm.fmuladd.f64(double %425, double %431, double %424)
  %433 = call double @llvm.fmuladd.f64(double %389, double %394, double %392)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %25) #7
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 0) #7
  store double 1.000000e+00, ptr %434, align 8, !tbaa !5
  %435 = load double, ptr %36, align 8, !tbaa !9
  %436 = fneg double %433
  %437 = call double @llvm.fmuladd.f64(double %435, double 5.000000e+00, double %436)
  %438 = load double, ptr %12, align 8, !tbaa !5
  %439 = fdiv double %437, %438
  %440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 1) #7
  store double %439, ptr %440, align 8, !tbaa !5
  %441 = getelementptr inbounds i8, ptr %0, i64 160
  %442 = load double, ptr %441, align 8, !tbaa !25
  %443 = fneg double %403
  %444 = call double @llvm.fmuladd.f64(double %442, double 3.900000e+01, double %443)
  %445 = load double, ptr %36, align 8, !tbaa !9
  %446 = fmul double %445, -1.600000e+01
  %447 = call double @llvm.fmuladd.f64(double %446, double %433, double %444)
  %448 = load double, ptr %406, align 8, !tbaa !21
  %449 = fmul double %448, 4.000000e+00
  %450 = fdiv double %447, %449
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 2) #7
  store double %450, ptr %451, align 8, !tbaa !5
  %452 = getelementptr inbounds i8, ptr %0, i64 168
  %453 = load double, ptr %452, align 8, !tbaa !26
  %454 = load double, ptr %441, align 8, !tbaa !25
  %455 = fmul double %454, -3.300000e+01
  %456 = fmul double %433, %455
  %457 = call double @llvm.fmuladd.f64(double %453, double 5.500000e+01, double %456)
  %458 = load double, ptr %36, align 8, !tbaa !9
  %459 = fmul double %458, -6.000000e+00
  %460 = call double @llvm.fmuladd.f64(double %459, double %403, double %457)
  %461 = call double @llvm.fmuladd.f64(double %414, double 2.000000e+00, double %460)
  %462 = load double, ptr %406, align 8, !tbaa !21
  %463 = fmul double %462, 6.000000e+00
  %464 = load double, ptr %12, align 8, !tbaa !5
  %465 = fmul double %463, %464
  %466 = fdiv double %461, %465
  %467 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 3) #7
  store double %466, ptr %467, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %0, i64 176
  %469 = load double, ptr %468, align 8, !tbaa !27
  %470 = call double @llvm.fmuladd.f64(double %469, double 1.010000e+02, double %432)
  %471 = load double, ptr %452, align 8, !tbaa !26
  %472 = fmul double %471, -7.600000e+01
  %473 = call double @llvm.fmuladd.f64(double %472, double %433, double %470)
  %474 = load double, ptr %441, align 8, !tbaa !25
  %475 = fmul double %474, -3.000000e+01
  %476 = call double @llvm.fmuladd.f64(double %475, double %403, double %473)
  %477 = load double, ptr %36, align 8, !tbaa !9
  %478 = fmul double %477, 1.600000e+01
  %479 = call double @llvm.fmuladd.f64(double %478, double %414, double %476)
  %480 = load double, ptr %406, align 8, !tbaa !21
  %481 = fmul double %480, 2.400000e+01
  %482 = fmul double %480, %481
  %483 = fdiv double %479, %482
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 4) #7
  store double %483, ptr %484, align 8, !tbaa !5
  %485 = load double, ptr %36, align 8, !tbaa !9
  %486 = load double, ptr %468, align 8, !tbaa !27
  %487 = call double @llvm.fmuladd.f64(double %486, double 1.100000e+01, double %432)
  %488 = load double, ptr %452, align 8, !tbaa !26
  %489 = fmul double %488, -1.000000e+01
  %490 = call double @llvm.fmuladd.f64(double %489, double %433, double %487)
  %491 = load double, ptr %441, align 8, !tbaa !25
  %492 = fmul double %491, -6.000000e+00
  %493 = call double @llvm.fmuladd.f64(double %492, double %403, double %490)
  %494 = fmul double %485, 4.000000e+00
  %495 = call double @llvm.fmuladd.f64(double %494, double %414, double %493)
  %496 = fmul double %485, %495
  %497 = load double, ptr %406, align 8, !tbaa !21
  %498 = fmul double %497, 1.200000e+01
  %499 = fmul double %497, %498
  %500 = load double, ptr %12, align 8, !tbaa !5
  %501 = fmul double %500, %499
  %502 = fdiv double %496, %501
  %503 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 5) #7
  store double %502, ptr %503, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %0, i64 192
  %505 = load double, ptr %504, align 8, !tbaa !28
  %506 = getelementptr inbounds i8, ptr %0, i64 232
  %507 = load double, ptr %506, align 8, !tbaa !29
  %508 = fneg double %507
  %509 = call double @llvm.fmuladd.f64(double %505, double 1.100000e+01, double %508)
  %510 = getelementptr inbounds i8, ptr %0, i64 184
  %511 = load double, ptr %510, align 8, !tbaa !35
  %512 = fmul double %511, -1.200000e+01
  %513 = call double @llvm.fmuladd.f64(double %512, double %433, double %509)
  %514 = load double, ptr %404, align 8, !tbaa !20
  %515 = load double, ptr %406, align 8, !tbaa !21
  %516 = load double, ptr %408, align 8, !tbaa !22
  %517 = fmul double %514, -4.800000e+01
  %518 = fmul double %517, %515
  %519 = call double @llvm.fmuladd.f64(double %518, double %516, double %513)
  %520 = load double, ptr %468, align 8, !tbaa !27
  %521 = fmul double %520, -9.000000e+00
  %522 = call double @llvm.fmuladd.f64(double %521, double %403, double %519)
  %523 = fmul double %515, 7.200000e+01
  %524 = load double, ptr %12, align 8, !tbaa !5
  %525 = fmul double %523, %524
  %526 = fmul double %516, %524
  %527 = load double, ptr %416, align 8, !tbaa !23
  %528 = load double, ptr %399, align 8, !tbaa !19
  %529 = fneg double %527
  %530 = fmul double %528, %529
  %531 = call double @llvm.fmuladd.f64(double %526, double %516, double %530)
  %532 = load double, ptr %391, align 8, !tbaa !15
  %533 = fmul double %532, -2.000000e+00
  %534 = fmul double %516, %533
  %535 = call double @llvm.fmuladd.f64(double %534, double %528, double %531)
  %536 = call double @llvm.fmuladd.f64(double %525, double %535, double %522)
  %537 = load double, ptr %420, align 8, !tbaa !30
  %538 = fmul double %537, -6.000000e+00
  %539 = fmul double %524, %538
  %540 = call double @llvm.fmuladd.f64(double %539, double %528, double %536)
  %541 = load double, ptr %387, align 8, !tbaa !17
  %542 = fmul double %541, -3.600000e+01
  %543 = fmul double %515, %542
  %544 = call double @llvm.fmuladd.f64(double %543, double %527, double %540)
  %545 = load double, ptr %452, align 8, !tbaa !26
  %546 = fmul double %545, 8.000000e+00
  %547 = call double @llvm.fmuladd.f64(double %546, double %414, double %544)
  %548 = load double, ptr %441, align 8, !tbaa !25
  %549 = fmul double %548, 3.000000e+00
  %550 = call double @llvm.fmuladd.f64(double %549, double %432, double %547)
  %551 = fmul double %515, 1.440000e+02
  %552 = fmul double %515, %551
  %553 = fmul double %515, %552
  %554 = fdiv double %550, %553
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EEixEm(ptr noundef nonnull align 8 dereferenceable(56) %25, i64 noundef 6) #7
  store double %554, ptr %555, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm7EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind nonnull writable sret(%"struct.std::array.6") align 8 %26, ptr noundef nonnull align 8 dereferenceable(56) %25)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %27) #7
  call void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind nonnull writable sret(%"struct.std::array.7") align 8 %27, ptr noundef nonnull align 8 dereferenceable(48) %26)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  store double %41, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %29) #7
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(104) %29)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30) #7
  %556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef 1) #7
  %557 = load double, ptr %556, align 8, !tbaa !5
  %558 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef 2) #7
  %559 = load double, ptr %558, align 8, !tbaa !5
  %560 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef 3) #7
  %561 = load double, ptr %560, align 8, !tbaa !5
  %562 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef 4) #7
  %563 = load double, ptr %562, align 8, !tbaa !5
  call void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind nonnull writable sret(%"class.ruckig::roots::PositiveSet") align 8 %30, double noundef %557, double noundef %559, double noundef %561, double noundef %563)
  %564 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %30)
  %565 = call noundef ptr @_ZN6ruckig5roots3SetIdLm4EE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %30)
  %.not176217 = icmp eq ptr %564, %565
  %.pre230 = load double, ptr %15, align 8, !tbaa !5
  br i1 %.not176217, label %._crit_edge221, label %.lr.ph220

.lr.ph220:                                        ; preds = %386
  %566 = getelementptr inbounds i8, ptr %33, i64 8
  br label %572

._crit_edge221:                                   ; preds = %598, %386
  %567 = phi double [ %41, %386 ], [ %599, %598 ]
  %568 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %26, double noundef %567)
  %569 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %26, double noundef %.pre230)
  %570 = fmul double %568, %569
  %571 = fcmp olt double %570, 0.000000e+00
  br i1 %571, label %601, label %605

572:                                              ; preds = %.lr.ph220, %598
  %573 = phi double [ %41, %.lr.ph220 ], [ %599, %598 ]
  %.0169218 = phi ptr [ %564, %.lr.ph220 ], [ %600, %598 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  %574 = load double, ptr %.0169218, align 8, !tbaa !5
  store double %574, ptr %31, align 8, !tbaa !5
  %575 = fcmp ult double %574, %.pre230
  br i1 %575, label %576, label %598

576:                                              ; preds = %572
  %577 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %27, double noundef %574)
  %578 = call noundef double @_ZSt3absd(double noundef %577)
  %579 = fcmp ogt double %578, 0x3D06849B86A12B9B
  br i1 %579, label %580, label %586

580:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #7
  call void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind nonnull writable sret(%"struct.std::array.2") align 8 %32, ptr noundef nonnull align 8 dereferenceable(40) %27)
  %581 = load double, ptr %31, align 8, !tbaa !5
  %582 = call noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32) %32, double noundef %581)
  %583 = fdiv double %577, %582
  %584 = load double, ptr %31, align 8, !tbaa !5
  %585 = fsub double %584, %583
  store double %585, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #7
  br label %586

586:                                              ; preds = %580, %576
  %587 = load double, ptr %28, align 8, !tbaa !5
  %588 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %26, double noundef %587)
  %589 = load double, ptr %31, align 8, !tbaa !5
  %590 = call noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48) %26, double noundef %589)
  %591 = fmul double %588, %590
  %592 = fcmp olt double %591, 0.000000e+00
  br i1 %592, label %593, label %596

593:                                              ; preds = %586
  call void @_ZNSt4pairIddEC2IRdS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %594 = load double, ptr %33, align 8
  %595 = load double, ptr %566, align 8
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104) %29, double %594, double %595)
  br label %596

596:                                              ; preds = %593, %586
  %597 = load double, ptr %31, align 8, !tbaa !5
  store double %597, ptr %28, align 8, !tbaa !5
  br label %598

598:                                              ; preds = %572, %596
  %599 = phi double [ %573, %572 ], [ %597, %596 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  %600 = getelementptr inbounds i8, ptr %.0169218, i64 8
  %.not176 = icmp eq ptr %600, %565
  br i1 %.not176, label %._crit_edge221, label %572

601:                                              ; preds = %._crit_edge221
  call void @_ZNSt4pairIddEC2IRdRKdTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %15)
  %602 = load double, ptr %34, align 8
  %603 = getelementptr inbounds i8, ptr %34, i64 8
  %604 = load double, ptr %603, align 8
  call void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104) %29, double %602, double %604)
  br label %605

605:                                              ; preds = %601, %._crit_edge221
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %35) #7
  store ptr %0, ptr %35, align 8, !tbaa !36
  %606 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %12, ptr %606, align 8, !tbaa !34
  %607 = getelementptr inbounds i8, ptr %35, i64 16
  store ptr %1, ptr %607, align 8, !tbaa !34
  %608 = getelementptr inbounds i8, ptr %35, i64 24
  store ptr %8, ptr %608, align 8, !tbaa !34
  %609 = getelementptr inbounds i8, ptr %35, i64 32
  store ptr %9, ptr %609, align 8, !tbaa !34
  %610 = getelementptr inbounds i8, ptr %35, i64 40
  store ptr %10, ptr %610, align 8, !tbaa !34
  %611 = getelementptr inbounds i8, ptr %35, i64 48
  store ptr %11, ptr %611, align 8, !tbaa !34
  %612 = call noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(104) %29)
  %613 = call noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE3endEv(ptr noundef nonnull align 8 dereferenceable(104) %29)
  %.not177222 = icmp eq ptr %612, %613
  br i1 %.not177222, label %._crit_edge227, label %.lr.ph226

.lr.ph226:                                        ; preds = %605, %634
  %.0162224 = phi ptr [ %635, %634 ], [ %612, %605 ]
  %.0164223 = phi double [ %.2166, %634 ], [ %41, %605 ]
  %.sroa.0.0.copyload = load double, ptr %.0162224, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %.0162224, i64 8
  %.sroa.4.0.copyload = load double, ptr %.sroa.4.0..sroa_idx, align 8
  %614 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48) %26, double noundef %.sroa.0.0.copyload, double noundef %.sroa.4.0.copyload)
  %615 = load double, ptr %15, align 8, !tbaa !5
  %616 = fcmp ult double %614, %615
  br i1 %616, label %617, label %634

617:                                              ; preds = %.lr.ph226
  %618 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %614)
  %619 = call noundef double @_ZSt3absd(double noundef %618)
  %620 = call noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40) %27, double noundef %614)
  %621 = call noundef double @_ZSt3absd(double noundef %620)
  %622 = fmul double %621, 6.400000e+01
  %623 = fmul double %622, 0x3D06849B86A12B9B
  %624 = fcmp olt double %619, %623
  br i1 %624, label %625, label %627

625:                                              ; preds = %617
  %626 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %35, double noundef %614)
  br i1 %626, label %.thread205, label %634

627:                                              ; preds = %617
  %628 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %.0164223)
  %629 = fmul double %618, %628
  %630 = fcmp olt double %629, 0.000000e+00
  br i1 %630, label %631, label %634

631:                                              ; preds = %627
  %632 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %.0164223, double noundef %614)
  %633 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %35, double noundef %632)
  br i1 %633, label %.thread205, label %634

634:                                              ; preds = %625, %631, %627, %.lr.ph226
  %.2166 = phi double [ %.0164223, %.lr.ph226 ], [ %614, %627 ], [ %614, %631 ], [ %614, %625 ]
  %635 = getelementptr inbounds i8, ptr %.0162224, i64 16
  %.not177 = icmp eq ptr %635, %613
  br i1 %.not177, label %._crit_edge227, label %.lr.ph226

._crit_edge227:                                   ; preds = %634, %605
  %.0164.lcssa = phi double [ %41, %605 ], [ %.2166, %634 ]
  %636 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %.0164.lcssa)
  %637 = load double, ptr %15, align 8, !tbaa !5
  %638 = call noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %637)
  %639 = fmul double %636, %638
  %640 = fcmp olt double %639, 0.000000e+00
  br i1 %640, label %641, label %645

641:                                              ; preds = %._crit_edge227
  %642 = load double, ptr %15, align 8, !tbaa !5
  %643 = call noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56) %25, double noundef %.0164.lcssa, double noundef %642)
  %644 = call noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56) %35, double noundef %643)
  br i1 %644, label %.thread205, label %645

.thread205:                                       ; preds = %625, %631, %641
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #7
  br label %646

645:                                              ; preds = %641, %._crit_edge227
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #7
  br label %646

646:                                              ; preds = %645, %.thread205, %.thread192, %130
  %.15 = phi i1 [ true, %130 ], [ true, %.thread192 ], [ false, %645 ], [ true, %.thread205 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  ret i1 %.15
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots11solve_cubicEdddd(ptr dead_on_unwind noalias writable sret(%"class.ruckig::roots::PositiveSet.3") align 8, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm3EE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetIdLm3EE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ruckig7Profile17check_with_timingILNS0_12ControlSignsE0ELNS0_13ReachedLimitsE1EEEbdddddd(ptr noundef nonnull align 8 dereferenceable(572), double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm6EEixEm(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots21poly_monic_derivativeILm6EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.7") align 8, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots15poly_derivativeILm5EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.2") align 8, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots17solve_quart_monicEdddd(ptr dead_on_unwind noalias writable sret(%"class.ruckig::roots::PositiveSet") align 8, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm5EEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm5EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(40), double noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm4EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(32), double noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm6EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(48), double noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_0clEd"(ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN6ruckig5roots15shrink_intervalILm6ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(48), double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6ruckig5roots21poly_monic_derivativeILm7EEESt5arrayIdXmiT_Li1EEERKS2_IdXT_EE(ptr dead_on_unwind noalias writable sret(%"struct.std::array.6") align 8, ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots3SetISt4pairIddELm6EEC2Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ruckig5roots3SetISt4pairIddELm6EE6insertES3_(ptr noundef nonnull align 8 dereferenceable(104), double, double) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIddEC2IRdS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIddEC2IRdRKdTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS6_S7_EEEbE4typeELb1EEEOS6_OS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6ruckig5roots3SetISt4pairIddELm6EE3endEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN6ruckig5roots9poly_evalILm7EEEdRKSt5arrayIdXT_EEd(ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddENK3$_1clEd"(ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN6ruckig5roots15shrink_intervalILm7ELm128EEEdRKSt5arrayIdXT_EEdd(ptr noundef nonnull align 8 dereferenceable(56), double noundef, double noundef) local_unnamed_addr #5

; 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>) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress 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 #3 = { mustprogress 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 #4 = { mustprogress 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 #5 = { inlinehint mustprogress 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTSN6ruckig23PositionThirdOrderStep2E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !11, i64 264}
!11 = !{!"bool", !7, i64 0}
!12 = !{!10, !6, i64 16}
!13 = !{!10, !6, i64 0}
!14 = !{!10, !6, i64 24}
!15 = !{!10, !6, i64 32}
!16 = !{!10, !6, i64 80}
!17 = !{!10, !6, i64 200}
!18 = !{!10, !6, i64 88}
!19 = !{!10, !6, i64 112}
!20 = !{!10, !6, i64 208}
!21 = !{!10, !6, i64 240}
!22 = !{!10, !6, i64 248}
!23 = !{!10, !6, i64 120}
!24 = !{!10, !6, i64 128}
!25 = !{!10, !6, i64 160}
!26 = !{!10, !6, i64 168}
!27 = !{!10, !6, i64 176}
!28 = !{!10, !6, i64 192}
!29 = !{!10, !6, i64 232}
!30 = !{!10, !6, i64 216}
!31 = !{!32, !33, i64 0}
!32 = !{!"_ZTSZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddE3$_0", !33, i64 0, !33, i64 8, !33, i64 16, !33, i64 24, !33, i64 32, !33, i64 40, !33, i64 48}
!33 = !{!"any pointer", !7, i64 0}
!34 = !{!33, !33, i64 0}
!35 = !{!10, !6, i64 184}
!36 = !{!37, !33, i64 0}
!37 = !{!"_ZTSZN6ruckig23PositionThirdOrderStep28time_velERNS_7ProfileEdddddE3$_1", !33, i64 0, !33, i64 8, !33, i64 16, !33, i64 24, !33, i64 32, !33, i64 40, !33, i64 48}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass