; LLVM IR from simbody/simbody :: SimTKmath/Optimizers/src/IpOpt (IpBacktrackingLineSearch)

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

%"class.SimTKIpopt::SmartPtr.40" = type { ptr }
%"class.SimTKIpopt::SmartPtr.10" = type { ptr }
%"class.SimTKIpopt::SmartPtr.51" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.15" = type { i8 }
%"class.SimTKIpopt::BacktrackingLineSearch" = type { %"class.SimTKIpopt::LineSearch.base", double, i32, double, i32, i8, i8, i8, double, double, double, i32, i32, i8, i8, i32, i32, double, %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.10", double, %"class.SimTKIpopt::SmartPtr.10", i32, i8, i8, i8, i8, i32, i32, i8, %"class.SimTKIpopt::SmartPtr.11", %"class.SimTKIpopt::SmartPtr.12", %"class.SimTKIpopt::SmartPtr.13" }
%"class.SimTKIpopt::LineSearch.base" = type { %"class.SimTKIpopt::AlgorithmStrategyObject.base" }
%"class.SimTKIpopt::AlgorithmStrategyObject.base" = type <{ %"class.SimTKIpopt::ReferencedObject.base", [4 x i8], %"class.SimTKIpopt::SmartPtr.6", %"class.SimTKIpopt::SmartPtr.7", %"class.SimTKIpopt::SmartPtr.8", %"class.SimTKIpopt::SmartPtr.9", i8 }>
%"class.SimTKIpopt::ReferencedObject.base" = type <{ ptr, i32 }>
%"class.SimTKIpopt::SmartPtr.6" = type { ptr }
%"class.SimTKIpopt::SmartPtr.7" = type { ptr }
%"class.SimTKIpopt::SmartPtr.8" = type { ptr }
%"class.SimTKIpopt::SmartPtr.9" = type { ptr }
%"class.SimTKIpopt::SmartPtr.11" = type { ptr }
%"class.SimTKIpopt::SmartPtr.12" = type { ptr }
%"class.SimTKIpopt::SmartPtr.13" = type { ptr }

@.str.65 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZTIN10SimTKIpopt14IpoptExceptionE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [109 x i8], align 1
@_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.75 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZTIN10SimTKIpopt18RESTORATION_FAILEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.81 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [120 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #1

declare ptr @__cxa_begin_catch(ptr)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_16RestorationPhaseEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch24FindAcceptableTrialPointEv(ptr noundef nonnull align 8 dereferenceable(224) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca double, align 8
  %4 = alloca %"class.SimTKIpopt::SmartPtr.40", align 8
  %5 = alloca i8, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.SimTKIpopt::SmartPtr.40", align 8
  %9 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %10 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %11 = alloca i1, align 1
  %12 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %13 = alloca i1, align 1
  %14 = alloca i1, align 1
  %15 = alloca i1, align 1
  %16 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %17 = alloca i1, align 1
  %18 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %19 = alloca i1, align 1
  %20 = alloca i1, align 1
  %21 = alloca i1, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca i8, align 1
  %28 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %29 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %30 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %31 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %32 = alloca ptr, align 8
  %33 = alloca double, align 8
  %34 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %35 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %36 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %37 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.15", align 1
  %44 = alloca i8, align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.15", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.15", align 1
  %49 = alloca i1, align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.15", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator.15", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.15", align 1
  %56 = alloca i1, align 1
  %57 = alloca i8, align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator.15", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.15", align 1
  %62 = alloca i1, align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator.15", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator.15", align 1
  %67 = alloca i1, align 1
  %68 = alloca i8, align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.15", align 1
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::allocator.15", align 1
  %73 = alloca i1, align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.15", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.15", align 1
  %78 = alloca i1, align 1
  %79 = alloca double, align 8
  %80 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %81 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %82 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %83 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %84 = load ptr, ptr %2, align 8
  %85 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  %86 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  %87 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %86)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %85, i32 noundef 5, i32 noundef 8, ptr noundef @.str.65, i32 noundef %87)
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  %88 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  %89 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %88)
  store double %89, ptr %3, align 8, !tbaa !9
  %90 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 20
  %91 = load double, ptr %90, align 8, !tbaa !11
  %92 = load double, ptr %3, align 8, !tbaa !9
  %93 = fcmp une double %91, %92
  br i1 %93, label %94, label %104

94:                                               ; preds = %1
  %95 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %95, i32 noundef 5, i32 noundef 8, ptr noundef @.str.66)
  %96 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  store i8 0, ptr %96, align 1, !tbaa !27
  %97 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 18
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef null)
  %99 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 19
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef null)
  %101 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 15
  store i32 0, ptr %101, align 4, !tbaa !28
  %102 = load double, ptr %3, align 8, !tbaa !9
  %103 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 20
  store double %102, ptr %103, align 8, !tbaa !11
  br label %104

104:                                              ; preds = %94, %1
  %105 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  %106 = call noundef zeroext i1 @_ZNK10SimTKIpopt25IpoptCalculatedQuantities15IsSquareProblemEv(ptr noundef nonnull align 8 dereferenceable(2025) %105)
  br i1 %106, label %107, label %110

107:                                              ; preds = %104
  %108 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  store i8 1, ptr %108, align 2, !tbaa !29
  %109 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 8
  store double 0.000000e+00, ptr %109, align 8, !tbaa !30
  br label %110

110:                                              ; preds = %107, %104
  %111 = call noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
  br i1 %111, label %112, label %114

112:                                              ; preds = %110
  %113 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %113, i32 noundef 5, i32 noundef 8, ptr noundef @.str.67)
  call void @_ZN10SimTKIpopt22BacktrackingLineSearch20StoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
  br label %114

114:                                              ; preds = %112, %110
  %115 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 25
  store i8 0, ptr %115, align 2, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #8
  store i8 0, ptr %5, align 1, !tbaa !32
  %116 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 23
  %117 = load i8, ptr %116, align 4, !tbaa !33, !range !34, !noundef !35
  %118 = trunc i8 %117 to i1
  br i1 %118, label %119, label %121

119:                                              ; preds = %114
  store i8 1, ptr %5, align 1, !tbaa !32
  %120 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 23
  store i8 0, ptr %120, align 4, !tbaa !33
  br label %158

121:                                              ; preds = %114
  %122 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 30
  %123 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %122)
          to label %124 unwind label %140

124:                                              ; preds = %121
  %125 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  %126 = load i8, ptr %125, align 1, !tbaa !27, !range !34, !noundef !35
  %127 = trunc i8 %126 to i1
  %128 = load ptr, ptr %123, align 8, !tbaa !36
  %129 = getelementptr inbounds ptr, ptr %128, i64 4
  %130 = load ptr, ptr %129, align 8
  invoke void %130(ptr noundef nonnull align 8 dereferenceable(49) %123, i1 noundef zeroext %127)
          to label %131 unwind label %140

131:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %132 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %133 unwind label %144

133:                                              ; preds = %131
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %9, ptr noundef nonnull align 8 dereferenceable(864) %132)
          to label %134 unwind label %144

134:                                              ; preds = %133
  %135 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %136 unwind label %148

136:                                              ; preds = %134
  invoke void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.40") align 8 %8, ptr noundef nonnull align 8 dereferenceable(280) %135)
          to label %137 unwind label %148

137:                                              ; preds = %136
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %139 unwind label %152

139:                                              ; preds = %137
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %158

140:                                              ; preds = %124, %121
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %6, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %7, align 4
  br label %1038

144:                                              ; preds = %133, %131
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %6, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %7, align 4
  br label %157

148:                                              ; preds = %136, %134
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %6, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %7, align 4
  br label %156

152:                                              ; preds = %137
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %6, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %7, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br label %156

156:                                              ; preds = %152, %148
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br label %157

157:                                              ; preds = %156, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %1038

158:                                              ; preds = %139, %119
  %159 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 13
  %160 = load i8, ptr %159, align 8, !tbaa !38, !range !34, !noundef !35
  %161 = trunc i8 %160 to i1
  br i1 %161, label %162, label %164

162:                                              ; preds = %158
  store i8 1, ptr %5, align 1, !tbaa !32
  %163 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 13
  store i8 0, ptr %163, align 8, !tbaa !38
  br label %164

164:                                              ; preds = %162, %158
  %165 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  %166 = load i8, ptr %165, align 2, !tbaa !29, !range !34, !noundef !35
  %167 = trunc i8 %166 to i1
  store i1 false, ptr %11, align 1
  store i1 false, ptr %13, align 1
  store i1 false, ptr %14, align 1
  store i1 false, ptr %15, align 1
  store i1 false, ptr %17, align 1
  store i1 false, ptr %19, align 1
  store i1 false, ptr %20, align 1
  store i1 false, ptr %21, align 1
  br i1 %167, label %168, label %192

168:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store i1 true, ptr %11, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  store i1 true, ptr %13, align 1
  %169 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %170 unwind label %219

170:                                              ; preds = %168
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %12, ptr noundef nonnull align 8 dereferenceable(864) %169)
          to label %171 unwind label %219

171:                                              ; preds = %170
  store i1 true, ptr %14, align 1
  %172 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %173 unwind label %223

173:                                              ; preds = %171
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %10, ptr noundef nonnull align 8 dereferenceable(280) %172)
          to label %174 unwind label %223

174:                                              ; preds = %173
  store i1 true, ptr %15, align 1
  %175 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %176 unwind label %227

176:                                              ; preds = %174
  %177 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %175)
          to label %178 unwind label %227

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  store i1 true, ptr %17, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store i1 true, ptr %19, align 1
  %179 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %180 unwind label %231

180:                                              ; preds = %178
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %18, ptr noundef nonnull align 8 dereferenceable(864) %179)
          to label %181 unwind label %231

181:                                              ; preds = %180
  store i1 true, ptr %20, align 1
  %182 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %183 unwind label %235

183:                                              ; preds = %181
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %16, ptr noundef nonnull align 8 dereferenceable(280) %182)
          to label %184 unwind label %235

184:                                              ; preds = %183
  store i1 true, ptr %21, align 1
  %185 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %186 unwind label %239

186:                                              ; preds = %184
  %187 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %185)
          to label %188 unwind label %239

188:                                              ; preds = %186
  %189 = invoke noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %177, double noundef %187)
          to label %190 unwind label %239

190:                                              ; preds = %188
  %191 = fcmp ogt double %189, 1.000000e+08
  br label %192

192:                                              ; preds = %190, %164
  %193 = phi i1 [ false, %164 ], [ %191, %190 ]
  %194 = load i1, ptr %21, align 1
  br i1 %194, label %195, label %196

195:                                              ; preds = %192
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %196

196:                                              ; preds = %195, %192
  %197 = load i1, ptr %20, align 1
  br i1 %197, label %198, label %199

198:                                              ; preds = %196
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %199

199:                                              ; preds = %198, %196
  %200 = load i1, ptr %19, align 1
  br i1 %200, label %201, label %202

201:                                              ; preds = %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %202

202:                                              ; preds = %201, %199
  %203 = load i1, ptr %17, align 1
  br i1 %203, label %204, label %205

204:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %205

205:                                              ; preds = %204, %202
  %206 = load i1, ptr %15, align 1
  br i1 %206, label %207, label %208

207:                                              ; preds = %205
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %208

208:                                              ; preds = %207, %205
  %209 = load i1, ptr %14, align 1
  br i1 %209, label %210, label %211

210:                                              ; preds = %208
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %211

211:                                              ; preds = %210, %208
  %212 = load i1, ptr %13, align 1
  br i1 %212, label %213, label %214

213:                                              ; preds = %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %214

214:                                              ; preds = %213, %211
  %215 = load i1, ptr %11, align 1
  br i1 %215, label %216, label %217

216:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %217

217:                                              ; preds = %216, %214
  br i1 %193, label %218, label %272

218:                                              ; preds = %217
  store i8 1, ptr %5, align 1, !tbaa !32
  br label %272

219:                                              ; preds = %170, %168
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %6, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %7, align 4
  br label %265

223:                                              ; preds = %173, %171
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %6, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %7, align 4
  br label %261

227:                                              ; preds = %176, %174
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %6, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %7, align 4
  br label %257

231:                                              ; preds = %180, %178
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %6, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %7, align 4
  br label %250

235:                                              ; preds = %183, %181
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %6, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %7, align 4
  br label %246

239:                                              ; preds = %188, %186, %184
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %6, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %7, align 4
  %243 = load i1, ptr %21, align 1
  br i1 %243, label %244, label %245

244:                                              ; preds = %239
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %245

245:                                              ; preds = %244, %239
  br label %246

246:                                              ; preds = %245, %235
  %247 = load i1, ptr %20, align 1
  br i1 %247, label %248, label %249

248:                                              ; preds = %246
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %249

249:                                              ; preds = %248, %246
  br label %250

250:                                              ; preds = %249, %231
  %251 = load i1, ptr %19, align 1
  br i1 %251, label %252, label %253

252:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %253

253:                                              ; preds = %252, %250
  %254 = load i1, ptr %17, align 1
  br i1 %254, label %255, label %256

255:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %256

256:                                              ; preds = %255, %253
  br label %257

257:                                              ; preds = %256, %227
  %258 = load i1, ptr %15, align 1
  br i1 %258, label %259, label %260

259:                                              ; preds = %257
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %260

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

261:                                              ; preds = %260, %223
  %262 = load i1, ptr %14, align 1
  br i1 %262, label %263, label %264

263:                                              ; preds = %261
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %264

264:                                              ; preds = %263, %261
  br label %265

265:                                              ; preds = %264, %219
  %266 = load i1, ptr %13, align 1
  br i1 %266, label %267, label %268

267:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %268

268:                                              ; preds = %267, %265
  %269 = load i1, ptr %11, align 1
  br i1 %269, label %270, label %271

270:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %271

271:                                              ; preds = %270, %268
  br label %1038

272:                                              ; preds = %218, %217
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #8
  store i8 0, ptr %22, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  store i8 0, ptr %23, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #8
  store i8 0, ptr %24, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  %273 = load i8, ptr %5, align 1, !tbaa !32, !range !34, !noundef !35
  %274 = trunc i8 %273 to i1
  br i1 %274, label %278, label %275

275:                                              ; preds = %272
  %276 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch14DetectTinyStepEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
          to label %277 unwind label %292

277:                                              ; preds = %275
  br label %278

278:                                              ; preds = %277, %272
  %279 = phi i1 [ false, %272 ], [ %276, %277 ]
  %280 = zext i1 %279 to i8
  store i8 %280, ptr %27, align 1, !tbaa !32
  %281 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  %282 = load i8, ptr %281, align 1, !tbaa !27, !range !34, !noundef !35
  %283 = trunc i8 %282 to i1
  br i1 %283, label %284, label %296

284:                                              ; preds = %278
  %285 = load i8, ptr %5, align 1, !tbaa !32, !range !34, !noundef !35
  %286 = trunc i8 %285 to i1
  br i1 %286, label %290, label %287

287:                                              ; preds = %284
  %288 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %289 = trunc i8 %288 to i1
  br i1 %289, label %290, label %296

290:                                              ; preds = %287, %284
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %84, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %291 unwind label %292

291:                                              ; preds = %290
  store i8 0, ptr %5, align 1, !tbaa !32
  store i8 0, ptr %27, align 1, !tbaa !32
  br label %296

292:                                              ; preds = %841, %838, %835, %833, %832, %830, %829, %827, %825, %823, %751, %749, %747, %745, %713, %688, %683, %680, %645, %642, %641, %639, %625, %623, %445, %443, %430, %428, %427, %425, %420, %418, %341, %339, %337, %335, %333, %331, %329, %324, %290, %275
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %6, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %7, align 4
  br label %1037

296:                                              ; preds = %291, %287, %278
  %297 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 12
  %298 = load i32, ptr %297, align 4, !tbaa !40
  %299 = icmp sgt i32 %298, 0
  br i1 %299, label %300, label %326

300:                                              ; preds = %296
  %301 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  %302 = load i8, ptr %301, align 1, !tbaa !27, !range !34, !noundef !35
  %303 = trunc i8 %302 to i1
  br i1 %303, label %326, label %304

304:                                              ; preds = %300
  %305 = load i8, ptr %5, align 1, !tbaa !32, !range !34, !noundef !35
  %306 = trunc i8 %305 to i1
  br i1 %306, label %326, label %307

307:                                              ; preds = %304
  %308 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %309 = trunc i8 %308 to i1
  br i1 %309, label %326, label %310

310:                                              ; preds = %307
  %311 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  %312 = load i8, ptr %311, align 1, !tbaa !41, !range !34, !noundef !35
  %313 = trunc i8 %312 to i1
  br i1 %313, label %326, label %314

314:                                              ; preds = %310
  %315 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  %316 = load i8, ptr %315, align 2, !tbaa !29, !range !34, !noundef !35
  %317 = trunc i8 %316 to i1
  br i1 %317, label %326, label %318

318:                                              ; preds = %314
  %319 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 15
  %320 = load i32, ptr %319, align 4, !tbaa !28
  %321 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 12
  %322 = load i32, ptr %321, align 4, !tbaa !40
  %323 = icmp sge i32 %320, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %318
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch13StartWatchDogEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
          to label %325 unwind label %292

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325, %318, %314, %310, %307, %304, %300, %296
  %327 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %328 = trunc i8 %327 to i1
  br i1 %328, label %329, label %508

329:                                              ; preds = %326
  %330 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %331 unwind label %292

331:                                              ; preds = %329
  %332 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %333 unwind label %292

333:                                              ; preds = %331
  %334 = invoke noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %332)
          to label %335 unwind label %292

335:                                              ; preds = %333
  %336 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29curr_primal_frac_to_the_boundEd(ptr noundef nonnull align 8 dereferenceable(2025) %330, double noundef %334)
          to label %337 unwind label %292

337:                                              ; preds = %335
  store double %336, ptr %26, align 8, !tbaa !9
  %338 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %339 unwind label %292

339:                                              ; preds = %337
  %340 = load double, ptr %26, align 8, !tbaa !9
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %338, i32 noundef 5, i32 noundef 8, ptr noundef @.str.68, double noundef %340)
          to label %341 unwind label %292

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %343 unwind label %292

343:                                              ; preds = %341
  %344 = load double, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %345 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %346 unwind label %370

346:                                              ; preds = %343
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %29, ptr noundef nonnull align 8 dereferenceable(864) %345)
          to label %347 unwind label %370

347:                                              ; preds = %346
  %348 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %349 unwind label %374

349:                                              ; preds = %347
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %28, ptr noundef nonnull align 8 dereferenceable(280) %348)
          to label %350 unwind label %374

350:                                              ; preds = %349
  %351 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %352 unwind label %378

352:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %353 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %354 unwind label %382

354:                                              ; preds = %352
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %31, ptr noundef nonnull align 8 dereferenceable(864) %353)
          to label %355 unwind label %382

355:                                              ; preds = %354
  %356 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %357 unwind label %386

357:                                              ; preds = %355
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %30, ptr noundef nonnull align 8 dereferenceable(280) %356)
          to label %358 unwind label %386

358:                                              ; preds = %357
  %359 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %360 unwind label %390

360:                                              ; preds = %358
  invoke void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864) %342, double noundef %344, ptr noundef nonnull align 8 dereferenceable(205) %351, ptr noundef nonnull align 8 dereferenceable(205) %359)
          to label %361 unwind label %390

361:                                              ; preds = %360
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %362 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %363 unwind label %399

363:                                              ; preds = %361
  %364 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025) %362)
          to label %365 unwind label %399

365:                                              ; preds = %363
  %366 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %367 unwind label %399

367:                                              ; preds = %365
  %368 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %366)
          to label %369 unwind label %399

369:                                              ; preds = %367
  br label %415

370:                                              ; preds = %346, %343
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %6, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %7, align 4
  br label %398

374:                                              ; preds = %349, %347
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %6, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %7, align 4
  br label %397

378:                                              ; preds = %350
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %6, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %7, align 4
  br label %396

382:                                              ; preds = %354, %352
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %6, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %7, align 4
  br label %395

386:                                              ; preds = %357, %355
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %6, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %7, align 4
  br label %394

390:                                              ; preds = %360, %358
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %6, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %7, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br label %394

394:                                              ; preds = %390, %386
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %395

395:                                              ; preds = %394, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %396

396:                                              ; preds = %395, %378
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %397

397:                                              ; preds = %396, %374
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %398

398:                                              ; preds = %397, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1037

399:                                              ; preds = %367, %365, %363, %361
  %400 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %6, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %7, align 4
  br label %403

403:                                              ; preds = %399
  %404 = load i32, ptr %7, align 4
  %405 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE) #8
  %406 = icmp eq i32 %404, %405
  br i1 %406, label %407, label %1037

407:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %408 = load ptr, ptr %6, align 8
  %409 = call ptr @__cxa_begin_catch(ptr %408) #8
  store ptr %409, ptr %32, align 8
  %410 = load ptr, ptr %32, align 8, !tbaa !5
  %411 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %412 unwind label %432

412:                                              ; preds = %407
  invoke void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112) %410, ptr noundef nonnull align 8 dereferenceable(40) %411, i32 noundef 5)
          to label %413 unwind label %432

413:                                              ; preds = %412
  store i8 0, ptr %27, align 1, !tbaa !32
  invoke void @__cxa_end_catch()
          to label %414 unwind label %436

414:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %415

415:                                              ; preds = %414, %369
  %416 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %417 = trunc i8 %416 to i1
  br i1 %417, label %418, label %443

418:                                              ; preds = %415
  %419 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %420 unwind label %292

420:                                              ; preds = %418
  invoke void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %419, i32 noundef 0)
          to label %421 unwind label %292

421:                                              ; preds = %420
  %422 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 29
  %423 = load i8, ptr %422, align 8, !tbaa !42, !range !34, !noundef !35
  %424 = trunc i8 %423 to i1
  br i1 %424, label %425, label %442

425:                                              ; preds = %421
  %426 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %427 unwind label %292

427:                                              ; preds = %425
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %426, i8 noundef signext 84)
          to label %428 unwind label %292

428:                                              ; preds = %427
  %429 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %430 unwind label %292

430:                                              ; preds = %428
  invoke void @_ZN10SimTKIpopt9IpoptData18Set_tiny_step_flagEb(ptr noundef nonnull align 8 dereferenceable(864) %429, i1 noundef zeroext true)
          to label %431 unwind label %292

431:                                              ; preds = %430
  br label %442

432:                                              ; preds = %412, %407
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %6, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %440 unwind label %1044

436:                                              ; preds = %413
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %6, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %7, align 4
  br label %441

440:                                              ; preds = %432
  br label %441

441:                                              ; preds = %440, %436
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %1037

442:                                              ; preds = %431, %421
  br label %447

443:                                              ; preds = %415
  %444 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %445 unwind label %292

445:                                              ; preds = %443
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %444, i8 noundef signext 116)
          to label %446 unwind label %292

446:                                              ; preds = %445
  br label %447

447:                                              ; preds = %446, %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %448 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %449 unwind label %476

449:                                              ; preds = %447
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %35, ptr noundef nonnull align 8 dereferenceable(864) %448)
          to label %450 unwind label %476

450:                                              ; preds = %449
  %451 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %452 unwind label %480

452:                                              ; preds = %450
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %34, ptr noundef nonnull align 8 dereferenceable(280) %451)
          to label %453 unwind label %480

453:                                              ; preds = %452
  %454 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %455 unwind label %484

455:                                              ; preds = %453
  %456 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %454)
          to label %457 unwind label %484

457:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %458 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %459 unwind label %488

459:                                              ; preds = %457
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %37, ptr noundef nonnull align 8 dereferenceable(864) %458)
          to label %460 unwind label %488

460:                                              ; preds = %459
  %461 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %462 unwind label %492

462:                                              ; preds = %460
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %36, ptr noundef nonnull align 8 dereferenceable(280) %461)
          to label %463 unwind label %492

463:                                              ; preds = %462
  %464 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %465 unwind label %496

465:                                              ; preds = %463
  %466 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %464)
          to label %467 unwind label %496

467:                                              ; preds = %465
  %468 = invoke noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %456, double noundef %466)
          to label %469 unwind label %496

469:                                              ; preds = %467
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  store double %468, ptr %33, align 8, !tbaa !9
  %470 = load double, ptr %33, align 8, !tbaa !9
  %471 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 10
  %472 = load double, ptr %471, align 8, !tbaa !43
  %473 = fcmp olt double %470, %472
  br i1 %473, label %474, label %505

474:                                              ; preds = %469
  %475 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 29
  store i8 1, ptr %475, align 8, !tbaa !42
  br label %507

476:                                              ; preds = %449, %447
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %6, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %7, align 4
  br label %504

480:                                              ; preds = %452, %450
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %6, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %7, align 4
  br label %503

484:                                              ; preds = %455, %453
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %6, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %7, align 4
  br label %502

488:                                              ; preds = %459, %457
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %6, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %7, align 4
  br label %501

492:                                              ; preds = %462, %460
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %6, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %7, align 4
  br label %500

496:                                              ; preds = %467, %465, %463
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %6, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %7, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %500

500:                                              ; preds = %496, %492
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %501

501:                                              ; preds = %500, %488
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %502

502:                                              ; preds = %501, %484
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %503

503:                                              ; preds = %502, %480
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %504

504:                                              ; preds = %503, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %1037

505:                                              ; preds = %469
  %506 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 29
  store i8 0, ptr %506, align 8, !tbaa !42
  br label %507

507:                                              ; preds = %505, %474
  store i8 1, ptr %22, align 1, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %510

508:                                              ; preds = %326
  %509 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 29
  store i8 0, ptr %509, align 8, !tbaa !42
  br label %510

510:                                              ; preds = %508, %507
  %511 = load i8, ptr %5, align 1, !tbaa !32, !range !34, !noundef !35
  %512 = trunc i8 %511 to i1
  br i1 %512, label %616, label %513

513:                                              ; preds = %510
  %514 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %515 = trunc i8 %514 to i1
  br i1 %515, label %616, label %516

516:                                              ; preds = %513
  %517 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  %518 = load i8, ptr %517, align 1, !tbaa !41, !range !34, !noundef !35
  %519 = trunc i8 %518 to i1
  br i1 %519, label %520, label %555

520:                                              ; preds = %516
  %521 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 27
  %522 = load i32, ptr %521, align 8, !tbaa !44
  %523 = add nsw i32 %522, 1
  store i32 %523, ptr %521, align 8, !tbaa !44
  %524 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 27
  %525 = load i32, ptr %524, align 8, !tbaa !44
  %526 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 4
  %527 = load i32, ptr %526, align 8, !tbaa !45
  %528 = icmp sgt i32 %525, %527
  br i1 %528, label %529, label %530

529:                                              ; preds = %520
  store i8 0, ptr %22, align 1, !tbaa !32
  br label %554

530:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #8
  store i8 0, ptr %38, align 1, !tbaa !32
  %531 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224) %84, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %532 unwind label %548

532:                                              ; preds = %530
  %533 = zext i1 %531 to i8
  store i8 %533, ptr %22, align 1, !tbaa !32
  %534 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %553

536:                                              ; preds = %532
  %537 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %538 unwind label %548

538:                                              ; preds = %536
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %537, i8 noundef signext 115)
          to label %539 unwind label %548

539:                                              ; preds = %538
  %540 = load i8, ptr %38, align 1, !tbaa !32, !range !34, !noundef !35
  %541 = trunc i8 %540 to i1
  br i1 %541, label %542, label %552

542:                                              ; preds = %539
  %543 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  store i8 0, ptr %543, align 1, !tbaa !41
  %544 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 27
  store i32 0, ptr %544, align 8, !tbaa !44
  %545 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %546 unwind label %548

546:                                              ; preds = %542
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %545, i8 noundef signext 83)
          to label %547 unwind label %548

547:                                              ; preds = %546
  br label %552

548:                                              ; preds = %546, %542, %538, %536, %530
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %6, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  br label %1037

552:                                              ; preds = %547, %539
  br label %553

553:                                              ; preds = %552, %532
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  br label %554

554:                                              ; preds = %553, %529
  br label %615

555:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #8
  store i8 0, ptr %39, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  store i8 0, ptr %40, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  br label %556

556:                                              ; preds = %612, %555
  %557 = load i8, ptr %39, align 1, !tbaa !32, !range !34, !noundef !35
  %558 = trunc i8 %557 to i1
  %559 = xor i1 %558, true
  br i1 %559, label %560, label %613

560:                                              ; preds = %556
  %561 = load i8, ptr %40, align 1, !tbaa !32, !range !34, !noundef !35
  %562 = trunc i8 %561 to i1
  %563 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %84, i1 noundef zeroext %562, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 1 dereferenceable(1) %23, ptr noundef nonnull align 1 dereferenceable(1) %24, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 1 dereferenceable(1) %41, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %564 unwind label %581

564:                                              ; preds = %560
  %565 = zext i1 %563 to i8
  store i8 %565, ptr %22, align 1, !tbaa !32
  %566 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  %567 = load i8, ptr %566, align 1, !tbaa !27, !range !34, !noundef !35
  %568 = trunc i8 %567 to i1
  br i1 %568, label %569, label %611

569:                                              ; preds = %564
  %570 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %594

572:                                              ; preds = %569
  %573 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 14
  store i8 0, ptr %573, align 1, !tbaa !27
  %574 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %575 unwind label %581

575:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.69, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %576 unwind label %585

576:                                              ; preds = %575
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %574, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %577 unwind label %589

577:                                              ; preds = %576
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  %578 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %579 unwind label %581

579:                                              ; preds = %577
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %578, i32 noundef 5, i32 noundef 8, ptr noundef @.str.70)
          to label %580 unwind label %581

580:                                              ; preds = %579
  store i8 1, ptr %39, align 1, !tbaa !32
  br label %610

581:                                              ; preds = %606, %579, %577, %572, %560
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %6, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %7, align 4
  br label %614

585:                                              ; preds = %575
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %6, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %7, align 4
  br label %593

589:                                              ; preds = %576
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %6, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %593

593:                                              ; preds = %589, %585
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  br label %614

594:                                              ; preds = %569
  %595 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 16
  %596 = load i32, ptr %595, align 8, !tbaa !46
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %595, align 8, !tbaa !46
  %598 = load i8, ptr %41, align 1, !tbaa !32, !range !34, !noundef !35
  %599 = trunc i8 %598 to i1
  br i1 %599, label %606, label %600

600:                                              ; preds = %594
  %601 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 16
  %602 = load i32, ptr %601, align 8, !tbaa !46
  %603 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 11
  %604 = load i32, ptr %603, align 8, !tbaa !47
  %605 = icmp sgt i32 %602, %604
  br i1 %605, label %606, label %608

606:                                              ; preds = %600, %594
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %84, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %607 unwind label %581

607:                                              ; preds = %606
  store i8 1, ptr %40, align 1, !tbaa !32
  br label %609

608:                                              ; preds = %600
  store i8 1, ptr %39, align 1, !tbaa !32
  store i8 1, ptr %22, align 1, !tbaa !32
  br label %609

609:                                              ; preds = %608, %607
  br label %610

610:                                              ; preds = %609, %580
  br label %612

611:                                              ; preds = %564
  store i8 1, ptr %39, align 1, !tbaa !32
  br label %612

612:                                              ; preds = %611, %610
  br label %556, !llvm.loop !48

613:                                              ; preds = %556
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  br label %615

614:                                              ; preds = %593, %581
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  br label %1037

615:                                              ; preds = %613, %554
  br label %616

616:                                              ; preds = %615, %513, %510
  %617 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %618 = trunc i8 %617 to i1
  br i1 %618, label %918, label %619

619:                                              ; preds = %616
  %620 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 24
  %621 = load i8, ptr %620, align 1, !tbaa !50, !range !34, !noundef !35
  %622 = trunc i8 %621 to i1
  br i1 %622, label %628, label %623

623:                                              ; preds = %619
  %624 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %625 unwind label %292

625:                                              ; preds = %623
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %624, i32 noundef 5, i32 noundef 8, ptr noundef @.str.71)
          to label %626 unwind label %292

626:                                              ; preds = %625
  %627 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 25
  store i8 1, ptr %627, align 2, !tbaa !31
  br label %917

628:                                              ; preds = %619
  %629 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  %630 = load i8, ptr %629, align 1, !tbaa !41, !range !34, !noundef !35
  %631 = trunc i8 %630 to i1
  br i1 %631, label %673, label %632

632:                                              ; preds = %628
  %633 = load i8, ptr %5, align 1, !tbaa !32, !range !34, !noundef !35
  %634 = trunc i8 %633 to i1
  br i1 %634, label %673, label %635

635:                                              ; preds = %632
  %636 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  %637 = load i8, ptr %636, align 2, !tbaa !29, !range !34, !noundef !35
  %638 = trunc i8 %637 to i1
  br i1 %638, label %673, label %639

639:                                              ; preds = %635
  %640 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %641 unwind label %292

641:                                              ; preds = %639
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %640, i32 noundef 5, i32 noundef 8, ptr noundef @.str.72)
          to label %642 unwind label %292

642:                                              ; preds = %641
  %643 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 30
  %644 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %643)
          to label %645 unwind label %292

645:                                              ; preds = %642
  %646 = load ptr, ptr %644, align 8, !tbaa !36
  %647 = getelementptr inbounds ptr, ptr %646, i64 5
  %648 = load ptr, ptr %647, align 8
  invoke void %648(ptr noundef nonnull align 8 dereferenceable(49) %644)
          to label %649 unwind label %292

649:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  %650 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224) %84, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %651 unwind label %662

651:                                              ; preds = %649
  %652 = zext i1 %650 to i8
  store i8 %652, ptr %22, align 1, !tbaa !32
  %653 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %654 = trunc i8 %653 to i1
  br i1 %654, label %655, label %672

655:                                              ; preds = %651
  %656 = load i8, ptr %44, align 1, !tbaa !32, !range !34, !noundef !35
  %657 = trunc i8 %656 to i1
  br i1 %657, label %658, label %666

658:                                              ; preds = %655
  %659 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %660 unwind label %662

660:                                              ; preds = %658
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %659, i8 noundef signext 83)
          to label %661 unwind label %662

661:                                              ; preds = %660
  br label %671

662:                                              ; preds = %669, %666, %660, %658, %649
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %6, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br label %1037

666:                                              ; preds = %655
  %667 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  store i8 1, ptr %667, align 1, !tbaa !41
  %668 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %669 unwind label %662

669:                                              ; preds = %666
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %668, i8 noundef signext 115)
          to label %670 unwind label %662

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670, %661
  br label %672

672:                                              ; preds = %671, %651
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br label %673

673:                                              ; preds = %672, %635, %632, %628
  %674 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %675 = trunc i8 %674 to i1
  br i1 %675, label %916, label %676

676:                                              ; preds = %673
  %677 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  %678 = load i8, ptr %677, align 1, !tbaa !41, !range !34, !noundef !35
  %679 = trunc i8 %678 to i1
  br i1 %679, label %688, label %680

680:                                              ; preds = %676
  %681 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 30
  %682 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %681)
          to label %683 unwind label %292

683:                                              ; preds = %680
  %684 = load ptr, ptr %682, align 8, !tbaa !36
  %685 = getelementptr inbounds ptr, ptr %684, i64 5
  %686 = load ptr, ptr %685, align 8
  invoke void %686(ptr noundef nonnull align 8 dereferenceable(49) %682)
          to label %687 unwind label %292

687:                                              ; preds = %683
  br label %688

688:                                              ; preds = %687, %676
  %689 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
          to label %690 unwind label %292

690:                                              ; preds = %688
  br i1 %689, label %691, label %713

691:                                              ; preds = %690
  store i1 true, ptr %49, align 1
  %692 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %693 unwind label %696

693:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %694 unwind label %700

694:                                              ; preds = %693
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %692, ptr noundef %45, ptr noundef %47, i32 noundef 493)
          to label %695 unwind label %704

695:                                              ; preds = %694
  store i1 false, ptr %49, align 1
  invoke void @__cxa_throw(ptr %692, ptr @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %704

696:                                              ; preds = %691
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %6, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %7, align 4
  br label %709

700:                                              ; preds = %693
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %6, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %7, align 4
  br label %708

704:                                              ; preds = %695, %694
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %6, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %708

708:                                              ; preds = %704, %700
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %709

709:                                              ; preds = %708, %696
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  %710 = load i1, ptr %49, align 1
  br i1 %710, label %711, label %712

711:                                              ; preds = %709
  call void @__cxa_free_exception(ptr %692) #8
  br label %712

712:                                              ; preds = %711, %709
  br label %1037

713:                                              ; preds = %690
  %714 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 31
  %715 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_16RestorationPhaseEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %714)
          to label %716 unwind label %292

716:                                              ; preds = %713
  br i1 %715, label %745, label %717

717:                                              ; preds = %716
  store i1 true, ptr %56, align 1
  %718 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %719 unwind label %723

719:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %720 unwind label %727

720:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %721 unwind label %731

721:                                              ; preds = %720
  invoke void @_ZN10SimTKIpopt14IpoptExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iS6_(ptr noundef nonnull align 8 dereferenceable(112) %718, ptr noundef %50, ptr noundef %52, i32 noundef 497, ptr noundef %54)
          to label %722 unwind label %735

722:                                              ; preds = %721
  store i1 false, ptr %56, align 1
  invoke void @__cxa_throw(ptr %718, ptr @_ZTIN10SimTKIpopt14IpoptExceptionE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %735

723:                                              ; preds = %717
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %6, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %7, align 4
  br label %741

727:                                              ; preds = %719
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %6, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %7, align 4
  br label %740

731:                                              ; preds = %720
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %6, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %7, align 4
  br label %739

735:                                              ; preds = %722, %721
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %6, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %739

739:                                              ; preds = %735, %731
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  br label %740

740:                                              ; preds = %739, %727
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %741

741:                                              ; preds = %740, %723
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  %742 = load i1, ptr %56, align 1
  br i1 %742, label %743, label %744

743:                                              ; preds = %741
  call void @__cxa_free_exception(ptr %718) #8
  br label %744

744:                                              ; preds = %743, %741
  br label %1037

745:                                              ; preds = %716
  %746 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %747 unwind label %292

747:                                              ; preds = %745
  %748 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %746)
          to label %749 unwind label %292

749:                                              ; preds = %747
  %750 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %751 unwind label %292

751:                                              ; preds = %749
  %752 = invoke noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %750)
          to label %753 unwind label %292

753:                                              ; preds = %751
  %754 = fmul double 1.000000e-02, %752
  %755 = fcmp ole double %748, %754
  br i1 %755, label %756, label %823

756:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #8
  %757 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
          to label %758 unwind label %772

758:                                              ; preds = %756
  %759 = zext i1 %757 to i8
  store i8 %759, ptr %57, align 1, !tbaa !32
  %760 = load i8, ptr %57, align 1, !tbaa !32, !range !34, !noundef !35
  %761 = trunc i8 %760 to i1
  br i1 %761, label %762, label %793

762:                                              ; preds = %758
  %763 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %764 unwind label %772

764:                                              ; preds = %762
  %765 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 22
  %766 = load i32, ptr %765, align 8, !tbaa !51
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %763, i32 noundef 2, i32 noundef 8, ptr noundef @.str.77, i32 noundef %766)
          to label %767 unwind label %772

767:                                              ; preds = %764
  store i1 true, ptr %62, align 1
  %768 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %769 unwind label %776

769:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %770 unwind label %780

770:                                              ; preds = %769
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %768, ptr noundef %58, ptr noundef %60, i32 noundef 507)
          to label %771 unwind label %784

771:                                              ; preds = %770
  store i1 false, ptr %62, align 1
  invoke void @__cxa_throw(ptr %768, ptr @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %784

772:                                              ; preds = %799, %797, %795, %793, %764, %762, %756
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %6, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %7, align 4
  br label %822

776:                                              ; preds = %767
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %6, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %7, align 4
  br label %789

780:                                              ; preds = %769
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %6, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %7, align 4
  br label %788

784:                                              ; preds = %771, %770
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %6, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %788

788:                                              ; preds = %784, %780
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %789

789:                                              ; preds = %788, %776
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  %790 = load i1, ptr %62, align 1
  br i1 %790, label %791, label %792

791:                                              ; preds = %789
  call void @__cxa_free_exception(ptr %768) #8
  br label %792

792:                                              ; preds = %791, %789
  br label %822

793:                                              ; preds = %758
  %794 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %795 unwind label %772

795:                                              ; preds = %793
  %796 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %797 unwind label %772

797:                                              ; preds = %795
  %798 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %796)
          to label %799 unwind label %772

799:                                              ; preds = %797
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %794, i32 noundef 1, i32 noundef 8, ptr noundef @.str.79, double noundef %798)
          to label %800 unwind label %772

800:                                              ; preds = %799
  store i1 true, ptr %67, align 1
  %801 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %802 unwind label %805

802:                                              ; preds = %800
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %803 unwind label %809

803:                                              ; preds = %802
  invoke void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %801, ptr noundef %63, ptr noundef %65, i32 noundef 514)
          to label %804 unwind label %813

804:                                              ; preds = %803
  store i1 false, ptr %67, align 1
  invoke void @__cxa_throw(ptr %801, ptr @_ZTIN10SimTKIpopt18RESTORATION_FAILEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %813

805:                                              ; preds = %800
  %806 = landingpad { ptr, i32 }
          cleanup
  %807 = extractvalue { ptr, i32 } %806, 0
  store ptr %807, ptr %6, align 8
  %808 = extractvalue { ptr, i32 } %806, 1
  store i32 %808, ptr %7, align 4
  br label %818

809:                                              ; preds = %802
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %6, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %7, align 4
  br label %817

813:                                              ; preds = %804, %803
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %6, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %817

817:                                              ; preds = %813, %809
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %818

818:                                              ; preds = %817, %805
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #8
  %819 = load i1, ptr %67, align 1
  br i1 %819, label %820, label %821

820:                                              ; preds = %818
  call void @__cxa_free_exception(ptr %801) #8
  br label %821

821:                                              ; preds = %820, %818
  br label %822

822:                                              ; preds = %821, %792, %772
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #8
  br label %1037

823:                                              ; preds = %753
  %824 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %825 unwind label %292

825:                                              ; preds = %823
  %826 = load double, ptr %26, align 8, !tbaa !9
  invoke void @_ZN10SimTKIpopt9IpoptData21Set_info_alpha_primalEd(ptr noundef nonnull align 8 dereferenceable(864) %824, double noundef %826)
          to label %827 unwind label %292

827:                                              ; preds = %825
  %828 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %829 unwind label %292

829:                                              ; preds = %827
  invoke void @_ZN10SimTKIpopt9IpoptData19Set_info_alpha_dualEd(ptr noundef nonnull align 8 dereferenceable(864) %828, double noundef 0.000000e+00)
          to label %830 unwind label %292

830:                                              ; preds = %829
  %831 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %832 unwind label %292

832:                                              ; preds = %830
  invoke void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %831, i8 noundef signext 82)
          to label %833 unwind label %292

833:                                              ; preds = %832
  %834 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %835 unwind label %292

835:                                              ; preds = %833
  %836 = load i32, ptr %25, align 4, !tbaa !39
  %837 = add nsw i32 %836, 1
  invoke void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %834, i32 noundef %837)
          to label %838 unwind label %292

838:                                              ; preds = %835
  %839 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 31
  %840 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %839)
          to label %841 unwind label %292

841:                                              ; preds = %838
  %842 = load ptr, ptr %840, align 8, !tbaa !36
  %843 = getelementptr inbounds ptr, ptr %842, i64 3
  %844 = load ptr, ptr %843, align 8
  %845 = invoke noundef zeroext i1 %844(ptr noundef nonnull align 8 dereferenceable(49) %840)
          to label %846 unwind label %292

846:                                              ; preds = %841
  %847 = zext i1 %845 to i8
  store i8 %847, ptr %22, align 1, !tbaa !32
  %848 = load i8, ptr %22, align 1, !tbaa !32, !range !34, !noundef !35
  %849 = trunc i8 %848 to i1
  br i1 %849, label %905, label %850

850:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  %851 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %84)
          to label %852 unwind label %861

852:                                              ; preds = %850
  %853 = zext i1 %851 to i8
  store i8 %853, ptr %68, align 1, !tbaa !32
  %854 = load i8, ptr %68, align 1, !tbaa !32, !range !34, !noundef !35
  %855 = trunc i8 %854 to i1
  br i1 %855, label %856, label %882

856:                                              ; preds = %852
  store i1 true, ptr %73, align 1
  %857 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef @.str.81, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %858 unwind label %865

858:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %859 unwind label %869

859:                                              ; preds = %858
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %857, ptr noundef %69, ptr noundef %71, i32 noundef 531)
          to label %860 unwind label %873

860:                                              ; preds = %859
  store i1 false, ptr %73, align 1
  invoke void @__cxa_throw(ptr %857, ptr @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %873

861:                                              ; preds = %850
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %6, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %7, align 4
  br label %904

865:                                              ; preds = %856
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %6, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %7, align 4
  br label %878

869:                                              ; preds = %858
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %6, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %7, align 4
  br label %877

873:                                              ; preds = %860, %859
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %6, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  br label %877

877:                                              ; preds = %873, %869
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %878

878:                                              ; preds = %877, %865
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #8
  %879 = load i1, ptr %73, align 1
  br i1 %879, label %880, label %881

880:                                              ; preds = %878
  call void @__cxa_free_exception(ptr %857) #8
  br label %881

881:                                              ; preds = %880, %878
  br label %904

882:                                              ; preds = %852
  store i1 true, ptr %78, align 1
  %883 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %884 unwind label %887

884:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %885 unwind label %891

885:                                              ; preds = %884
  invoke void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %883, ptr noundef %74, ptr noundef %76, i32 noundef 535)
          to label %886 unwind label %895

886:                                              ; preds = %885
  store i1 false, ptr %78, align 1
  invoke void @__cxa_throw(ptr %883, ptr @_ZTIN10SimTKIpopt18RESTORATION_FAILEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1047 unwind label %895

887:                                              ; preds = %882
  %888 = landingpad { ptr, i32 }
          cleanup
  %889 = extractvalue { ptr, i32 } %888, 0
  store ptr %889, ptr %6, align 8
  %890 = extractvalue { ptr, i32 } %888, 1
  store i32 %890, ptr %7, align 4
  br label %900

891:                                              ; preds = %884
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %6, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %7, align 4
  br label %899

895:                                              ; preds = %886, %885
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %6, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  br label %899

899:                                              ; preds = %895, %891
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %900

900:                                              ; preds = %899, %887
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  %901 = load i1, ptr %78, align 1
  br i1 %901, label %902, label %903

902:                                              ; preds = %900
  call void @__cxa_free_exception(ptr %883) #8
  br label %903

903:                                              ; preds = %902, %900
  br label %904

904:                                              ; preds = %903, %881, %861
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %1037

905:                                              ; preds = %846
  %906 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 28
  store i32 0, ptr %906, align 4, !tbaa !52
  %907 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  %908 = load i8, ptr %907, align 2, !tbaa !29, !range !34, !noundef !35
  %909 = trunc i8 %908 to i1
  br i1 %909, label %910, label %912

910:                                              ; preds = %905
  %911 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  store i8 0, ptr %911, align 2, !tbaa !29
  br label %912

912:                                              ; preds = %910, %905
  %913 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  store i8 0, ptr %913, align 1, !tbaa !41
  %914 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 27
  store i32 0, ptr %914, align 8, !tbaa !44
  %915 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 15
  store i32 0, ptr %915, align 4, !tbaa !28
  br label %916

916:                                              ; preds = %912, %673
  br label %917

917:                                              ; preds = %916, %626
  br label %1036

918:                                              ; preds = %616
  %919 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 26
  %920 = load i8, ptr %919, align 1, !tbaa !41, !range !34, !noundef !35
  %921 = trunc i8 %920 to i1
  br i1 %921, label %922, label %925

922:                                              ; preds = %918
  %923 = load i8, ptr %27, align 1, !tbaa !32, !range !34, !noundef !35
  %924 = trunc i8 %923 to i1
  br i1 %924, label %925, label %1035

925:                                              ; preds = %922, %918
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %926 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %927 unwind label %962

927:                                              ; preds = %925
  %928 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %929 unwind label %962

929:                                              ; preds = %927
  %930 = invoke noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %928)
          to label %931 unwind label %962

931:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %932 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %933 unwind label %966

933:                                              ; preds = %931
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %80, ptr noundef nonnull align 8 dereferenceable(280) %932)
          to label %934 unwind label %966

934:                                              ; preds = %933
  %935 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %936 unwind label %970

936:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %937 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %938 unwind label %974

938:                                              ; preds = %936
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %81, ptr noundef nonnull align 8 dereferenceable(280) %937)
          to label %939 unwind label %974

939:                                              ; preds = %938
  %940 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81)
          to label %941 unwind label %978

941:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %942 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %943 unwind label %982

943:                                              ; preds = %941
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %82, ptr noundef nonnull align 8 dereferenceable(280) %942)
          to label %944 unwind label %982

944:                                              ; preds = %943
  %945 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %946 unwind label %986

946:                                              ; preds = %944
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %947 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %948 unwind label %990

948:                                              ; preds = %946
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %83, ptr noundef nonnull align 8 dereferenceable(280) %947)
          to label %949 unwind label %990

949:                                              ; preds = %948
  %950 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %951 unwind label %994

951:                                              ; preds = %949
  %952 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities22dual_frac_to_the_boundEdRKNS_6VectorES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(2025) %926, double noundef %930, ptr noundef nonnull align 8 dereferenceable(205) %935, ptr noundef nonnull align 8 dereferenceable(205) %940, ptr noundef nonnull align 8 dereferenceable(205) %945, ptr noundef nonnull align 8 dereferenceable(205) %950)
          to label %953 unwind label %994

953:                                              ; preds = %951
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  store double %952, ptr %79, align 8, !tbaa !9
  %954 = load double, ptr %26, align 8, !tbaa !9
  %955 = load double, ptr %79, align 8, !tbaa !9
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch15PerformDualStepEddRNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %84, double noundef %954, double noundef %955, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %956 unwind label %962

956:                                              ; preds = %953
  %957 = load i32, ptr %25, align 4, !tbaa !39
  %958 = icmp eq i32 %957, 0
  br i1 %958, label %959, label %1005

959:                                              ; preds = %956
  %960 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 28
  store i32 0, ptr %960, align 4, !tbaa !52
  %961 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 15
  store i32 0, ptr %961, align 4, !tbaa !28
  br label %1012

962:                                              ; preds = %1030, %1028, %1026, %1024, %1018, %1016, %953, %929, %927, %925
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %6, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %7, align 4
  br label %1034

966:                                              ; preds = %933, %931
  %967 = landingpad { ptr, i32 }
          cleanup
  %968 = extractvalue { ptr, i32 } %967, 0
  store ptr %968, ptr %6, align 8
  %969 = extractvalue { ptr, i32 } %967, 1
  store i32 %969, ptr %7, align 4
  br label %1004

970:                                              ; preds = %934
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %6, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %7, align 4
  br label %1003

974:                                              ; preds = %938, %936
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %6, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %7, align 4
  br label %1002

978:                                              ; preds = %939
  %979 = landingpad { ptr, i32 }
          cleanup
  %980 = extractvalue { ptr, i32 } %979, 0
  store ptr %980, ptr %6, align 8
  %981 = extractvalue { ptr, i32 } %979, 1
  store i32 %981, ptr %7, align 4
  br label %1001

982:                                              ; preds = %943, %941
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %6, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %7, align 4
  br label %1000

986:                                              ; preds = %944
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %6, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %7, align 4
  br label %999

990:                                              ; preds = %948, %946
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %6, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %7, align 4
  br label %998

994:                                              ; preds = %951, %949
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %6, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %7, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  br label %998

998:                                              ; preds = %994, %990
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %999

999:                                              ; preds = %998, %986
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %1000

1000:                                             ; preds = %999, %982
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %1001

1001:                                             ; preds = %1000, %978
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  br label %1002

1002:                                             ; preds = %1001, %974
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  br label %1003

1003:                                             ; preds = %1002, %970
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br label %1004

1004:                                             ; preds = %1003, %966
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %1034

1005:                                             ; preds = %956
  %1006 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 28
  %1007 = load i32, ptr %1006, align 4, !tbaa !52
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %1006, align 4, !tbaa !52
  %1009 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 15
  %1010 = load i32, ptr %1009, align 4, !tbaa !28
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %1009, align 4, !tbaa !28
  br label %1012

1012:                                             ; preds = %1005, %959
  %1013 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  %1014 = load i8, ptr %1013, align 2, !tbaa !29, !range !34, !noundef !35
  %1015 = trunc i8 %1014 to i1
  br i1 %1015, label %1016, label %1033

1016:                                             ; preds = %1012
  %1017 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %1018 unwind label %962

1018:                                             ; preds = %1016
  %1019 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %1017)
          to label %1020 unwind label %962

1020:                                             ; preds = %1018
  %1021 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 8
  %1022 = load double, ptr %1021, align 8, !tbaa !30
  %1023 = fcmp ole double %1019, %1022
  br i1 %1023, label %1024, label %1033

1024:                                             ; preds = %1020
  %1025 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %1026 unwind label %962

1026:                                             ; preds = %1024
  %1027 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %84)
          to label %1028 unwind label %962

1028:                                             ; preds = %1026
  %1029 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %1027)
          to label %1030 unwind label %962

1030:                                             ; preds = %1028
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1025, i32 noundef 5, i32 noundef 8, ptr noundef @.str.83, double noundef %1029)
          to label %1031 unwind label %962

1031:                                             ; preds = %1030
  %1032 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %84, i32 0, i32 7
  store i8 0, ptr %1032, align 2, !tbaa !29
  br label %1033

1033:                                             ; preds = %1031, %1020, %1012
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %1035

1034:                                             ; preds = %1004, %962
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %1037

1035:                                             ; preds = %1033, %922
  br label %1036

1036:                                             ; preds = %1035, %917
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  ret void

1037:                                             ; preds = %1034, %904, %822, %744, %712, %662, %614, %548, %504, %441, %403, %398, %292
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  br label %1038

1038:                                             ; preds = %1037, %271, %157, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %1039

1039:                                             ; preds = %1038
  %1040 = load ptr, ptr %6, align 8
  %1041 = load i32, ptr %7, align 4
  %1042 = insertvalue { ptr, i32 } poison, ptr %1040, 0
  %1043 = insertvalue { ptr, i32 } %1042, i32 %1041, 1
  resume { ptr, i32 } %1043

1044:                                             ; preds = %432
  %1045 = landingpad { ptr, i32 }
          catch ptr null
  %1046 = extractvalue { ptr, i32 } %1045, 0
  call void @__clang_call_terminate(ptr %1046) #10
  unreachable

1047:                                             ; preds = %886, %860, %804, %771, %722, %695
  unreachable
}

declare void @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ...) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864)) #2 align 2

declare noundef zeroext i1 @_ZNK10SimTKIpopt25IpoptCalculatedQuantities15IsSquareProblemEv(ptr noundef nonnull align 8 dereferenceable(2025)) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch20StoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8, ptr noundef nonnull align 8 dereferenceable(864)) #5 align 2

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

declare void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.40") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef, double noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8, ptr noundef nonnull align 8 dereferenceable(864)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch14DetectTinyStepEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch13StartWatchDogEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29curr_primal_frac_to_the_boundEd(ptr noundef nonnull align 8 dereferenceable(2025), double noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864)) #2 align 2

declare void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864), double noundef, ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025)) #4

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025)) #4

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #3 align 2

declare void @__cxa_end_catch()

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864), i8 noundef signext) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData18Set_tiny_step_flagEb(ptr noundef nonnull align 8 dereferenceable(864), i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3 align 2

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt14IpoptExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iS6_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt14IpoptExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData21Set_info_alpha_primalEd(ptr noundef nonnull align 8 dereferenceable(864), double noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData19Set_info_alpha_dualEd(ptr noundef nonnull align 8 dereferenceable(864), double noundef) #2 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities22dual_frac_to_the_boundEdRKNS_6VectorES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(2025), double noundef, ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch15PerformDualStepEddRNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noinline noreturn nounwind uwtable "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 #2 = { 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 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 = { "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 = { 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 #7 = { nounwind memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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 160}
!12 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearchE", !13, i64 0, !10, i64 56, !22, i64 64, !10, i64 72, !16, i64 80, !21, i64 84, !21, i64 85, !21, i64 86, !10, i64 88, !10, i64 96, !10, i64 104, !16, i64 112, !16, i64 116, !21, i64 120, !21, i64 121, !16, i64 124, !16, i64 128, !10, i64 136, !23, i64 144, !23, i64 152, !10, i64 160, !23, i64 168, !16, i64 176, !21, i64 180, !21, i64 181, !21, i64 182, !21, i64 183, !16, i64 184, !16, i64 188, !21, i64 192, !24, i64 200, !25, i64 208, !26, i64 216}
!13 = !{!"_ZTSN10SimTKIpopt10LineSearchE", !14, i64 0}
!14 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !15, i64 0, !17, i64 16, !18, i64 24, !19, i64 32, !20, i64 40, !21, i64 48}
!15 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !16, i64 8}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearch13AlphaForYEnumE", !7, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !6, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEE", !6, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEE", !6, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16ConvergenceCheckEEE", !6, i64 0}
!27 = !{!12, !21, i64 121}
!28 = !{!12, !16, i64 124}
!29 = !{!12, !21, i64 86}
!30 = !{!12, !10, i64 88}
!31 = !{!12, !21, i64 182}
!32 = !{!21, !21, i64 0}
!33 = !{!12, !21, i64 180}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!37, !37, i64 0}
!37 = !{!"vtable pointer", !8, i64 0}
!38 = !{!12, !21, i64 120}
!39 = !{!16, !16, i64 0}
!40 = !{!12, !16, i64 116}
!41 = !{!12, !21, i64 183}
!42 = !{!12, !21, i64 192}
!43 = !{!12, !10, i64 104}
!44 = !{!12, !16, i64 184}
!45 = !{!12, !16, i64 80}
!46 = !{!12, !16, i64 128}
!47 = !{!12, !16, i64 112}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!12, !21, i64 181}
!51 = !{!12, !16, i64 176}
!52 = !{!12, !16, i64 188}


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

%"class.SimTKIpopt::SmartPtr.40" = type { ptr }
%"class.SimTKIpopt::SmartPtr.10" = type { ptr }
%"class.SimTKIpopt::SmartPtr.51" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.15" = type { i8 }

@.str.65 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZTIN10SimTKIpopt14IpoptExceptionE = external dso_local constant { ptr, ptr }, align 8
@_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [109 x i8], align 1
@_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.75 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [56 x i8], align 1
@_ZTIN10SimTKIpopt18RESTORATION_FAILEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.81 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [120 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #1

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_16RestorationPhaseEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch24FindAcceptableTrialPointEv(ptr noundef nonnull align 8 dereferenceable(224) %0) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.SimTKIpopt::SmartPtr.40", align 8
  %3 = alloca %"class.SimTKIpopt::SmartPtr.40", align 8
  %4 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %5 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %6 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %7 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %8 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %14 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %15 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %16 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %17 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %18 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %19 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %20 = alloca %"class.SimTKIpopt::SmartPtr.10", align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.15", align 1
  %25 = alloca i8, align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.15", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.15", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.15", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.15", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.15", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.15", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.15", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.15", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.15", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.15", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.15", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.15", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.15", align 1
  %52 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %53 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %54 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %55 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %56 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %57 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %58 = tail call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %57)
  tail call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %56, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.65, i32 noundef %58)
  %59 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %60 = tail call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %59)
  %61 = getelementptr inbounds i8, ptr %0, i64 160
  %62 = load double, ptr %61, align 8, !tbaa !5
  %63 = fcmp une double %62, %60
  br i1 %63, label %64, label %72

64:                                               ; preds = %1
  %65 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  tail call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %65, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.66)
  %66 = getelementptr inbounds i8, ptr %0, i64 121
  store i8 0, ptr %66, align 1, !tbaa !25
  %67 = getelementptr inbounds i8, ptr %0, i64 144
  %68 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef null)
  %69 = getelementptr inbounds i8, ptr %0, i64 152
  %70 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef null)
  %71 = getelementptr inbounds i8, ptr %0, i64 124
  store i32 0, ptr %71, align 4, !tbaa !26
  store double %60, ptr %61, align 8, !tbaa !5
  br label %72

72:                                               ; preds = %64, %1
  %73 = tail call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %74 = tail call noundef zeroext i1 @_ZNK10SimTKIpopt25IpoptCalculatedQuantities15IsSquareProblemEv(ptr noundef nonnull align 8 dereferenceable(2025) %73)
  br i1 %74, label %75, label %78

75:                                               ; preds = %72
  %76 = getelementptr inbounds i8, ptr %0, i64 86
  store i8 1, ptr %76, align 2, !tbaa !27
  %77 = getelementptr inbounds i8, ptr %0, i64 88
  store double 0.000000e+00, ptr %77, align 8, !tbaa !28
  br label %78

78:                                               ; preds = %75, %72
  %79 = tail call noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
  br i1 %79, label %80, label %82

80:                                               ; preds = %78
  %81 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  tail call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %81, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.67)
  tail call void @_ZN10SimTKIpopt22BacktrackingLineSearch20StoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
  br label %82

82:                                               ; preds = %80, %78
  %83 = getelementptr inbounds i8, ptr %0, i64 182
  store i8 0, ptr %83, align 2, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #8
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %84 = getelementptr inbounds i8, ptr %0, i64 180
  %85 = load i8, ptr %84, align 4, !tbaa !30, !range !31, !noundef !32
  %86 = trunc nuw i8 %85 to i1
  br i1 %86, label %87, label %88

87:                                               ; preds = %82
  store i8 0, ptr %84, align 4, !tbaa !30
  br label %117

88:                                               ; preds = %82
  %89 = getelementptr inbounds i8, ptr %0, i64 200
  %90 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  %91 = getelementptr inbounds i8, ptr %0, i64 121
  %92 = load i8, ptr %91, align 1, !tbaa !25, !range !31, !noundef !32
  %93 = trunc nuw i8 %92 to i1
  %94 = load ptr, ptr %90, align 8, !tbaa !33
  %95 = getelementptr inbounds i8, ptr %94, i64 32
  %96 = load ptr, ptr %95, align 8
  invoke void %96(ptr noundef nonnull align 8 dereferenceable(49) %90, i1 noundef zeroext %93)
          to label %97 unwind label %105

97:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %98 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %99 unwind label %109

99:                                               ; preds = %97
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %4, ptr noundef nonnull align 8 dereferenceable(864) %98)
          to label %100 unwind label %109

100:                                              ; preds = %99
  %101 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  invoke void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.40") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %101)
          to label %102 unwind label %111

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %104 unwind label %113

104:                                              ; preds = %102
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %117

105:                                              ; preds = %88
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  %108 = extractvalue { ptr, i32 } %106, 1
  br label %657

109:                                              ; preds = %99, %97
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %116

111:                                              ; preds = %100
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %115

113:                                              ; preds = %102
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  br label %115

115:                                              ; preds = %113, %111
  %.pn = phi { ptr, i32 } [ %114, %113 ], [ %112, %111 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br label %116

116:                                              ; preds = %115, %109
  %.pn.pn = phi { ptr, i32 } [ %.pn, %115 ], [ %110, %109 ]
  %.159 = extractvalue { ptr, i32 } %.pn.pn, 0
  %.169 = extractvalue { ptr, i32 } %.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %657

117:                                              ; preds = %104, %87
  %.0 = phi i8 [ 1, %87 ], [ 0, %104 ]
  %118 = getelementptr inbounds i8, ptr %0, i64 120
  %119 = load i8, ptr %118, align 8, !tbaa !35, !range !31, !noundef !32
  %120 = trunc nuw i8 %119 to i1
  br i1 %120, label %121, label %122

121:                                              ; preds = %117
  store i8 0, ptr %118, align 8, !tbaa !35
  br label %122

122:                                              ; preds = %121, %117
  %.1 = phi i8 [ 1, %121 ], [ %.0, %117 ]
  %123 = getelementptr inbounds i8, ptr %0, i64 86
  %124 = load i8, ptr %123, align 2, !tbaa !27, !range !31, !noundef !32
  %125 = trunc nuw i8 %124 to i1
  br i1 %125, label %126, label %.critedge199.thread

126:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %127 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %128 unwind label %145

128:                                              ; preds = %126
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %6, ptr noundef nonnull align 8 dereferenceable(864) %127)
          to label %129 unwind label %145

129:                                              ; preds = %128
  %130 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %5, ptr noundef nonnull align 8 dereferenceable(280) %130)
          to label %131 unwind label %147

131:                                              ; preds = %129
  %132 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %133 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %132)
          to label %134 unwind label %149

134:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %135 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %136 unwind label %151

136:                                              ; preds = %134
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %8, ptr noundef nonnull align 8 dereferenceable(864) %135)
          to label %137 unwind label %151

137:                                              ; preds = %136
  %138 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %7, ptr noundef nonnull align 8 dereferenceable(280) %138)
          to label %139 unwind label %153

139:                                              ; preds = %137
  %140 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %141 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %140)
          to label %.critedge199 unwind label %155

.critedge199:                                     ; preds = %139
  %142 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %133, double noundef %141)
  %143 = fcmp ogt double %142, 1.000000e+08
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br i1 %143, label %.thread208, label %.critedge199.thread

.thread208:                                       ; preds = %.critedge199
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  store i8 0, ptr %9, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  store i8 0, ptr %10, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 0, ptr %11, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store double 0.000000e+00, ptr %12, align 8, !tbaa !38
  br label %164

.critedge199.thread:                              ; preds = %122, %.critedge199
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  store i8 0, ptr %9, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  store i8 0, ptr %10, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 0, ptr %11, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store double 0.000000e+00, ptr %12, align 8, !tbaa !38
  %144 = trunc nuw i8 %.1 to i1
  br i1 %144, label %164, label %162

145:                                              ; preds = %128, %126
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %161

147:                                              ; preds = %129
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %160

149:                                              ; preds = %131
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %159

151:                                              ; preds = %136, %134
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %158

153:                                              ; preds = %137
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %139
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br label %157

157:                                              ; preds = %153, %155
  %.pn141 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br label %158

158:                                              ; preds = %151, %157
  %.pn141.pn = phi { ptr, i32 } [ %.pn141, %157 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %159

159:                                              ; preds = %149, %158
  %.pn141.pn.pn = phi { ptr, i32 } [ %.pn141.pn, %158 ], [ %150, %149 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  br label %160

160:                                              ; preds = %147, %159
  %.pn141.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn, %159 ], [ %148, %147 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br label %161

161:                                              ; preds = %160, %145
  %.pn141.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn, %160 ], [ %146, %145 ]
  %.6 = extractvalue { ptr, i32 } %.pn141.pn.pn.pn.pn, 0
  %.674 = extractvalue { ptr, i32 } %.pn141.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br label %657

162:                                              ; preds = %.critedge199.thread
  %163 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch14DetectTinyStepEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %164 unwind label %172

164:                                              ; preds = %.thread208, %162, %.critedge199.thread
  %165 = phi i1 [ true, %.critedge199.thread ], [ false, %162 ], [ true, %.thread208 ]
  %166 = phi i8 [ %.1, %.critedge199.thread ], [ %.1, %162 ], [ 1, %.thread208 ]
  %167 = phi i1 [ false, %.critedge199.thread ], [ %163, %162 ], [ false, %.thread208 ]
  %168 = getelementptr inbounds i8, ptr %0, i64 121
  %169 = load i8, ptr %168, align 1, !tbaa !25, !range !31, !noundef !32
  %170 = trunc nuw i8 %169 to i1
  %brmerge = or i1 %165, %167
  %or.cond206 = and i1 %brmerge, %170
  br i1 %or.cond206, label %171, label %176

171:                                              ; preds = %164
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %176 unwind label %172

172:                                              ; preds = %534, %532, %530, %527, %525, %477, %475, %473, %453, %438, %432, %403, %402, %400, %392, %390, %271, %263, %261, %255, %206, %204, %202, %199, %197, %195, %193, %171, %162
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  %175 = extractvalue { ptr, i32 } %173, 1
  br label %656

176:                                              ; preds = %171, %164
  %.0122.shrunk = phi i1 [ %167, %164 ], [ false, %171 ]
  %.3 = phi i8 [ %166, %164 ], [ 0, %171 ]
  %177 = getelementptr inbounds i8, ptr %0, i64 116
  %178 = load i32, ptr %177, align 4, !tbaa !39
  %179 = icmp sgt i32 %178, 0
  br i1 %179, label %180, label %194

180:                                              ; preds = %176
  %181 = load i8, ptr %168, align 1, !tbaa !25, !range !31, !noundef !32
  %182 = trunc nuw i8 %181 to i1
  %183 = trunc nuw i8 %.3 to i1
  %brmerge200 = or i1 %.0122.shrunk, %183
  %or.cond207 = select i1 %182, i1 true, i1 %brmerge200
  br i1 %or.cond207, label %194, label %184

184:                                              ; preds = %180
  %185 = getelementptr inbounds i8, ptr %0, i64 183
  %186 = load i8, ptr %185, align 1, !tbaa !40, !range !31, !noundef !32
  %187 = trunc nuw i8 %186 to i1
  br i1 %187, label %194, label %188

188:                                              ; preds = %184
  %189 = load i8, ptr %123, align 2, !tbaa !27, !range !31, !noundef !32
  %190 = trunc nuw i8 %189 to i1
  %191 = getelementptr inbounds i8, ptr %0, i64 124
  %192 = load i32, ptr %191, align 4
  %.not = icmp slt i32 %192, %178
  %or.cond = select i1 %190, i1 true, i1 %.not
  br i1 %or.cond, label %194, label %193

193:                                              ; preds = %188
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch13StartWatchDogEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %194 unwind label %172

194:                                              ; preds = %193, %188, %184, %180, %176
  br i1 %.0122.shrunk, label %195, label %315

195:                                              ; preds = %194
  %196 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %197 unwind label %172

197:                                              ; preds = %195
  %198 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %199 unwind label %172

199:                                              ; preds = %197
  %200 = call noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %198)
  %201 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29curr_primal_frac_to_the_boundEd(ptr noundef nonnull align 8 dereferenceable(2025) %196, double noundef %200)
          to label %202 unwind label %172

202:                                              ; preds = %199
  store double %201, ptr %12, align 8, !tbaa !38
  %203 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %204 unwind label %172

204:                                              ; preds = %202
  %205 = load double, ptr %12, align 8, !tbaa !38
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %203, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.68, double noundef %205)
          to label %206 unwind label %172

206:                                              ; preds = %204
  %207 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %208 unwind label %172

208:                                              ; preds = %206
  %209 = load double, ptr %12, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %210 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %211 unwind label %230

211:                                              ; preds = %208
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %14, ptr noundef nonnull align 8 dereferenceable(864) %210)
          to label %212 unwind label %230

212:                                              ; preds = %211
  %213 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %13, ptr noundef nonnull align 8 dereferenceable(280) %213)
          to label %214 unwind label %232

214:                                              ; preds = %212
  %215 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %216 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %217 unwind label %234

217:                                              ; preds = %214
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %16, ptr noundef nonnull align 8 dereferenceable(864) %216)
          to label %218 unwind label %234

218:                                              ; preds = %217
  %219 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %15, ptr noundef nonnull align 8 dereferenceable(280) %219)
          to label %220 unwind label %236

220:                                              ; preds = %218
  %221 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  invoke void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864) %207, double noundef %209, ptr noundef nonnull align 8 dereferenceable(205) %215, ptr noundef nonnull align 8 dereferenceable(205) %221)
          to label %222 unwind label %238

222:                                              ; preds = %220
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %223 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %224 unwind label %244

224:                                              ; preds = %222
  %225 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025) %223)
          to label %226 unwind label %244

226:                                              ; preds = %224
  %227 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %228 unwind label %244

228:                                              ; preds = %226
  %229 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %227)
          to label %255 unwind label %244

230:                                              ; preds = %211, %208
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %243

232:                                              ; preds = %212
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %242

234:                                              ; preds = %217, %214
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %241

236:                                              ; preds = %218
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %240

238:                                              ; preds = %220
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %240

240:                                              ; preds = %238, %236
  %.pn147 = phi { ptr, i32 } [ %239, %238 ], [ %237, %236 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %241

241:                                              ; preds = %240, %234
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %240 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br label %242

242:                                              ; preds = %241, %232
  %.pn147.pn.pn = phi { ptr, i32 } [ %.pn147.pn, %241 ], [ %233, %232 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %243

243:                                              ; preds = %242, %230
  %.pn147.pn.pn.pn = phi { ptr, i32 } [ %.pn147.pn.pn, %242 ], [ %231, %230 ]
  %.10 = extractvalue { ptr, i32 } %.pn147.pn.pn.pn, 0
  %.1078 = extractvalue { ptr, i32 } %.pn147.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %656

244:                                              ; preds = %228, %226, %224, %222
  %245 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %246 = extractvalue { ptr, i32 } %245, 0
  %247 = extractvalue { ptr, i32 } %245, 1
  %248 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE) #8
  %249 = icmp eq i32 %247, %248
  br i1 %249, label %250, label %656

250:                                              ; preds = %244
  %251 = call ptr @__cxa_begin_catch(ptr %246) #8
  %252 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %253 unwind label %266

253:                                              ; preds = %250
  invoke void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112) %251, ptr noundef nonnull align 8 dereferenceable(40) %252, i32 noundef 5)
          to label %254 unwind label %266

254:                                              ; preds = %253
  invoke void @__cxa_end_catch()
          to label %271 unwind label %268

255:                                              ; preds = %228
  %256 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %257 unwind label %172

257:                                              ; preds = %255
  call void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %256, i32 noundef 0)
  %258 = getelementptr inbounds i8, ptr %0, i64 192
  %259 = load i8, ptr %258, align 8, !tbaa !41, !range !31, !noundef !32
  %260 = trunc nuw i8 %259 to i1
  br i1 %260, label %261, label %274

261:                                              ; preds = %257
  %262 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %263 unwind label %172

263:                                              ; preds = %261
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %262, i8 noundef signext 84)
  %264 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %265 unwind label %172

265:                                              ; preds = %263
  call void @_ZN10SimTKIpopt9IpoptData18Set_tiny_step_flagEb(ptr noundef nonnull align 8 dereferenceable(864) %264, i1 noundef zeroext true)
  br label %274

266:                                              ; preds = %253, %250
  %267 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %270 unwind label %660

268:                                              ; preds = %254
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %270

270:                                              ; preds = %266, %268
  %.pn152 = phi { ptr, i32 } [ %269, %268 ], [ %267, %266 ]
  %.11 = extractvalue { ptr, i32 } %.pn152, 0
  %.1179 = extractvalue { ptr, i32 } %.pn152, 1
  br label %656

271:                                              ; preds = %254
  %272 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %273 unwind label %172

273:                                              ; preds = %271
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %272, i8 noundef signext 116)
  br label %274

274:                                              ; preds = %257, %265, %273
  %.1123211 = phi i8 [ 1, %257 ], [ 1, %265 ], [ 0, %273 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %275 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %276 unwind label %297

276:                                              ; preds = %274
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %18, ptr noundef nonnull align 8 dereferenceable(864) %275)
          to label %277 unwind label %297

277:                                              ; preds = %276
  %278 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %17, ptr noundef nonnull align 8 dereferenceable(280) %278)
          to label %279 unwind label %299

279:                                              ; preds = %277
  %280 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
  %281 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %280)
          to label %282 unwind label %301

282:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %283 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %284 unwind label %303

284:                                              ; preds = %282
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8 %20, ptr noundef nonnull align 8 dereferenceable(864) %283)
          to label %285 unwind label %303

285:                                              ; preds = %284
  %286 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %19, ptr noundef nonnull align 8 dereferenceable(280) %286)
          to label %287 unwind label %305

287:                                              ; preds = %285
  %288 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %289 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %288)
          to label %290 unwind label %307

290:                                              ; preds = %287
  %291 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %281, double noundef %289)
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  %292 = getelementptr inbounds i8, ptr %0, i64 104
  %293 = load double, ptr %292, align 8, !tbaa !42
  %294 = fcmp olt double %291, %293
  %295 = getelementptr inbounds i8, ptr %0, i64 192
  br i1 %294, label %296, label %314

296:                                              ; preds = %290
  store i8 1, ptr %295, align 8, !tbaa !41
  br label %317

297:                                              ; preds = %276, %274
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %313

299:                                              ; preds = %277
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %312

301:                                              ; preds = %279
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %311

303:                                              ; preds = %284, %282
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %310

305:                                              ; preds = %285
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %309

307:                                              ; preds = %287
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %309

309:                                              ; preds = %307, %305
  %.pn154 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br label %310

310:                                              ; preds = %309, %303
  %.pn154.pn = phi { ptr, i32 } [ %.pn154, %309 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  br label %311

311:                                              ; preds = %310, %301
  %.pn154.pn.pn = phi { ptr, i32 } [ %.pn154.pn, %310 ], [ %302, %301 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %312

312:                                              ; preds = %311, %299
  %.pn154.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn, %311 ], [ %300, %299 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %313

313:                                              ; preds = %312, %297
  %.pn154.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn, %312 ], [ %298, %297 ]
  %.16 = extractvalue { ptr, i32 } %.pn154.pn.pn.pn.pn, 0
  %.1684 = extractvalue { ptr, i32 } %.pn154.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %656

314:                                              ; preds = %290
  store i8 0, ptr %295, align 8, !tbaa !41
  br label %317

315:                                              ; preds = %194
  %316 = getelementptr inbounds i8, ptr %0, i64 192
  store i8 0, ptr %316, align 8, !tbaa !41
  br label %317

317:                                              ; preds = %296, %314, %315
  %.0125 = phi i8 [ 0, %315 ], [ 1, %314 ], [ 1, %296 ]
  %.2124 = phi i8 [ 0, %315 ], [ %.1123211, %314 ], [ %.1123211, %296 ]
  %318 = trunc nuw i8 %.3 to i1
  br i1 %318, label %385, label %319

319:                                              ; preds = %317
  %320 = trunc nuw i8 %.2124 to i1
  br i1 %320, label %385, label %321

321:                                              ; preds = %319
  %322 = getelementptr inbounds i8, ptr %0, i64 183
  %323 = load i8, ptr %322, align 1, !tbaa !40, !range !31, !noundef !32
  %324 = trunc nuw i8 %323 to i1
  br i1 %324, label %325, label %.peel.begin

325:                                              ; preds = %321
  %326 = getelementptr inbounds i8, ptr %0, i64 184
  %327 = load i32, ptr %326, align 8, !tbaa !43
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %326, align 8, !tbaa !43
  %329 = getelementptr inbounds i8, ptr %0, i64 80
  %330 = load i32, ptr %329, align 8, !tbaa !44
  %.not165 = icmp slt i32 %327, %330
  br i1 %.not165, label %331, label %.thread213

331:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #8
  store i8 0, ptr %21, align 1, !tbaa !36
  %332 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %333 unwind label %343

333:                                              ; preds = %331
  %334 = zext i1 %332 to i8
  br i1 %332, label %335, label %347

335:                                              ; preds = %333
  %336 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %337 unwind label %343

337:                                              ; preds = %335
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %336, i8 noundef signext 115)
  %338 = load i8, ptr %21, align 1, !tbaa !36, !range !31, !noundef !32
  %339 = trunc nuw i8 %338 to i1
  br i1 %339, label %340, label %347

340:                                              ; preds = %337
  store i8 0, ptr %322, align 1, !tbaa !40
  store i32 0, ptr %326, align 8, !tbaa !43
  %341 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %342 unwind label %343

342:                                              ; preds = %340
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %341, i8 noundef signext 83)
  br label %347

343:                                              ; preds = %340, %335, %331
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  %346 = extractvalue { ptr, i32 } %344, 1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #8
  br label %656

347:                                              ; preds = %337, %342, %333
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #8
  br label %385

.peel.begin:                                      ; preds = %321
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  %348 = getelementptr inbounds i8, ptr %0, i64 128
  %349 = getelementptr inbounds i8, ptr %0, i64 112
  %350 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(1) %22, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %351 unwind label %.loopexit.loopexit.split-lp

351:                                              ; preds = %.peel.begin
  %352 = load i8, ptr %168, align 1, !tbaa !25, !range !31, !noundef !32
  %353 = trunc nuw i8 %352 to i1
  br i1 %353, label %354, label %.loopexit256

354:                                              ; preds = %351
  br i1 %350, label %.loopexit260, label %355

355:                                              ; preds = %354
  %356 = load i32, ptr %348, align 8, !tbaa !45
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %348, align 8, !tbaa !45
  %358 = load i8, ptr %22, align 1, !tbaa !36, !range !31, !noundef !32
  %359 = trunc nuw i8 %358 to i1
  %360 = load i32, ptr %349, align 8
  %.not160.peel = icmp sge i32 %356, %360
  %or.cond204.not.peel = select i1 %359, i1 true, i1 %.not160.peel
  br i1 %or.cond204.not.peel, label %361, label %.loopexit256

361:                                              ; preds = %355
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.peel.newph unwind label %.loopexit.loopexit.split-lp

.peel.newph:                                      ; preds = %361, %384
  %362 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(1) %22, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %363 unwind label %.loopexit.loopexit

363:                                              ; preds = %.peel.newph
  %364 = load i8, ptr %168, align 1, !tbaa !25, !range !31, !noundef !32
  %365 = trunc nuw i8 %364 to i1
  br i1 %365, label %366, label %.loopexit256

366:                                              ; preds = %363
  br i1 %362, label %.loopexit260, label %378

.loopexit260:                                     ; preds = %366, %354
  store i8 0, ptr %168, align 1, !tbaa !25
  %367 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %368 unwind label %.loopexit.split-lp

368:                                              ; preds = %.loopexit260
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.69, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %369 unwind label %373

369:                                              ; preds = %368
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %367, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %370 unwind label %375

370:                                              ; preds = %369
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  %371 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %372 unwind label %.loopexit.split-lp

372:                                              ; preds = %370
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %371, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.70)
          to label %.loopexit256 unwind label %.loopexit.split-lp

.loopexit.loopexit:                               ; preds = %384, %.peel.newph
  %lpad.loopexit258 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.loopexit.split-lp:                      ; preds = %.peel.begin, %361
  %lpad.loopexit.split-lp259 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.split-lp:                               ; preds = %.loopexit260, %370, %372
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

373:                                              ; preds = %368
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

375:                                              ; preds = %369
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %377

377:                                              ; preds = %375, %373
  %.pn161 = phi { ptr, i32 } [ %376, %375 ], [ %374, %373 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %.loopexit

378:                                              ; preds = %366
  %379 = load i32, ptr %348, align 8, !tbaa !45
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %348, align 8, !tbaa !45
  %381 = load i8, ptr %22, align 1, !tbaa !36, !range !31, !noundef !32
  %382 = trunc nuw i8 %381 to i1
  %383 = load i32, ptr %349, align 8
  %.not160 = icmp sge i32 %379, %383
  %or.cond204.not = select i1 %382, i1 true, i1 %.not160
  br i1 %or.cond204.not, label %384, label %.loopexit256

384:                                              ; preds = %378
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.peel.newph unwind label %.loopexit.loopexit, !llvm.loop !46

.loopexit256:                                     ; preds = %351, %355, %378, %363, %372
  %.2127.shrunk.ph = phi i1 [ true, %372 ], [ %350, %351 ], [ true, %355 ], [ %362, %363 ], [ true, %378 ]
  %.2127.le = zext i1 %.2127.shrunk.ph to i8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  br label %385

.loopexit:                                        ; preds = %.loopexit.loopexit, %.loopexit.loopexit.split-lp, %.loopexit.split-lp, %377
  %.pn163 = phi { ptr, i32 } [ %.pn161, %377 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit258, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp259, %.loopexit.loopexit.split-lp ]
  %.18 = extractvalue { ptr, i32 } %.pn163, 0
  %.1886 = extractvalue { ptr, i32 } %.pn163, 1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  br label %656

385:                                              ; preds = %.loopexit256, %347, %319, %317
  %.3128 = phi i8 [ %.0125, %317 ], [ %.0125, %319 ], [ %334, %347 ], [ %.2127.le, %.loopexit256 ]
  %386 = trunc nuw i8 %.3128 to i1
  br i1 %386, label %580, label %.thread213

.thread213:                                       ; preds = %325, %385
  %.3128215 = phi i8 [ %.3128, %385 ], [ 0, %325 ]
  %387 = getelementptr inbounds i8, ptr %0, i64 181
  %388 = load i8, ptr %387, align 1, !tbaa !49, !range !31, !noundef !32
  %389 = trunc nuw i8 %388 to i1
  br i1 %389, label %394, label %390

390:                                              ; preds = %.thread213
  %391 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %392 unwind label %172

392:                                              ; preds = %390
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %391, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.71)
          to label %393 unwind label %172

393:                                              ; preds = %392
  store i8 1, ptr %83, align 2, !tbaa !29
  br label %655

394:                                              ; preds = %.thread213
  %395 = getelementptr inbounds i8, ptr %0, i64 183
  %396 = load i8, ptr %395, align 1, !tbaa !40, !range !31, !noundef !32
  %brmerge205246 = or i8 %396, %.3
  %brmerge205 = trunc nuw i8 %brmerge205246 to i1
  br i1 %brmerge205, label %427, label %397

397:                                              ; preds = %394
  %398 = load i8, ptr %123, align 2, !tbaa !27, !range !31, !noundef !32
  %399 = trunc nuw i8 %398 to i1
  br i1 %399, label %427, label %400

400:                                              ; preds = %397
  %401 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %402 unwind label %172

402:                                              ; preds = %400
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %401, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.72)
          to label %403 unwind label %172

403:                                              ; preds = %402
  %404 = getelementptr inbounds i8, ptr %0, i64 200
  %405 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %404)
  %406 = load ptr, ptr %405, align 8, !tbaa !33
  %407 = getelementptr inbounds i8, ptr %406, i64 40
  %408 = load ptr, ptr %407, align 8
  invoke void %408(ptr noundef nonnull align 8 dereferenceable(49) %405)
          to label %409 unwind label %172

409:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  %410 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %411 unwind label %419

411:                                              ; preds = %409
  %412 = zext i1 %410 to i8
  br i1 %410, label %413, label %426

413:                                              ; preds = %411
  %414 = load i8, ptr %25, align 1, !tbaa !36, !range !31, !noundef !32
  %415 = trunc nuw i8 %414 to i1
  br i1 %415, label %416, label %423

416:                                              ; preds = %413
  %417 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %418 unwind label %419

418:                                              ; preds = %416
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %417, i8 noundef signext 83)
  br label %426

419:                                              ; preds = %423, %416, %409
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  %422 = extractvalue { ptr, i32 } %420, 1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  br label %656

423:                                              ; preds = %413
  store i8 1, ptr %395, align 1, !tbaa !40
  %424 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %425 unwind label %419

425:                                              ; preds = %423
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %424, i8 noundef signext 115)
  br label %426

426:                                              ; preds = %418, %425, %411
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  br label %427

427:                                              ; preds = %394, %426, %397
  %.4129 = phi i8 [ %.3128215, %394 ], [ %.3128215, %397 ], [ %412, %426 ]
  %428 = trunc nuw i8 %.4129 to i1
  br i1 %428, label %655, label %429

429:                                              ; preds = %427
  %430 = load i8, ptr %395, align 1, !tbaa !40, !range !31, !noundef !32
  %431 = trunc nuw i8 %430 to i1
  br i1 %431, label %438, label %432

432:                                              ; preds = %429
  %433 = getelementptr inbounds i8, ptr %0, i64 200
  %434 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %435 = load ptr, ptr %434, align 8, !tbaa !33
  %436 = getelementptr inbounds i8, ptr %435, i64 40
  %437 = load ptr, ptr %436, align 8
  invoke void %437(ptr noundef nonnull align 8 dereferenceable(49) %434)
          to label %438 unwind label %172

438:                                              ; preds = %432, %429
  %439 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %440 unwind label %172

440:                                              ; preds = %438
  br i1 %439, label %441, label %453

441:                                              ; preds = %440
  %442 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %443 unwind label %.thread216

443:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %444 unwind label %447

444:                                              ; preds = %443
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %442, ptr noundef nonnull %26, ptr noundef nonnull %28, i32 noundef 493)
          to label %445 unwind label %449

445:                                              ; preds = %444
  invoke void @__cxa_throw(ptr nonnull %442, ptr nonnull @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %449

.thread216:                                       ; preds = %441
  %446 = landingpad { ptr, i32 }
          cleanup
  %.20219 = extractvalue { ptr, i32 } %446, 0
  %.2088220 = extractvalue { ptr, i32 } %446, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  br label %452

447:                                              ; preds = %443
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %451

449:                                              ; preds = %445, %444
  %.0113 = phi i1 [ false, %445 ], [ true, %444 ]
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %451

451:                                              ; preds = %447, %449
  %.1114 = phi i1 [ %.0113, %449 ], [ true, %447 ]
  %.pn184 = phi { ptr, i32 } [ %450, %449 ], [ %448, %447 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  %.20 = extractvalue { ptr, i32 } %.pn184, 0
  %.2088 = extractvalue { ptr, i32 } %.pn184, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  br i1 %.1114, label %452, label %656

452:                                              ; preds = %.thread216, %451
  %.2088222 = phi i32 [ %.2088220, %.thread216 ], [ %.2088, %451 ]
  %.20221 = phi ptr [ %.20219, %.thread216 ], [ %.20, %451 ]
  call void @__cxa_free_exception(ptr %442) #8
  br label %656

453:                                              ; preds = %440
  %454 = getelementptr inbounds i8, ptr %0, i64 208
  %455 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_16RestorationPhaseEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %454)
          to label %456 unwind label %172

456:                                              ; preds = %453
  br i1 %455, label %473, label %457

457:                                              ; preds = %456
  %458 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %459 unwind label %.thread223

459:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %460 unwind label %464

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %461 unwind label %466

461:                                              ; preds = %460
  invoke void @_ZN10SimTKIpopt14IpoptExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iS6_(ptr noundef nonnull align 8 dereferenceable(112) %458, ptr noundef nonnull %30, ptr noundef nonnull %32, i32 noundef 497, ptr noundef nonnull %34)
          to label %462 unwind label %468

462:                                              ; preds = %461
  invoke void @__cxa_throw(ptr nonnull %458, ptr nonnull @_ZTIN10SimTKIpopt14IpoptExceptionE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %468

.thread223:                                       ; preds = %457
  %463 = landingpad { ptr, i32 }
          cleanup
  %.23226 = extractvalue { ptr, i32 } %463, 0
  %.2391227 = extractvalue { ptr, i32 } %463, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  br label %472

464:                                              ; preds = %459
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %471

466:                                              ; preds = %460
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %470

468:                                              ; preds = %462, %461
  %.0109 = phi i1 [ false, %462 ], [ true, %461 ]
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %470

470:                                              ; preds = %468, %466
  %.1110 = phi i1 [ %.0109, %468 ], [ true, %466 ]
  %.pn166 = phi { ptr, i32 } [ %469, %468 ], [ %467, %466 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %471

471:                                              ; preds = %464, %470
  %.2111 = phi i1 [ %.1110, %470 ], [ true, %464 ]
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %470 ], [ %465, %464 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  %.23 = extractvalue { ptr, i32 } %.pn166.pn, 0
  %.2391 = extractvalue { ptr, i32 } %.pn166.pn, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  br i1 %.2111, label %472, label %656

472:                                              ; preds = %.thread223, %471
  %.2391229 = phi i32 [ %.2391227, %.thread223 ], [ %.2391, %471 ]
  %.23228 = phi ptr [ %.23226, %.thread223 ], [ %.23, %471 ]
  call void @__cxa_free_exception(ptr %458) #8
  br label %656

473:                                              ; preds = %456
  %474 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %475 unwind label %172

475:                                              ; preds = %473
  %476 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %474)
          to label %477 unwind label %172

477:                                              ; preds = %475
  %478 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %479 unwind label %172

479:                                              ; preds = %477
  %480 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %478)
  %481 = fmul double %480, 1.000000e-02
  %482 = fcmp ugt double %476, %481
  br i1 %482, label %525, label %483

483:                                              ; preds = %479
  %484 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %485 unwind label %496

485:                                              ; preds = %483
  br i1 %484, label %486, label %505

486:                                              ; preds = %485
  %487 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %488 unwind label %496

488:                                              ; preds = %486
  %489 = getelementptr inbounds i8, ptr %0, i64 176
  %490 = load i32, ptr %489, align 8, !tbaa !50
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %487, i32 noundef 2, i32 noundef 8, ptr noundef nonnull @.str.77, i32 noundef %490)
          to label %491 unwind label %496

491:                                              ; preds = %488
  %492 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %493 unwind label %.thread230

493:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %494 unwind label %499

494:                                              ; preds = %493
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %492, ptr noundef nonnull %36, ptr noundef nonnull %38, i32 noundef 507)
          to label %495 unwind label %501

495:                                              ; preds = %494
  invoke void @__cxa_throw(ptr nonnull %492, ptr nonnull @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %501

496:                                              ; preds = %511, %509, %507, %505, %488, %486, %483
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %524

.thread230:                                       ; preds = %491
  %498 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #8
  br label %504

499:                                              ; preds = %493
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %503

501:                                              ; preds = %495, %494
  %.065 = phi i1 [ false, %495 ], [ true, %494 ]
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %503

503:                                              ; preds = %499, %501
  %.pn180 = phi { ptr, i32 } [ %502, %501 ], [ %500, %499 ]
  %.166 = phi i1 [ %.065, %501 ], [ true, %499 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #8
  br i1 %.166, label %504, label %524

504:                                              ; preds = %.thread230, %503
  %.pn180.pn233 = phi { ptr, i32 } [ %498, %.thread230 ], [ %.pn180, %503 ]
  call void @__cxa_free_exception(ptr %492) #8
  br label %524

505:                                              ; preds = %485
  %506 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %507 unwind label %496

507:                                              ; preds = %505
  %508 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %509 unwind label %496

509:                                              ; preds = %507
  %510 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %508)
          to label %511 unwind label %496

511:                                              ; preds = %509
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %506, i32 noundef 1, i32 noundef 8, ptr noundef nonnull @.str.79, double noundef %510)
          to label %512 unwind label %496

512:                                              ; preds = %511
  %513 = call ptr @__cxa_allocate_exception(i64 112) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %514 unwind label %.thread234

514:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %515 unwind label %518

515:                                              ; preds = %514
  invoke void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %513, ptr noundef nonnull %40, ptr noundef nonnull %42, i32 noundef 514)
          to label %516 unwind label %520

516:                                              ; preds = %515
  invoke void @__cxa_throw(ptr nonnull %513, ptr nonnull @_ZTIN10SimTKIpopt18RESTORATION_FAILEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %520

.thread234:                                       ; preds = %512
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  br label %523

518:                                              ; preds = %514
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %522

520:                                              ; preds = %516, %515
  %.062 = phi i1 [ false, %516 ], [ true, %515 ]
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %522

522:                                              ; preds = %518, %520
  %.pn177 = phi { ptr, i32 } [ %521, %520 ], [ %519, %518 ]
  %.163 = phi i1 [ %.062, %520 ], [ true, %518 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  br i1 %.163, label %523, label %524

523:                                              ; preds = %.thread234, %522
  %.pn177.pn237 = phi { ptr, i32 } [ %517, %.thread234 ], [ %.pn177, %522 ]
  call void @__cxa_free_exception(ptr %513) #8
  br label %524

524:                                              ; preds = %522, %523, %503, %504, %496
  %.pn180.pn.pn = phi { ptr, i32 } [ %.pn180.pn233, %504 ], [ %.pn180, %503 ], [ %497, %496 ], [ %.pn177.pn237, %523 ], [ %.pn177, %522 ]
  %.28 = extractvalue { ptr, i32 } %.pn180.pn.pn, 0
  %.2896 = extractvalue { ptr, i32 } %.pn180.pn.pn, 1
  br label %656

525:                                              ; preds = %479
  %526 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %527 unwind label %172

527:                                              ; preds = %525
  %528 = load double, ptr %12, align 8, !tbaa !38
  call void @_ZN10SimTKIpopt9IpoptData21Set_info_alpha_primalEd(ptr noundef nonnull align 8 dereferenceable(864) %526, double noundef %528)
  %529 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %530 unwind label %172

530:                                              ; preds = %527
  call void @_ZN10SimTKIpopt9IpoptData19Set_info_alpha_dualEd(ptr noundef nonnull align 8 dereferenceable(864) %529, double noundef 0.000000e+00)
  %531 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %532 unwind label %172

532:                                              ; preds = %530
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %531, i8 noundef signext 82)
  %533 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %534 unwind label %172

534:                                              ; preds = %532
  %535 = load i32, ptr %11, align 4, !tbaa !37
  %536 = add nsw i32 %535, 1
  call void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %533, i32 noundef %536)
  %537 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %454)
  %538 = load ptr, ptr %537, align 8, !tbaa !33
  %539 = getelementptr inbounds i8, ptr %538, i64 24
  %540 = load ptr, ptr %539, align 8
  %541 = invoke noundef zeroext i1 %540(ptr noundef nonnull align 8 dereferenceable(49) %537)
          to label %542 unwind label %172

542:                                              ; preds = %534
  br i1 %541, label %572, label %543

543:                                              ; preds = %542
  %544 = invoke noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %545 unwind label %551

545:                                              ; preds = %543
  %546 = call ptr @__cxa_allocate_exception(i64 112) #8
  br i1 %544, label %547, label %560

547:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.81, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %548 unwind label %.thread238

548:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %549 unwind label %554

549:                                              ; preds = %548
  invoke void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %546, ptr noundef nonnull %44, ptr noundef nonnull %46, i32 noundef 531)
          to label %550 unwind label %556

550:                                              ; preds = %549
  invoke void @__cxa_throw(ptr nonnull %546, ptr nonnull @_ZTIN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %556

551:                                              ; preds = %543
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %571

.thread238:                                       ; preds = %547
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #8
  br label %559

554:                                              ; preds = %548
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %558

556:                                              ; preds = %550, %549
  %.055 = phi i1 [ false, %550 ], [ true, %549 ]
  %557 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %558

558:                                              ; preds = %554, %556
  %.pn173 = phi { ptr, i32 } [ %557, %556 ], [ %555, %554 ]
  %.156 = phi i1 [ %.055, %556 ], [ true, %554 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #8
  br i1 %.156, label %559, label %571

559:                                              ; preds = %.thread238, %558
  %.pn173.pn241 = phi { ptr, i32 } [ %553, %.thread238 ], [ %.pn173, %558 ]
  call void @__cxa_free_exception(ptr %546) #8
  br label %571

560:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %561 unwind label %.thread242

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %562 unwind label %565

562:                                              ; preds = %561
  invoke void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %546, ptr noundef nonnull %48, ptr noundef nonnull %50, i32 noundef 535)
          to label %563 unwind label %567

563:                                              ; preds = %562
  invoke void @__cxa_throw(ptr nonnull %546, ptr nonnull @_ZTIN10SimTKIpopt18RESTORATION_FAILEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %663 unwind label %567

.thread242:                                       ; preds = %560
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #8
  br label %570

565:                                              ; preds = %561
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %569

567:                                              ; preds = %563, %562
  %.052 = phi i1 [ false, %563 ], [ true, %562 ]
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %569

569:                                              ; preds = %565, %567
  %.pn170 = phi { ptr, i32 } [ %568, %567 ], [ %566, %565 ]
  %.153 = phi i1 [ %.052, %567 ], [ true, %565 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #8
  br i1 %.153, label %570, label %571

570:                                              ; preds = %.thread242, %569
  %.pn170.pn245 = phi { ptr, i32 } [ %564, %.thread242 ], [ %.pn170, %569 ]
  call void @__cxa_free_exception(ptr %546) #8
  br label %571

571:                                              ; preds = %569, %570, %558, %559, %551
  %.pn173.pn.pn = phi { ptr, i32 } [ %.pn173.pn241, %559 ], [ %.pn173, %558 ], [ %.pn170.pn245, %570 ], [ %.pn170, %569 ], [ %552, %551 ]
  %.33 = extractvalue { ptr, i32 } %.pn173.pn.pn, 0
  %.33101 = extractvalue { ptr, i32 } %.pn173.pn.pn, 1
  br label %656

572:                                              ; preds = %542
  %573 = getelementptr inbounds i8, ptr %0, i64 188
  store i32 0, ptr %573, align 4, !tbaa !51
  %574 = load i8, ptr %123, align 2, !tbaa !27, !range !31, !noundef !32
  %575 = trunc nuw i8 %574 to i1
  br i1 %575, label %576, label %577

576:                                              ; preds = %572
  store i8 0, ptr %123, align 2, !tbaa !27
  br label %577

577:                                              ; preds = %576, %572
  store i8 0, ptr %395, align 1, !tbaa !40
  %578 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 0, ptr %578, align 8, !tbaa !43
  %579 = getelementptr inbounds i8, ptr %0, i64 124
  store i32 0, ptr %579, align 4, !tbaa !26
  br label %655

580:                                              ; preds = %385
  %581 = getelementptr inbounds i8, ptr %0, i64 183
  %582 = load i8, ptr %581, align 1, !tbaa !40, !range !31, !noundef !32
  %583 = trunc nuw i8 %582 to i1
  br i1 %583, label %584, label %586

584:                                              ; preds = %580
  %585 = trunc nuw i8 %.2124 to i1
  br i1 %585, label %586, label %655

586:                                              ; preds = %584, %580
  %587 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %588 unwind label %613

588:                                              ; preds = %586
  %589 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %590 unwind label %613

590:                                              ; preds = %588
  %591 = call noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %589)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %592 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %52, ptr noundef nonnull align 8 dereferenceable(280) %592)
          to label %593 unwind label %615

593:                                              ; preds = %590
  %594 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #8
  %595 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %53, ptr noundef nonnull align 8 dereferenceable(280) %595)
          to label %596 unwind label %617

596:                                              ; preds = %593
  %597 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  %598 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %54, ptr noundef nonnull align 8 dereferenceable(280) %598)
          to label %599 unwind label %619

599:                                              ; preds = %596
  %600 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  %601 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %55, ptr noundef nonnull align 8 dereferenceable(280) %601)
          to label %602 unwind label %621

602:                                              ; preds = %599
  %603 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55)
  %604 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities22dual_frac_to_the_boundEdRKNS_6VectorES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(2025) %587, double noundef %591, ptr noundef nonnull align 8 dereferenceable(205) %594, ptr noundef nonnull align 8 dereferenceable(205) %597, ptr noundef nonnull align 8 dereferenceable(205) %600, ptr noundef nonnull align 8 dereferenceable(205) %603)
          to label %605 unwind label %623

605:                                              ; preds = %602
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  %606 = load double, ptr %12, align 8, !tbaa !38
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch15PerformDualStepEddRNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, double noundef %606, double noundef %604, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %607 unwind label %613

607:                                              ; preds = %605
  %608 = load i32, ptr %11, align 4, !tbaa !37
  %609 = icmp eq i32 %608, 0
  %610 = getelementptr inbounds i8, ptr %0, i64 188
  br i1 %609, label %611, label %629

611:                                              ; preds = %607
  store i32 0, ptr %610, align 4, !tbaa !51
  %612 = getelementptr inbounds i8, ptr %0, i64 124
  store i32 0, ptr %612, align 4, !tbaa !26
  br label %635

613:                                              ; preds = %652, %650, %648, %646, %640, %638, %605, %588, %586
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %654

615:                                              ; preds = %590
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %628

617:                                              ; preds = %593
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %627

619:                                              ; preds = %596
  %620 = landingpad { ptr, i32 }
          cleanup
  br label %626

621:                                              ; preds = %599
  %622 = landingpad { ptr, i32 }
          cleanup
  br label %625

623:                                              ; preds = %602
  %624 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %625

625:                                              ; preds = %623, %621
  %.pn187 = phi { ptr, i32 } [ %624, %623 ], [ %622, %621 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %626

626:                                              ; preds = %625, %619
  %.pn187.pn = phi { ptr, i32 } [ %.pn187, %625 ], [ %620, %619 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  br label %627

627:                                              ; preds = %626, %617
  %.pn187.pn.pn = phi { ptr, i32 } [ %.pn187.pn, %626 ], [ %618, %617 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %628

628:                                              ; preds = %627, %615
  %.pn187.pn.pn.pn = phi { ptr, i32 } [ %.pn187.pn.pn, %627 ], [ %616, %615 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %654

629:                                              ; preds = %607
  %630 = load i32, ptr %610, align 4, !tbaa !51
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %610, align 4, !tbaa !51
  %632 = getelementptr inbounds i8, ptr %0, i64 124
  %633 = load i32, ptr %632, align 4, !tbaa !26
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %632, align 4, !tbaa !26
  br label %635

635:                                              ; preds = %629, %611
  %636 = load i8, ptr %123, align 2, !tbaa !27, !range !31, !noundef !32
  %637 = trunc nuw i8 %636 to i1
  br i1 %637, label %638, label %655

638:                                              ; preds = %635
  %639 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %640 unwind label %613

640:                                              ; preds = %638
  %641 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %639)
          to label %642 unwind label %613

642:                                              ; preds = %640
  %643 = getelementptr inbounds i8, ptr %0, i64 88
  %644 = load double, ptr %643, align 8, !tbaa !28
  %645 = fcmp ugt double %641, %644
  br i1 %645, label %655, label %646

646:                                              ; preds = %642
  %647 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %648 unwind label %613

648:                                              ; preds = %646
  %649 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %650 unwind label %613

650:                                              ; preds = %648
  %651 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %649)
          to label %652 unwind label %613

652:                                              ; preds = %650
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %647, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.83, double noundef %651)
          to label %653 unwind label %613

653:                                              ; preds = %652
  store i8 0, ptr %123, align 2, !tbaa !27
  br label %655

654:                                              ; preds = %628, %613
  %.pn192 = phi { ptr, i32 } [ %614, %613 ], [ %.pn187.pn.pn.pn, %628 ]
  %.38 = extractvalue { ptr, i32 } %.pn192, 0
  %.38106 = extractvalue { ptr, i32 } %.pn192, 1
  br label %656

655:                                              ; preds = %635, %642, %653, %584, %393, %577, %427
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  ret void

656:                                              ; preds = %471, %472, %451, %452, %654, %571, %524, %419, %.loopexit, %343, %313, %270, %244, %243, %172
  %.39107 = phi i32 [ %.38106, %654 ], [ %.2088222, %452 ], [ %.2088, %451 ], [ %.2896, %524 ], [ %.33101, %571 ], [ %175, %172 ], [ %.2391229, %472 ], [ %.2391, %471 ], [ %422, %419 ], [ %346, %343 ], [ %.1886, %.loopexit ], [ %.1684, %313 ], [ %.1179, %270 ], [ %247, %244 ], [ %.1078, %243 ]
  %.39 = phi ptr [ %.38, %654 ], [ %.20221, %452 ], [ %.20, %451 ], [ %.28, %524 ], [ %.33, %571 ], [ %174, %172 ], [ %.23228, %472 ], [ %.23, %471 ], [ %421, %419 ], [ %345, %343 ], [ %.18, %.loopexit ], [ %.16, %313 ], [ %.11, %270 ], [ %246, %244 ], [ %.10, %243 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  br label %657

657:                                              ; preds = %161, %656, %116, %105
  %.40108 = phi i32 [ %.39107, %656 ], [ %.674, %161 ], [ %.169, %116 ], [ %108, %105 ]
  %.40 = phi ptr [ %.39, %656 ], [ %.6, %161 ], [ %.159, %116 ], [ %107, %105 ]
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  %658 = insertvalue { ptr, i32 } poison, ptr %.40, 0
  %659 = insertvalue { ptr, i32 } %658, i32 %.40108, 1
  resume { ptr, i32 } %659

660:                                              ; preds = %266
  %661 = landingpad { ptr, i32 }
          catch ptr null
  %662 = extractvalue { ptr, i32 } %661, 0
  call void @__clang_call_terminate(ptr %662) #10
  unreachable

663:                                              ; preds = %563, %550, %516, %495, %462, %445
  unreachable
}

declare void @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #2 align 2

declare noundef zeroext i1 @_ZNK10SimTKIpopt25IpoptCalculatedQuantities15IsSquareProblemEv(ptr noundef nonnull align 8 dereferenceable(2025)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch19CurrentIsAcceptableEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch20StoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8, ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #5 align 2

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

declare void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.40") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef, double noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.10") align 8, ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3y_dEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch14DetectTinyStepEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch12StopWatchDogERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch13StartWatchDogEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29curr_primal_frac_to_the_boundEd(ptr noundef nonnull align 8 dereferenceable(2025), double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #2 align 2

declare void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864), double noundef, ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025)) local_unnamed_addr #4

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025)) local_unnamed_addr #4

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) local_unnamed_addr #3 align 2

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864), i8 noundef signext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData18Set_tiny_step_flagEb(ptr noundef nonnull align 8 dereferenceable(864), i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch16TrySoftRestoStepERNS_8SmartPtrINS_14IteratesVectorEEERb(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt24ACCEPTABLE_POINT_REACHEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3 align 2

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt14IpoptExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iS6_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef, ptr noundef) unnamed_addr #3 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch22RestoreAcceptablePointEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt18RESTORATION_FAILEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt14IpoptExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData21Set_info_alpha_primalEd(ptr noundef nonnull align 8 dereferenceable(864), double noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData19Set_info_alpha_dualEd(ptr noundef nonnull align 8 dereferenceable(864), double noundef) local_unnamed_addr #2 align 2

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities22dual_frac_to_the_boundEdRKNS_6VectorES3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(2025), double noundef, ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205), ptr noundef nonnull align 8 dereferenceable(205)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8, ptr noundef nonnull align 8 dereferenceable(280)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt22BacktrackingLineSearch15PerformDualStepEddRNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224), double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noinline noreturn nounwind uwtable "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 #2 = { 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 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 = { "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 = { 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 #7 = { nofree nosync nounwind memory(none) }
attributes #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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, !19, i64 160}
!6 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearchE", !7, i64 0, !19, i64 56, !20, i64 64, !19, i64 72, !10, i64 80, !18, i64 84, !18, i64 85, !18, i64 86, !19, i64 88, !19, i64 96, !19, i64 104, !10, i64 112, !10, i64 116, !18, i64 120, !18, i64 121, !10, i64 124, !10, i64 128, !19, i64 136, !21, i64 144, !21, i64 152, !19, i64 160, !21, i64 168, !10, i64 176, !18, i64 180, !18, i64 181, !18, i64 182, !18, i64 183, !10, i64 184, !10, i64 188, !18, i64 192, !22, i64 200, !23, i64 208, !24, i64 216}
!7 = !{!"_ZTSN10SimTKIpopt10LineSearchE", !8, i64 0}
!8 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !9, i64 0, !13, i64 16, !15, i64 24, !16, i64 32, !17, i64 40, !18, i64 48}
!9 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !10, i64 8}
!10 = !{!"int", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !14, i64 0}
!14 = !{!"any pointer", !11, i64 0}
!15 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !14, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !14, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !14, i64 0}
!18 = !{!"bool", !11, i64 0}
!19 = !{!"double", !11, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearch13AlphaForYEnumE", !11, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !14, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEE", !14, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEE", !14, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16ConvergenceCheckEEE", !14, i64 0}
!25 = !{!6, !18, i64 121}
!26 = !{!6, !10, i64 124}
!27 = !{!6, !18, i64 86}
!28 = !{!6, !19, i64 88}
!29 = !{!6, !18, i64 182}
!30 = !{!6, !18, i64 180}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!34, !34, i64 0}
!34 = !{!"vtable pointer", !12, i64 0}
!35 = !{!6, !18, i64 120}
!36 = !{!18, !18, i64 0}
!37 = !{!10, !10, i64 0}
!38 = !{!19, !19, i64 0}
!39 = !{!6, !10, i64 116}
!40 = !{!6, !18, i64 183}
!41 = !{!6, !18, i64 192}
!42 = !{!6, !19, i64 104}
!43 = !{!6, !10, i64 184}
!44 = !{!6, !10, i64 80}
!45 = !{!6, !10, i64 128}
!46 = distinct !{!46, !47, !48}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!"llvm.loop.peeled.count", i32 1}
!49 = !{!6, !18, i64 181}
!50 = !{!6, !10, i64 176}
!51 = !{!6, !10, i64 188}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass