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

; 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.ruckig::Block::Interval" = type { double, double, %"class.ruckig::Profile" }
%"class.ruckig::Profile" = type <{ %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"class.ruckig::BrakeProfile", %"class.ruckig::BrakeProfile", double, double, double, i32, i32, i32, [4 x i8] }>
%"struct.std::array.0" = type { [7 x double] }
%"struct.std::array.1" = type { [8 x double] }
%"class.ruckig::BrakeProfile" = type { double, %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2" }
%"struct.std::array.2" = type { [2 x double] }
%"class.ruckig::PositionThirdOrderStep1" = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"struct.std::array" }
%"struct.std::array" = type { [6 x %"class.ruckig::Profile"] }
%"class.ruckig::Block" = type { %"class.ruckig::Profile", double, %"class.std::optional", %"class.std::optional" }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload_base.base", [7 x i8] }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<ruckig::Block::Interval>::_Storage", i8 }>
%"union.std::_Optional_payload_base<ruckig::Block::Interval>::_Storage" = type { %"struct.ruckig::Block::Interval" }

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6ruckig23PositionThirdOrderStep120time_all_single_stepEPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6ruckig23PositionThirdOrderStep111get_profileERKNS_7ProfileERNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(572) %1, ptr noundef nonnull align 8 dereferenceable(1784) %2) #0 align 2 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.ruckig::Block::Interval", align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, 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
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %18 = load ptr, ptr %5, align 8
  %19 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %20 = load double, ptr %19, align 8, !tbaa !9
  %21 = fcmp oeq double %20, 0.000000e+00
  br i1 %21, label %30, label %22

22:                                               ; preds = %3
  %23 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %24 = load double, ptr %23, align 8, !tbaa !13
  %25 = fcmp oeq double %24, 0.000000e+00
  br i1 %25, label %30, label %26

26:                                               ; preds = %22
  %27 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %28 = load double, ptr %27, align 8, !tbaa !14
  %29 = fcmp oeq double %28, 0.000000e+00
  br i1 %29, label %30, label %84

30:                                               ; preds = %26, %22, %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %31 = load ptr, ptr %7, align 8, !tbaa !5
  %32 = getelementptr inbounds %"class.ruckig::Block", ptr %31, i32 0, i32 0
  store ptr %32, ptr %8, align 8, !tbaa !5
  %33 = load ptr, ptr %8, align 8, !tbaa !5
  %34 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6ruckig7Profile12set_boundaryERKS0_(ptr noundef nonnull align 8 dereferenceable(572) %33, ptr noundef nonnull align 8 dereferenceable(572) %34)
  %35 = load ptr, ptr %8, align 8, !tbaa !5
  %36 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %37 = load double, ptr %36, align 8, !tbaa !15
  %38 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %39 = load double, ptr %38, align 8, !tbaa !16
  %40 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %41 = load double, ptr %40, align 8, !tbaa !13
  %42 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %43 = load double, ptr %42, align 8, !tbaa !14
  %44 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %45 = load double, ptr %44, align 8, !tbaa !9
  %46 = call noundef zeroext i1 @_ZNK6ruckig23PositionThirdOrderStep120time_all_single_stepEPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef %35, double noundef %37, double noundef %39, double noundef %41, double noundef %43, double noundef %45)
  br i1 %46, label %47, label %82

47:                                               ; preds = %30
  %48 = load ptr, ptr %8, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.ruckig::Profile", ptr %48, i32 0, i32 1
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EE4backEv(ptr noundef nonnull align 8 dereferenceable(56) %49) #6
  %51 = load double, ptr %50, align 8, !tbaa !17
  %52 = load ptr, ptr %8, align 8, !tbaa !5
  %53 = getelementptr inbounds %"class.ruckig::Profile", ptr %52, i32 0, i32 6
  %54 = getelementptr inbounds %"class.ruckig::BrakeProfile", ptr %53, i32 0, i32 0
  %55 = load double, ptr %54, align 8, !tbaa !18
  %56 = fadd double %51, %55
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = getelementptr inbounds %"class.ruckig::Profile", ptr %57, i32 0, i32 7
  %59 = getelementptr inbounds %"class.ruckig::BrakeProfile", ptr %58, i32 0, i32 0
  %60 = load double, ptr %59, align 8, !tbaa !27
  %61 = fadd double %56, %60
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = getelementptr inbounds %"class.ruckig::Block", ptr %62, i32 0, i32 1
  store double %61, ptr %63, align 8, !tbaa !28
  %64 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 0
  %65 = load double, ptr %64, align 8, !tbaa !35
  %66 = call noundef double @_ZSt3absd(double noundef %65)
  %67 = fcmp ogt double %66, 0x3CB0000000000000
  br i1 %67, label %73, label %68

68:                                               ; preds = %47
  %69 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 1
  %70 = load double, ptr %69, align 8, !tbaa !36
  %71 = call noundef double @_ZSt3absd(double noundef %70)
  %72 = fcmp ogt double %71, 0x3CB0000000000000
  br i1 %72, label %73, label %81

73:                                               ; preds = %68, %47
  call void @llvm.lifetime.start.p0(i64 592, ptr %9) #6
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = getelementptr inbounds %"class.ruckig::Block", ptr %74, i32 0, i32 1
  %76 = load double, ptr %75, align 8, !tbaa !28
  %77 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #6
  call void @_ZN6ruckig5Block8IntervalC2Edd(ptr noundef nonnull align 8 dereferenceable(592) %9, double noundef %76, double noundef %77)
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %"class.ruckig::Block", ptr %78, i32 0, i32 2
  %80 = call noundef nonnull align 8 dereferenceable(600) ptr @_ZNSt8optionalIN6ruckig5Block8IntervalEEaSIS2_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS3_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS2_ES7_IS2_NSt5decayISA_E4typeEEEEESt16is_constructibleIS2_JSA_EESt13is_assignableIRS2_SA_EEERS3_E4typeEOSA_(ptr noundef nonnull align 8 dereferenceable(600) %79, ptr noundef nonnull align 8 dereferenceable(592) %9) #6
  call void @llvm.lifetime.end.p0(i64 592, ptr %9) #6
  br label %81

81:                                               ; preds = %73, %68
  store i1 true, ptr %4, align 1
  store i32 1, ptr %10, align 4
  br label %83

82:                                               ; preds = %30
  store i1 false, ptr %4, align 1
  store i32 1, ptr %10, align 4
  br label %83

83:                                               ; preds = %82, %81
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  br label %436

84:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  %85 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 19
  %86 = call noundef ptr @_ZNSt5arrayIN6ruckig7ProfileELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(3456) %85) #7
  store ptr %86, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %87, ptr %12, align 8, !tbaa !5
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6ruckig7Profile12set_boundaryERKS0_(ptr noundef nonnull align 8 dereferenceable(572) %88, ptr noundef nonnull align 8 dereferenceable(572) %89)
  %90 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 2
  %91 = load double, ptr %90, align 8, !tbaa !37
  %92 = call noundef double @_ZSt3absd(double noundef %91)
  %93 = fcmp olt double %92, 0x3CB0000000000000
  br i1 %93, label %94, label %239

94:                                               ; preds = %84
  %95 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 3
  %96 = load double, ptr %95, align 8, !tbaa !38
  %97 = call noundef double @_ZSt3absd(double noundef %96)
  %98 = fcmp olt double %97, 0x3CB0000000000000
  br i1 %98, label %99, label %239

99:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %100 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %101 = load double, ptr %100, align 8, !tbaa !39
  %102 = fcmp oge double %101, 0.000000e+00
  br i1 %102, label %103, label %106

103:                                              ; preds = %99
  %104 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %105 = load double, ptr %104, align 8, !tbaa !15
  br label %109

106:                                              ; preds = %99
  %107 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %108 = load double, ptr %107, align 8, !tbaa !16
  br label %109

109:                                              ; preds = %106, %103
  %110 = phi double [ %105, %103 ], [ %108, %106 ]
  store double %110, ptr %13, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %111 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %112 = load double, ptr %111, align 8, !tbaa !39
  %113 = fcmp oge double %112, 0.000000e+00
  br i1 %113, label %114, label %117

114:                                              ; preds = %109
  %115 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %116 = load double, ptr %115, align 8, !tbaa !16
  br label %120

117:                                              ; preds = %109
  %118 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %119 = load double, ptr %118, align 8, !tbaa !15
  br label %120

120:                                              ; preds = %117, %114
  %121 = phi double [ %116, %114 ], [ %119, %117 ]
  store double %121, ptr %14, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %122 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %123 = load double, ptr %122, align 8, !tbaa !39
  %124 = fcmp oge double %123, 0.000000e+00
  br i1 %124, label %125, label %128

125:                                              ; preds = %120
  %126 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %127 = load double, ptr %126, align 8, !tbaa !13
  br label %131

128:                                              ; preds = %120
  %129 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %130 = load double, ptr %129, align 8, !tbaa !14
  br label %131

131:                                              ; preds = %128, %125
  %132 = phi double [ %127, %125 ], [ %130, %128 ]
  store double %132, ptr %15, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %133 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %134 = load double, ptr %133, align 8, !tbaa !39
  %135 = fcmp oge double %134, 0.000000e+00
  br i1 %135, label %136, label %139

136:                                              ; preds = %131
  %137 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %138 = load double, ptr %137, align 8, !tbaa !14
  br label %142

139:                                              ; preds = %131
  %140 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %141 = load double, ptr %140, align 8, !tbaa !13
  br label %142

142:                                              ; preds = %139, %136
  %143 = phi double [ %138, %136 ], [ %141, %139 ]
  store double %143, ptr %16, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %144 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %145 = load double, ptr %144, align 8, !tbaa !39
  %146 = fcmp oge double %145, 0.000000e+00
  br i1 %146, label %147, label %150

147:                                              ; preds = %142
  %148 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %149 = load double, ptr %148, align 8, !tbaa !9
  br label %154

150:                                              ; preds = %142
  %151 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = fneg double %152
  br label %154

154:                                              ; preds = %150, %147
  %155 = phi double [ %149, %147 ], [ %153, %150 ]
  store double %155, ptr %17, align 8, !tbaa !17
  %156 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 0
  %157 = load double, ptr %156, align 8, !tbaa !35
  %158 = call noundef double @_ZSt3absd(double noundef %157)
  %159 = fcmp olt double %158, 0x3CB0000000000000
  br i1 %159, label %160, label %176

160:                                              ; preds = %154
  %161 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 1
  %162 = load double, ptr %161, align 8, !tbaa !36
  %163 = call noundef double @_ZSt3absd(double noundef %162)
  %164 = fcmp olt double %163, 0x3CB0000000000000
  br i1 %164, label %165, label %176

165:                                              ; preds = %160
  %166 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 9
  %167 = load double, ptr %166, align 8, !tbaa !39
  %168 = call noundef double @_ZSt3absd(double noundef %167)
  %169 = fcmp olt double %168, 0x3CB0000000000000
  br i1 %169, label %170, label %176

170:                                              ; preds = %165
  %171 = load double, ptr %13, align 8, !tbaa !17
  %172 = load double, ptr %14, align 8, !tbaa !17
  %173 = load double, ptr %15, align 8, !tbaa !17
  %174 = load double, ptr %16, align 8, !tbaa !17
  %175 = load double, ptr %17, align 8, !tbaa !17
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %171, double noundef %172, double noundef %173, double noundef %174, double noundef %175, i1 noundef zeroext true)
  br label %235

176:                                              ; preds = %165, %160, %154
  %177 = load double, ptr %13, align 8, !tbaa !17
  %178 = load double, ptr %14, align 8, !tbaa !17
  %179 = load double, ptr %15, align 8, !tbaa !17
  %180 = load double, ptr %16, align 8, !tbaa !17
  %181 = load double, ptr %17, align 8, !tbaa !17
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %177, double noundef %178, double noundef %179, double noundef %180, double noundef %181, i1 noundef zeroext true)
  %182 = load ptr, ptr %12, align 8, !tbaa !5
  %183 = load ptr, ptr %11, align 8, !tbaa !5
  %184 = icmp ugt ptr %182, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %176
  store i32 2, ptr %10, align 4
  br label %236

186:                                              ; preds = %176
  %187 = load double, ptr %13, align 8, !tbaa !17
  %188 = load double, ptr %14, align 8, !tbaa !17
  %189 = load double, ptr %15, align 8, !tbaa !17
  %190 = load double, ptr %16, align 8, !tbaa !17
  %191 = load double, ptr %17, align 8, !tbaa !17
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %187, double noundef %188, double noundef %189, double noundef %190, double noundef %191, i1 noundef zeroext true)
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = icmp ugt ptr %192, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %186
  store i32 2, ptr %10, align 4
  br label %236

196:                                              ; preds = %186
  %197 = load double, ptr %13, align 8, !tbaa !17
  %198 = load double, ptr %14, align 8, !tbaa !17
  %199 = load double, ptr %15, align 8, !tbaa !17
  %200 = load double, ptr %16, align 8, !tbaa !17
  %201 = load double, ptr %17, align 8, !tbaa !17
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %197, double noundef %198, double noundef %199, double noundef %200, double noundef %201, i1 noundef zeroext true)
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = icmp ugt ptr %202, %203
  br i1 %204, label %205, label %206

205:                                              ; preds = %196
  store i32 2, ptr %10, align 4
  br label %236

206:                                              ; preds = %196
  %207 = load double, ptr %14, align 8, !tbaa !17
  %208 = load double, ptr %13, align 8, !tbaa !17
  %209 = load double, ptr %16, align 8, !tbaa !17
  %210 = load double, ptr %15, align 8, !tbaa !17
  %211 = load double, ptr %17, align 8, !tbaa !17
  %212 = fneg double %211
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %207, double noundef %208, double noundef %209, double noundef %210, double noundef %212, i1 noundef zeroext true)
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = icmp ugt ptr %213, %214
  br i1 %215, label %216, label %217

216:                                              ; preds = %206
  store i32 2, ptr %10, align 4
  br label %236

217:                                              ; preds = %206
  %218 = load double, ptr %14, align 8, !tbaa !17
  %219 = load double, ptr %13, align 8, !tbaa !17
  %220 = load double, ptr %16, align 8, !tbaa !17
  %221 = load double, ptr %15, align 8, !tbaa !17
  %222 = load double, ptr %17, align 8, !tbaa !17
  %223 = fneg double %222
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %218, double noundef %219, double noundef %220, double noundef %221, double noundef %223, i1 noundef zeroext true)
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = icmp ugt ptr %224, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %217
  store i32 2, ptr %10, align 4
  br label %236

228:                                              ; preds = %217
  %229 = load double, ptr %14, align 8, !tbaa !17
  %230 = load double, ptr %13, align 8, !tbaa !17
  %231 = load double, ptr %16, align 8, !tbaa !17
  %232 = load double, ptr %15, align 8, !tbaa !17
  %233 = load double, ptr %17, align 8, !tbaa !17
  %234 = fneg double %233
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %229, double noundef %230, double noundef %231, double noundef %232, double noundef %234, i1 noundef zeroext true)
  br label %235

235:                                              ; preds = %228, %170
  store i32 0, ptr %10, align 4
  br label %236

236:                                              ; preds = %235, %227, %216, %205, %195, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  %237 = load i32, ptr %10, align 4
  switch i32 %237, label %435 [
    i32 0, label %238
    i32 2, label %428
  ]

238:                                              ; preds = %236
  br label %303

239:                                              ; preds = %94, %84
  %240 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %241 = load double, ptr %240, align 8, !tbaa !15
  %242 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %243 = load double, ptr %242, align 8, !tbaa !16
  %244 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %245 = load double, ptr %244, align 8, !tbaa !13
  %246 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %247 = load double, ptr %246, align 8, !tbaa !14
  %248 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %249 = load double, ptr %248, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %241, double noundef %243, double noundef %245, double noundef %247, double noundef %249, i1 noundef zeroext false)
  %250 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %251 = load double, ptr %250, align 8, !tbaa !16
  %252 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %253 = load double, ptr %252, align 8, !tbaa !15
  %254 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %255 = load double, ptr %254, align 8, !tbaa !14
  %256 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %257 = load double, ptr %256, align 8, !tbaa !13
  %258 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fneg double %259
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %251, double noundef %253, double noundef %255, double noundef %257, double noundef %260, i1 noundef zeroext false)
  %261 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %262 = load double, ptr %261, align 8, !tbaa !15
  %263 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %264 = load double, ptr %263, align 8, !tbaa !16
  %265 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %266 = load double, ptr %265, align 8, !tbaa !13
  %267 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %268 = load double, ptr %267, align 8, !tbaa !14
  %269 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %270 = load double, ptr %269, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %262, double noundef %264, double noundef %266, double noundef %268, double noundef %270, i1 noundef zeroext false)
  %271 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %272 = load double, ptr %271, align 8, !tbaa !16
  %273 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %274 = load double, ptr %273, align 8, !tbaa !15
  %275 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %276 = load double, ptr %275, align 8, !tbaa !14
  %277 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %278 = load double, ptr %277, align 8, !tbaa !13
  %279 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fneg double %280
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %272, double noundef %274, double noundef %276, double noundef %278, double noundef %281, i1 noundef zeroext false)
  %282 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %283 = load double, ptr %282, align 8, !tbaa !15
  %284 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %285 = load double, ptr %284, align 8, !tbaa !16
  %286 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %287 = load double, ptr %286, align 8, !tbaa !13
  %288 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %289 = load double, ptr %288, align 8, !tbaa !14
  %290 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %291 = load double, ptr %290, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %283, double noundef %285, double noundef %287, double noundef %289, double noundef %291, i1 noundef zeroext false)
  %292 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %293 = load double, ptr %292, align 8, !tbaa !16
  %294 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %297 = load double, ptr %296, align 8, !tbaa !14
  %298 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %299 = load double, ptr %298, align 8, !tbaa !13
  %300 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = fneg double %301
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %293, double noundef %295, double noundef %297, double noundef %299, double noundef %302, i1 noundef zeroext false)
  br label %303

303:                                              ; preds = %239, %238
  %304 = load ptr, ptr %12, align 8, !tbaa !5
  %305 = load ptr, ptr %11, align 8, !tbaa !5
  %306 = icmp eq ptr %304, %305
  br i1 %306, label %307, label %427

307:                                              ; preds = %303
  %308 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %309 = load double, ptr %308, align 8, !tbaa !15
  %310 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %311 = load double, ptr %310, align 8, !tbaa !16
  %312 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %313 = load double, ptr %312, align 8, !tbaa !13
  %314 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %315 = load double, ptr %314, align 8, !tbaa !14
  %316 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %317 = load double, ptr %316, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %309, double noundef %311, double noundef %313, double noundef %315, double noundef %317)
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = load ptr, ptr %11, align 8, !tbaa !5
  %320 = icmp ugt ptr %318, %319
  br i1 %320, label %321, label %322

321:                                              ; preds = %307
  br label %428

322:                                              ; preds = %307
  %323 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %324 = load double, ptr %323, align 8, !tbaa !16
  %325 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %326 = load double, ptr %325, align 8, !tbaa !15
  %327 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %328 = load double, ptr %327, align 8, !tbaa !14
  %329 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %330 = load double, ptr %329, align 8, !tbaa !13
  %331 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %332 = load double, ptr %331, align 8, !tbaa !9
  %333 = fneg double %332
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %324, double noundef %326, double noundef %328, double noundef %330, double noundef %333)
  %334 = load ptr, ptr %12, align 8, !tbaa !5
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = icmp ugt ptr %334, %335
  br i1 %336, label %337, label %338

337:                                              ; preds = %322
  br label %428

338:                                              ; preds = %322
  %339 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %340 = load double, ptr %339, align 8, !tbaa !15
  %341 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %342 = load double, ptr %341, align 8, !tbaa !16
  %343 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %344 = load double, ptr %343, align 8, !tbaa !13
  %345 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %346 = load double, ptr %345, align 8, !tbaa !14
  %347 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %348 = load double, ptr %347, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %340, double noundef %342, double noundef %344, double noundef %346, double noundef %348)
  %349 = load ptr, ptr %12, align 8, !tbaa !5
  %350 = load ptr, ptr %11, align 8, !tbaa !5
  %351 = icmp ugt ptr %349, %350
  br i1 %351, label %352, label %353

352:                                              ; preds = %338
  br label %428

353:                                              ; preds = %338
  %354 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %355 = load double, ptr %354, align 8, !tbaa !16
  %356 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %357 = load double, ptr %356, align 8, !tbaa !15
  %358 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %359 = load double, ptr %358, align 8, !tbaa !14
  %360 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %361 = load double, ptr %360, align 8, !tbaa !13
  %362 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = fneg double %363
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %355, double noundef %357, double noundef %359, double noundef %361, double noundef %364)
  %365 = load ptr, ptr %12, align 8, !tbaa !5
  %366 = load ptr, ptr %11, align 8, !tbaa !5
  %367 = icmp ugt ptr %365, %366
  br i1 %367, label %368, label %369

368:                                              ; preds = %353
  br label %428

369:                                              ; preds = %353
  %370 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %371 = load double, ptr %370, align 8, !tbaa !15
  %372 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %373 = load double, ptr %372, align 8, !tbaa !16
  %374 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %375 = load double, ptr %374, align 8, !tbaa !13
  %376 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %377 = load double, ptr %376, align 8, !tbaa !14
  %378 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %379 = load double, ptr %378, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %371, double noundef %373, double noundef %375, double noundef %377, double noundef %379)
  %380 = load ptr, ptr %12, align 8, !tbaa !5
  %381 = load ptr, ptr %11, align 8, !tbaa !5
  %382 = icmp ugt ptr %380, %381
  br i1 %382, label %383, label %384

383:                                              ; preds = %369
  br label %428

384:                                              ; preds = %369
  %385 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %386 = load double, ptr %385, align 8, !tbaa !16
  %387 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %388 = load double, ptr %387, align 8, !tbaa !15
  %389 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %390 = load double, ptr %389, align 8, !tbaa !14
  %391 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %392 = load double, ptr %391, align 8, !tbaa !13
  %393 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = fneg double %394
  call void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %386, double noundef %388, double noundef %390, double noundef %392, double noundef %395)
  %396 = load ptr, ptr %12, align 8, !tbaa !5
  %397 = load ptr, ptr %11, align 8, !tbaa !5
  %398 = icmp ugt ptr %396, %397
  br i1 %398, label %399, label %400

399:                                              ; preds = %384
  br label %428

400:                                              ; preds = %384
  %401 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %402 = load double, ptr %401, align 8, !tbaa !15
  %403 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %404 = load double, ptr %403, align 8, !tbaa !16
  %405 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %406 = load double, ptr %405, align 8, !tbaa !13
  %407 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %408 = load double, ptr %407, align 8, !tbaa !14
  %409 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %410 = load double, ptr %409, align 8, !tbaa !9
  call void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %402, double noundef %404, double noundef %406, double noundef %408, double noundef %410)
  %411 = load ptr, ptr %12, align 8, !tbaa !5
  %412 = load ptr, ptr %11, align 8, !tbaa !5
  %413 = icmp ugt ptr %411, %412
  br i1 %413, label %414, label %415

414:                                              ; preds = %400
  br label %428

415:                                              ; preds = %400
  %416 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 5
  %417 = load double, ptr %416, align 8, !tbaa !16
  %418 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 4
  %419 = load double, ptr %418, align 8, !tbaa !15
  %420 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 7
  %421 = load double, ptr %420, align 8, !tbaa !14
  %422 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 6
  %423 = load double, ptr %422, align 8, !tbaa !13
  %424 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 8
  %425 = load double, ptr %424, align 8, !tbaa !9
  %426 = fneg double %425
  call void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %18, ptr noundef nonnull align 8 dereferenceable(8) %12, double noundef %417, double noundef %419, double noundef %421, double noundef %423, double noundef %426)
  br label %427

427:                                              ; preds = %415, %303
  br label %428

428:                                              ; preds = %427, %414, %399, %383, %368, %352, %337, %321, %236
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  %430 = getelementptr inbounds %"class.ruckig::PositionThirdOrderStep1", ptr %18, i32 0, i32 19
  %431 = load ptr, ptr %11, align 8, !tbaa !5
  %432 = load ptr, ptr %12, align 8, !tbaa !5
  %433 = call noundef i64 @_ZSt8distanceIPN6ruckig7ProfileEENSt15iterator_traitsIT_E15difference_typeES4_S4_(ptr noundef %431, ptr noundef %432)
  %434 = call noundef zeroext i1 @_ZN6ruckig5Block15calculate_blockILm6ELb1EEEbRS0_RSt5arrayINS_7ProfileEXT_EEm(ptr noundef nonnull align 8 dereferenceable(1784) %429, ptr noundef nonnull align 8 dereferenceable(3456) %430, i64 noundef %433)
  store i1 %434, ptr %4, align 1
  store i32 1, ptr %10, align 4
  br label %435

435:                                              ; preds = %428, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  br label %436

436:                                              ; preds = %435, %83
  %437 = load i1, ptr %4, align 1
  ret i1 %437
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(600) ptr @_ZNSt8optionalIN6ruckig5Block8IntervalEEaSIS2_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS3_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS2_ES7_IS2_NSt5decayISA_E4typeEEEEESt16is_constructibleIS2_JSA_EESt13is_assignableIRS2_SA_EEERS3_E4typeEOSA_(ptr noundef nonnull align 8 dereferenceable(600), ptr noundef nonnull align 8 dereferenceable(592)) #3 align 2

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIN6ruckig7ProfileELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(3456)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ruckig5Block15calculate_blockILm6ELb1EEEbRS0_RSt5arrayINS_7ProfileEXT_EEm(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(3456), i64 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt8distanceIPN6ruckig7ProfileEENSt15iterator_traitsIT_E15difference_typeES4_S4_(ptr noundef, ptr noundef) #5

attributes #0 = { 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 #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 nounwind willreturn memory(none) 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 = { nounwind }
attributes #7 = { nounwind willreturn memory(none) }

!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, !11, i64 64}
!10 = !{!"_ZTSN6ruckig23PositionThirdOrderStep1E", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !12, i64 152}
!11 = !{!"double", !7, i64 0}
!12 = !{!"_ZTSSt5arrayIN6ruckig7ProfileELm6EE", !7, i64 0}
!13 = !{!10, !11, i64 48}
!14 = !{!10, !11, i64 56}
!15 = !{!10, !11, i64 32}
!16 = !{!10, !11, i64 40}
!17 = !{!11, !11, i64 0}
!18 = !{!19, !11, i64 360}
!19 = !{!"_ZTSN6ruckig7ProfileE", !20, i64 0, !20, i64 56, !20, i64 112, !21, i64 168, !21, i64 232, !21, i64 296, !22, i64 360, !22, i64 448, !11, i64 536, !11, i64 544, !11, i64 552, !24, i64 560, !25, i64 564, !26, i64 568}
!20 = !{!"_ZTSSt5arrayIdLm7EE", !7, i64 0}
!21 = !{!"_ZTSSt5arrayIdLm8EE", !7, i64 0}
!22 = !{!"_ZTSN6ruckig12BrakeProfileE", !11, i64 0, !23, i64 8, !23, i64 24, !23, i64 40, !23, i64 56, !23, i64 72}
!23 = !{!"_ZTSSt5arrayIdLm2EE", !7, i64 0}
!24 = !{!"_ZTSN6ruckig7Profile13ReachedLimitsE", !7, i64 0}
!25 = !{!"_ZTSN6ruckig7Profile9DirectionE", !7, i64 0}
!26 = !{!"_ZTSN6ruckig7Profile12ControlSignsE", !7, i64 0}
!27 = !{!19, !11, i64 448}
!28 = !{!29, !11, i64 576}
!29 = !{!"_ZTSN6ruckig5BlockE", !19, i64 0, !11, i64 576, !30, i64 584, !30, i64 1184}
!30 = !{!"_ZTSSt8optionalIN6ruckig5Block8IntervalEE", !31, i64 0}
!31 = !{!"_ZTSSt14_Optional_baseIN6ruckig5Block8IntervalELb1ELb1EE", !32, i64 0}
!32 = !{!"_ZTSSt17_Optional_payloadIN6ruckig5Block8IntervalELb1ELb1ELb1EE", !33, i64 0}
!33 = !{!"_ZTSSt22_Optional_payload_baseIN6ruckig5Block8IntervalEE", !7, i64 0, !34, i64 592}
!34 = !{!"bool", !7, i64 0}
!35 = !{!10, !11, i64 0}
!36 = !{!10, !11, i64 8}
!37 = !{!10, !11, i64 16}
!38 = !{!10, !11, i64 24}
!39 = !{!10, !11, i64 72}


; 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.ruckig::Block::Interval" = type { double, double, %"class.ruckig::Profile" }
%"class.ruckig::Profile" = type <{ %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.1", %"struct.std::array.1", %"struct.std::array.1", %"class.ruckig::BrakeProfile", %"class.ruckig::BrakeProfile", double, double, double, i32, i32, i32, [4 x i8] }>
%"struct.std::array.0" = type { [7 x double] }
%"struct.std::array.1" = type { [8 x double] }
%"class.ruckig::BrakeProfile" = type { double, %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2", %"struct.std::array.2" }
%"struct.std::array.2" = type { [2 x double] }

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6ruckig23PositionThirdOrderStep120time_all_single_stepEPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608), ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6ruckig23PositionThirdOrderStep111get_profileERKNS_7ProfileERNS_5BlockE(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(572) %1, ptr noundef nonnull align 8 dereferenceable(1784) %2) local_unnamed_addr #0 align 2 {
  %4 = alloca %"struct.ruckig::Block::Interval", align 8
  %5 = alloca ptr, align 8
  %6 = getelementptr inbounds i8, ptr %0, i64 64
  %7 = load double, ptr %6, align 8, !tbaa !5
  %8 = fcmp oeq double %7, 0.000000e+00
  br i1 %8, label %17, label %9

9:                                                ; preds = %3
  %10 = getelementptr inbounds i8, ptr %0, i64 48
  %11 = load double, ptr %10, align 8, !tbaa !11
  %12 = fcmp oeq double %11, 0.000000e+00
  br i1 %12, label %17, label %13

13:                                               ; preds = %9
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = load double, ptr %14, align 8, !tbaa !12
  %16 = fcmp oeq double %15, 0.000000e+00
  br i1 %16, label %17, label %52

17:                                               ; preds = %13, %9, %3
  tail call void @_ZN6ruckig7Profile12set_boundaryERKS0_(ptr noundef nonnull align 8 dereferenceable(572) %2, ptr noundef nonnull align 8 dereferenceable(572) %1)
  %18 = getelementptr inbounds i8, ptr %0, i64 32
  %19 = load double, ptr %18, align 8, !tbaa !13
  %20 = getelementptr inbounds i8, ptr %0, i64 40
  %21 = load double, ptr %20, align 8, !tbaa !14
  %22 = getelementptr inbounds i8, ptr %0, i64 48
  %23 = load double, ptr %22, align 8, !tbaa !11
  %24 = getelementptr inbounds i8, ptr %0, i64 56
  %25 = load double, ptr %24, align 8, !tbaa !12
  %26 = load double, ptr %6, align 8, !tbaa !5
  %27 = tail call noundef zeroext i1 @_ZNK6ruckig23PositionThirdOrderStep120time_all_single_stepEPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull %2, double noundef %19, double noundef %21, double noundef %23, double noundef %25, double noundef %26)
  br i1 %27, label %28, label %217

28:                                               ; preds = %17
  %29 = getelementptr inbounds i8, ptr %2, i64 56
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm7EE4backEv(ptr noundef nonnull align 8 dereferenceable(56) %29) #6
  %31 = load double, ptr %30, align 8, !tbaa !15
  %32 = getelementptr inbounds i8, ptr %2, i64 360
  %33 = load double, ptr %32, align 8, !tbaa !16
  %34 = fadd double %31, %33
  %35 = getelementptr inbounds i8, ptr %2, i64 448
  %36 = load double, ptr %35, align 8, !tbaa !25
  %37 = fadd double %34, %36
  %38 = getelementptr inbounds i8, ptr %2, i64 576
  store double %37, ptr %38, align 8, !tbaa !26
  %39 = load double, ptr %0, align 8, !tbaa !33
  %40 = tail call noundef double @_ZSt3absd(double noundef %39)
  %41 = fcmp ogt double %40, 0x3CB0000000000000
  br i1 %41, label %47, label %42

42:                                               ; preds = %28
  %43 = getelementptr inbounds i8, ptr %0, i64 8
  %44 = load double, ptr %43, align 8, !tbaa !34
  %45 = tail call noundef double @_ZSt3absd(double noundef %44)
  %46 = fcmp ogt double %45, 0x3CB0000000000000
  br i1 %46, label %47, label %217

47:                                               ; preds = %42, %28
  call void @llvm.lifetime.start.p0(i64 592, ptr nonnull %4) #6
  %48 = load double, ptr %38, align 8, !tbaa !26
  %49 = tail call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #6
  call void @_ZN6ruckig5Block8IntervalC2Edd(ptr noundef nonnull align 8 dereferenceable(592) %4, double noundef %48, double noundef %49)
  %50 = getelementptr inbounds i8, ptr %2, i64 584
  %51 = call noundef nonnull align 8 dereferenceable(600) ptr @_ZNSt8optionalIN6ruckig5Block8IntervalEEaSIS2_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS3_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS2_ES7_IS2_NSt5decayISA_E4typeEEEEESt16is_constructibleIS2_JSA_EESt13is_assignableIRS2_SA_EEERS3_E4typeEOSA_(ptr noundef nonnull align 8 dereferenceable(600) %50, ptr noundef nonnull align 8 dereferenceable(592) %4) #6
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %4) #6
  br label %217

52:                                               ; preds = %13
  %53 = getelementptr inbounds i8, ptr %0, i64 152
  %54 = tail call noundef ptr @_ZNSt5arrayIN6ruckig7ProfileELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(3456) %53) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  store ptr %54, ptr %5, align 8, !tbaa !35
  tail call void @_ZN6ruckig7Profile12set_boundaryERKS0_(ptr noundef nonnull align 8 dereferenceable(572) %54, ptr noundef nonnull align 8 dereferenceable(572) %1)
  %55 = getelementptr inbounds i8, ptr %0, i64 16
  %56 = load double, ptr %55, align 8, !tbaa !37
  %57 = tail call noundef double @_ZSt3absd(double noundef %56)
  %58 = fcmp olt double %57, 0x3CB0000000000000
  br i1 %58, label %59, label %110

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

64:                                               ; preds = %59
  %65 = getelementptr inbounds i8, ptr %0, i64 72
  %66 = load double, ptr %65, align 8, !tbaa !39
  %67 = fcmp ult double %66, 0.000000e+00
  %68 = getelementptr inbounds i8, ptr %0, i64 32
  %69 = getelementptr inbounds i8, ptr %0, i64 40
  %.val = load double, ptr %69, align 8
  %.val74 = load double, ptr %68, align 8
  %70 = select i1 %67, double %.val, double %.val74
  %71 = select i1 %67, double %.val74, double %.val
  %.val77 = load double, ptr %14, align 8
  %.val78 = load double, ptr %10, align 8
  %72 = select i1 %67, double %.val77, double %.val78
  %73 = select i1 %67, double %.val78, double %.val77
  %74 = load double, ptr %6, align 8
  %75 = fneg double %74
  %76 = select i1 %67, double %75, double %74
  %77 = load double, ptr %0, align 8, !tbaa !33
  %78 = tail call noundef double @_ZSt3absd(double noundef %77)
  %79 = fcmp olt double %78, 0x3CB0000000000000
  br i1 %79, label %80, label %90

80:                                               ; preds = %64
  %81 = getelementptr inbounds i8, ptr %0, i64 8
  %82 = load double, ptr %81, align 8, !tbaa !34
  %83 = tail call noundef double @_ZSt3absd(double noundef %82)
  %84 = fcmp olt double %83, 0x3CB0000000000000
  br i1 %84, label %85, label %90

85:                                               ; preds = %80
  %86 = load double, ptr %65, align 8, !tbaa !39
  %87 = tail call noundef double @_ZSt3absd(double noundef %86)
  %88 = fcmp olt double %87, 0x3CB0000000000000
  br i1 %88, label %89, label %90

89:                                               ; preds = %85
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %70, double noundef %71, double noundef %72, double noundef %73, double noundef %76, i1 noundef zeroext true)
  br label %107

90:                                               ; preds = %85, %80, %64
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %70, double noundef %71, double noundef %72, double noundef %73, double noundef %76, i1 noundef zeroext true)
  %91 = load ptr, ptr %5, align 8, !tbaa !35
  %92 = icmp ugt ptr %91, %54
  br i1 %92, label %.thread, label %93

93:                                               ; preds = %90
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %70, double noundef %71, double noundef %72, double noundef %73, double noundef %76, i1 noundef zeroext true)
  %94 = load ptr, ptr %5, align 8, !tbaa !35
  %95 = icmp ugt ptr %94, %54
  br i1 %95, label %.thread, label %96

96:                                               ; preds = %93
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %70, double noundef %71, double noundef %72, double noundef %73, double noundef %76, i1 noundef zeroext true)
  %97 = load ptr, ptr %5, align 8, !tbaa !35
  %98 = icmp ugt ptr %97, %54
  br i1 %98, label %.thread, label %99

99:                                               ; preds = %96
  %100 = fneg double %76
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %71, double noundef %70, double noundef %73, double noundef %72, double noundef %100, i1 noundef zeroext true)
  %101 = load ptr, ptr %5, align 8, !tbaa !35
  %102 = icmp ugt ptr %101, %54
  br i1 %102, label %.thread, label %103

103:                                              ; preds = %99
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %71, double noundef %70, double noundef %73, double noundef %72, double noundef %100, i1 noundef zeroext true)
  %104 = load ptr, ptr %5, align 8, !tbaa !35
  %105 = icmp ugt ptr %104, %54
  br i1 %105, label %.thread, label %106

106:                                              ; preds = %103
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %71, double noundef %70, double noundef %73, double noundef %72, double noundef %100, i1 noundef zeroext true)
  br label %107

107:                                              ; preds = %89, %106
  %108 = load ptr, ptr %5, align 8
  %109 = icmp eq ptr %108, %54
  br i1 %109, label %146, label %.thread

110:                                              ; preds = %59, %52
  %111 = getelementptr inbounds i8, ptr %0, i64 32
  %112 = load double, ptr %111, align 8, !tbaa !13
  %113 = getelementptr inbounds i8, ptr %0, i64 40
  %114 = load double, ptr %113, align 8, !tbaa !14
  %115 = load double, ptr %10, align 8, !tbaa !11
  %116 = load double, ptr %14, align 8, !tbaa !12
  %117 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %112, double noundef %114, double noundef %115, double noundef %116, double noundef %117, i1 noundef zeroext false)
  %118 = load double, ptr %113, align 8, !tbaa !14
  %119 = load double, ptr %111, align 8, !tbaa !13
  %120 = load double, ptr %14, align 8, !tbaa !12
  %121 = load double, ptr %10, align 8, !tbaa !11
  %122 = load double, ptr %6, align 8, !tbaa !5
  %123 = fneg double %122
  call void @_ZNK6ruckig23PositionThirdOrderStep123time_all_none_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %118, double noundef %119, double noundef %120, double noundef %121, double noundef %123, i1 noundef zeroext false)
  %124 = load double, ptr %111, align 8, !tbaa !13
  %125 = load double, ptr %113, align 8, !tbaa !14
  %126 = load double, ptr %10, align 8, !tbaa !11
  %127 = load double, ptr %14, align 8, !tbaa !12
  %128 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %124, double noundef %125, double noundef %126, double noundef %127, double noundef %128, i1 noundef zeroext false)
  %129 = load double, ptr %113, align 8, !tbaa !14
  %130 = load double, ptr %111, align 8, !tbaa !13
  %131 = load double, ptr %14, align 8, !tbaa !12
  %132 = load double, ptr %10, align 8, !tbaa !11
  %133 = load double, ptr %6, align 8, !tbaa !5
  %134 = fneg double %133
  call void @_ZNK6ruckig23PositionThirdOrderStep114time_acc0_acc1ERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %129, double noundef %130, double noundef %131, double noundef %132, double noundef %134, i1 noundef zeroext false)
  %135 = load double, ptr %111, align 8, !tbaa !13
  %136 = load double, ptr %113, align 8, !tbaa !14
  %137 = load double, ptr %10, align 8, !tbaa !11
  %138 = load double, ptr %14, align 8, !tbaa !12
  %139 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %135, double noundef %136, double noundef %137, double noundef %138, double noundef %139, i1 noundef zeroext false)
  %140 = load double, ptr %113, align 8, !tbaa !14
  %141 = load double, ptr %111, align 8, !tbaa !13
  %142 = load double, ptr %14, align 8, !tbaa !12
  %143 = load double, ptr %10, align 8, !tbaa !11
  %144 = load double, ptr %6, align 8, !tbaa !5
  %145 = fneg double %144
  call void @_ZNK6ruckig23PositionThirdOrderStep112time_all_velERPNS_7ProfileEdddddb(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %140, double noundef %141, double noundef %142, double noundef %143, double noundef %145, i1 noundef zeroext false)
  %.old = load ptr, ptr %5, align 8, !tbaa !35
  %.old70 = icmp eq ptr %.old, %54
  br i1 %.old70, label %146, label %.thread

146:                                              ; preds = %107, %110
  %147 = getelementptr inbounds i8, ptr %0, i64 32
  %148 = load double, ptr %147, align 8, !tbaa !13
  %149 = getelementptr inbounds i8, ptr %0, i64 40
  %150 = load double, ptr %149, align 8, !tbaa !14
  %151 = load double, ptr %10, align 8, !tbaa !11
  %152 = load double, ptr %14, align 8, !tbaa !12
  %153 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %148, double noundef %150, double noundef %151, double noundef %152, double noundef %153)
  %154 = load ptr, ptr %5, align 8, !tbaa !35
  %155 = icmp ugt ptr %154, %54
  br i1 %155, label %.thread, label %156

156:                                              ; preds = %146
  %157 = load double, ptr %149, align 8, !tbaa !14
  %158 = load double, ptr %147, align 8, !tbaa !13
  %159 = load double, ptr %14, align 8, !tbaa !12
  %160 = load double, ptr %10, align 8, !tbaa !11
  %161 = load double, ptr %6, align 8, !tbaa !5
  %162 = fneg double %161
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_none_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %157, double noundef %158, double noundef %159, double noundef %160, double noundef %162)
  %163 = load ptr, ptr %5, align 8, !tbaa !35
  %164 = icmp ugt ptr %163, %54
  br i1 %164, label %.thread, label %165

165:                                              ; preds = %156
  %166 = load double, ptr %147, align 8, !tbaa !13
  %167 = load double, ptr %149, align 8, !tbaa !14
  %168 = load double, ptr %10, align 8, !tbaa !11
  %169 = load double, ptr %14, align 8, !tbaa !12
  %170 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %166, double noundef %167, double noundef %168, double noundef %169, double noundef %170)
  %171 = load ptr, ptr %5, align 8, !tbaa !35
  %172 = icmp ugt ptr %171, %54
  br i1 %172, label %.thread, label %173

173:                                              ; preds = %165
  %174 = load double, ptr %149, align 8, !tbaa !14
  %175 = load double, ptr %147, align 8, !tbaa !13
  %176 = load double, ptr %14, align 8, !tbaa !12
  %177 = load double, ptr %10, align 8, !tbaa !11
  %178 = load double, ptr %6, align 8, !tbaa !5
  %179 = fneg double %178
  call void @_ZNK6ruckig23PositionThirdOrderStep118time_acc0_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %174, double noundef %175, double noundef %176, double noundef %177, double noundef %179)
  %180 = load ptr, ptr %5, align 8, !tbaa !35
  %181 = icmp ugt ptr %180, %54
  br i1 %181, label %.thread, label %182

182:                                              ; preds = %173
  %183 = load double, ptr %147, align 8, !tbaa !13
  %184 = load double, ptr %149, align 8, !tbaa !14
  %185 = load double, ptr %10, align 8, !tbaa !11
  %186 = load double, ptr %14, align 8, !tbaa !12
  %187 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %183, double noundef %184, double noundef %185, double noundef %186, double noundef %187)
  %188 = load ptr, ptr %5, align 8, !tbaa !35
  %189 = icmp ugt ptr %188, %54
  br i1 %189, label %.thread, label %190

190:                                              ; preds = %182
  %191 = load double, ptr %149, align 8, !tbaa !14
  %192 = load double, ptr %147, align 8, !tbaa !13
  %193 = load double, ptr %14, align 8, !tbaa !12
  %194 = load double, ptr %10, align 8, !tbaa !11
  %195 = load double, ptr %6, align 8, !tbaa !5
  %196 = fneg double %195
  call void @_ZNK6ruckig23PositionThirdOrderStep117time_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %191, double noundef %192, double noundef %193, double noundef %194, double noundef %196)
  %197 = load ptr, ptr %5, align 8, !tbaa !35
  %198 = icmp ugt ptr %197, %54
  br i1 %198, label %.thread, label %199

199:                                              ; preds = %190
  %200 = load double, ptr %147, align 8, !tbaa !13
  %201 = load double, ptr %149, align 8, !tbaa !14
  %202 = load double, ptr %10, align 8, !tbaa !11
  %203 = load double, ptr %14, align 8, !tbaa !12
  %204 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %200, double noundef %201, double noundef %202, double noundef %203, double noundef %204)
  %205 = load ptr, ptr %5, align 8, !tbaa !35
  %206 = icmp ugt ptr %205, %54
  br i1 %206, label %.thread, label %207

207:                                              ; preds = %199
  %208 = load double, ptr %149, align 8, !tbaa !14
  %209 = load double, ptr %147, align 8, !tbaa !13
  %210 = load double, ptr %14, align 8, !tbaa !12
  %211 = load double, ptr %10, align 8, !tbaa !11
  %212 = load double, ptr %6, align 8, !tbaa !5
  %213 = fneg double %212
  call void @_ZNK6ruckig23PositionThirdOrderStep122time_acc1_vel_two_stepERPNS_7ProfileEddddd(ptr noundef nonnull align 8 dereferenceable(3608) %0, ptr noundef nonnull align 8 dereferenceable(8) %5, double noundef %208, double noundef %209, double noundef %210, double noundef %211, double noundef %213)
  %.pre = load ptr, ptr %5, align 8, !tbaa !35
  br label %.thread

.thread:                                          ; preds = %103, %99, %96, %93, %90, %107, %110, %207, %199, %190, %182, %173, %165, %156, %146
  %214 = phi ptr [ %104, %103 ], [ %101, %99 ], [ %97, %96 ], [ %94, %93 ], [ %91, %90 ], [ %108, %107 ], [ %.old, %110 ], [ %.pre, %207 ], [ %205, %199 ], [ %197, %190 ], [ %188, %182 ], [ %180, %173 ], [ %171, %165 ], [ %163, %156 ], [ %154, %146 ]
  %215 = call noundef i64 @_ZSt8distanceIPN6ruckig7ProfileEENSt15iterator_traitsIT_E15difference_typeES4_S4_(ptr noundef nonnull %54, ptr noundef %214)
  %216 = call noundef zeroext i1 @_ZN6ruckig5Block15calculate_blockILm6ELb1EEEbRS0_RSt5arrayINS_7ProfileEXT_EEm(ptr noundef nonnull align 8 dereferenceable(1784) %2, ptr noundef nonnull align 8 dereferenceable(3456) %53, i64 noundef %215)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  br label %217

217:                                              ; preds = %47, %42, %17, %.thread
  %.2 = phi i1 [ %216, %.thread ], [ false, %17 ], [ true, %42 ], [ true, %47 ]
  ret i1 %.2
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(600) ptr @_ZNSt8optionalIN6ruckig5Block8IntervalEEaSIS2_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS3_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES6_ISt6__and_IJSt9is_scalarIS2_ES7_IS2_NSt5decayISA_E4typeEEEEESt16is_constructibleIS2_JSA_EESt13is_assignableIRS2_SA_EEERS3_E4typeEOSA_(ptr noundef nonnull align 8 dereferenceable(600), ptr noundef nonnull align 8 dereferenceable(592)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIN6ruckig7ProfileELm6EE5beginEv(ptr noundef nonnull align 8 dereferenceable(3456)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6ruckig5Block15calculate_blockILm6ELb1EEEbRS0_RSt5arrayINS_7ProfileEXT_EEm(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(3456), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt8distanceIPN6ruckig7ProfileEENSt15iterator_traitsIT_E15difference_typeES4_S4_(ptr noundef, ptr noundef) local_unnamed_addr #5

attributes #0 = { 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 #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 nofree nosync nounwind willreturn memory(none) 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 = { nounwind }
attributes #7 = { nounwind willreturn memory(none) }

!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, !7, i64 64}
!6 = !{!"_ZTSN6ruckig23PositionThirdOrderStep1E", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !10, i64 152}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt5arrayIN6ruckig7ProfileELm6EE", !8, i64 0}
!11 = !{!6, !7, i64 48}
!12 = !{!6, !7, i64 56}
!13 = !{!6, !7, i64 32}
!14 = !{!6, !7, i64 40}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !7, i64 360}
!17 = !{!"_ZTSN6ruckig7ProfileE", !18, i64 0, !18, i64 56, !18, i64 112, !19, i64 168, !19, i64 232, !19, i64 296, !20, i64 360, !20, i64 448, !7, i64 536, !7, i64 544, !7, i64 552, !22, i64 560, !23, i64 564, !24, i64 568}
!18 = !{!"_ZTSSt5arrayIdLm7EE", !8, i64 0}
!19 = !{!"_ZTSSt5arrayIdLm8EE", !8, i64 0}
!20 = !{!"_ZTSN6ruckig12BrakeProfileE", !7, i64 0, !21, i64 8, !21, i64 24, !21, i64 40, !21, i64 56, !21, i64 72}
!21 = !{!"_ZTSSt5arrayIdLm2EE", !8, i64 0}
!22 = !{!"_ZTSN6ruckig7Profile13ReachedLimitsE", !8, i64 0}
!23 = !{!"_ZTSN6ruckig7Profile9DirectionE", !8, i64 0}
!24 = !{!"_ZTSN6ruckig7Profile12ControlSignsE", !8, i64 0}
!25 = !{!17, !7, i64 448}
!26 = !{!27, !7, i64 576}
!27 = !{!"_ZTSN6ruckig5BlockE", !17, i64 0, !7, i64 576, !28, i64 584, !28, i64 1184}
!28 = !{!"_ZTSSt8optionalIN6ruckig5Block8IntervalEE", !29, i64 0}
!29 = !{!"_ZTSSt14_Optional_baseIN6ruckig5Block8IntervalELb1ELb1EE", !30, i64 0}
!30 = !{!"_ZTSSt17_Optional_payloadIN6ruckig5Block8IntervalELb1ELb1ELb1EE", !31, i64 0}
!31 = !{!"_ZTSSt22_Optional_payload_baseIN6ruckig5Block8IntervalEE", !8, i64 0, !32, i64 592}
!32 = !{!"bool", !8, i64 0}
!33 = !{!6, !7, i64 0}
!34 = !{!6, !7, i64 8}
!35 = !{!36, !36, i64 0}
!36 = !{!"any pointer", !8, i64 0}
!37 = !{!6, !7, i64 16}
!38 = !{!6, !7, i64 24}
!39 = !{!6, !7, i64 72}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass,TailCallElimPass