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

; 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.39" = type { ptr }
%"class.SimTKIpopt::SmartPtr.47" = type { ptr }
%"class.SimTKIpopt::SmartPtr.20" = 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.22" = type { i8 }
%"class.SimTKIpopt::SmartPtr.58" = type { ptr }
%"class.SimTKIpopt::AdaptiveMuUpdate" = type { %"class.SimTKIpopt::MuUpdate.base", double, double, double, i8, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.11", %"class.SimTKIpopt::SmartPtr.11", double, double, i32, %"class.std::__cxx11::list", double, %"class.SimTKIpopt::Filter", i8, i8, i8, %"class.SimTKIpopt::SmartPtr.20" }
%"class.SimTKIpopt::MuUpdate.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.10" = type { ptr }
%"class.SimTKIpopt::SmartPtr.11" = type { ptr }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<double, std::allocator<double>>::_List_impl" }
%"struct.std::__cxx11::_List_base<double, std::allocator<double>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.SimTKIpopt::Filter" = type { i32, %"class.std::__cxx11::list.15" }
%"class.std::__cxx11::list.15" = type { %"class.std::__cxx11::_List_base.16" }
%"class.std::__cxx11::_List_base.16" = type { %"struct.std::__cxx11::_List_base<SimTKIpopt::FilterEntry *, std::allocator<SimTKIpopt::FilterEntry *>>::_List_impl" }
%"struct.std::__cxx11::_List_base<SimTKIpopt::FilterEntry *, std::allocator<SimTKIpopt::FilterEntry *>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }

@.str.61 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.66 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [2 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: 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 #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt16AdaptiveMuUpdate22UpdateBarrierParameterEv(ptr noundef nonnull align 8 dereferenceable(304) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca %"class.SimTKIpopt::SmartPtr.39", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %9 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %10 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %11 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %12 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %13 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %14 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %15 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca %"class.SimTKIpopt::SmartPtr.39", align 8
  %23 = alloca double, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.22", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.22", align 1
  %28 = alloca i1, align 1
  %29 = alloca double, align 8
  %30 = alloca i8, align 1
  %31 = alloca %"class.SimTKIpopt::SmartPtr.58", align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.22", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.22", align 1
  %38 = alloca i1, align 1
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i8, align 1
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.22", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.22", align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  %48 = load ptr, ptr %3, align 8
  %49 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 4
  %50 = load i8, ptr %49, align 8, !tbaa !9, !range !38, !noundef !39
  %51 = trunc i8 %50 to i1
  br i1 %51, label %52, label %75

52:                                               ; preds = %1
  %53 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %54 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %53)
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %55 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @_ZNK10SimTKIpopt8IpoptNLP11NLP_scalingEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.39") align 8 %4, ptr noundef nonnull align 8 dereferenceable(24) %55)
  %56 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %57 unwind label %71

57:                                               ; preds = %52
  %58 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 17
  %59 = load ptr, ptr %56, align 8, !tbaa !40
  %60 = getelementptr inbounds ptr, ptr %59, i64 2
  %61 = load ptr, ptr %60, align 8
  %62 = invoke noundef double %61(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %63 unwind label %71

63:                                               ; preds = %57
  %64 = invoke noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %54, double noundef %62)
          to label %65 unwind label %71

65:                                               ; preds = %63
  %66 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 8
  %67 = load double, ptr %66, align 8, !tbaa !42
  %68 = fadd double %67, 1.000000e+00
  %69 = fdiv double %64, %68
  %70 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 3
  store double %69, ptr %70, align 8, !tbaa !43
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  br label %75

71:                                               ; preds = %63, %57, %52
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %5, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %6, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  br label %498

75:                                               ; preds = %65, %1
  %76 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 2
  %77 = load double, ptr %76, align 8, !tbaa !44
  %78 = fcmp olt double %77, 0.000000e+00
  br i1 %78, label %79, label %89

79:                                               ; preds = %75
  %80 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 1
  %81 = load double, ptr %80, align 8, !tbaa !45
  %82 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %83 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15curr_avrg_complEv(ptr noundef nonnull align 8 dereferenceable(2025) %82)
  %84 = fmul double %81, %83
  %85 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 2
  store double %84, ptr %85, align 8, !tbaa !44
  %86 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %87 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 2
  %88 = load double, ptr %87, align 8, !tbaa !44
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %86, i32 noundef 5, i32 noundef 4, ptr noundef @.str.61, double noundef %88)
  br label %89

89:                                               ; preds = %79, %75
  %90 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 29
  %91 = load i8, ptr %90, align 2, !tbaa !46, !range !38, !noundef !39
  %92 = trunc i8 %91 to i1
  br i1 %92, label %201, label %93

93:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %94 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %9, ptr noundef nonnull align 8 dereferenceable(864) %94)
  %95 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %96 unwind label %145

96:                                               ; preds = %93
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %8, ptr noundef nonnull align 8 dereferenceable(280) %95)
          to label %97 unwind label %145

97:                                               ; preds = %96
  %98 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %99 unwind label %149

99:                                               ; preds = %97
  %100 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %98)
          to label %101 unwind label %149

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %102 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
          to label %103 unwind label %153

103:                                              ; preds = %101
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %11, ptr noundef nonnull align 8 dereferenceable(864) %102)
          to label %104 unwind label %153

104:                                              ; preds = %103
  %105 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %106 unwind label %157

106:                                              ; preds = %104
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %10, ptr noundef nonnull align 8 dereferenceable(280) %105)
          to label %107 unwind label %157

107:                                              ; preds = %106
  %108 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %109 unwind label %161

109:                                              ; preds = %107
  %110 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %108)
          to label %111 unwind label %161

111:                                              ; preds = %109
  %112 = add nsw i32 %100, %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %113 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
          to label %114 unwind label %165

114:                                              ; preds = %111
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %13, ptr noundef nonnull align 8 dereferenceable(864) %113)
          to label %115 unwind label %165

115:                                              ; preds = %114
  %116 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %117 unwind label %169

117:                                              ; preds = %115
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %12, ptr noundef nonnull align 8 dereferenceable(280) %116)
          to label %118 unwind label %169

118:                                              ; preds = %117
  %119 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %120 unwind label %173

120:                                              ; preds = %118
  %121 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %119)
          to label %122 unwind label %173

122:                                              ; preds = %120
  %123 = add nsw i32 %112, %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %124 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
          to label %125 unwind label %177

125:                                              ; preds = %122
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %15, ptr noundef nonnull align 8 dereferenceable(864) %124)
          to label %126 unwind label %177

126:                                              ; preds = %125
  %127 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %128 unwind label %181

128:                                              ; preds = %126
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %14, ptr noundef nonnull align 8 dereferenceable(280) %127)
          to label %129 unwind label %181

129:                                              ; preds = %128
  %130 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %131 unwind label %185

131:                                              ; preds = %129
  %132 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %130)
          to label %133 unwind label %185

133:                                              ; preds = %131
  %134 = add nsw i32 %123, %132
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  store i32 %134, ptr %7, align 4, !tbaa !47
  %135 = load i32, ptr %7, align 4, !tbaa !47
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %199

137:                                              ; preds = %133
  %138 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 28
  store i8 1, ptr %138, align 1, !tbaa !48
  %139 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %140 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 3
  %141 = load double, ptr %140, align 8, !tbaa !43
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %139, double noundef %141)
  %142 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %143 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 5
  %144 = load double, ptr %143, align 8, !tbaa !49
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %142, double noundef %144)
  br label %199

145:                                              ; preds = %96, %93
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %5, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %6, align 4
  br label %198

149:                                              ; preds = %99, %97
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %5, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %6, align 4
  br label %197

153:                                              ; preds = %103, %101
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %5, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %6, align 4
  br label %196

157:                                              ; preds = %106, %104
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %5, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %6, align 4
  br label %195

161:                                              ; preds = %109, %107
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %5, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %6, align 4
  br label %194

165:                                              ; preds = %114, %111
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %5, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %6, align 4
  br label %193

169:                                              ; preds = %117, %115
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %5, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %6, align 4
  br label %192

173:                                              ; preds = %120, %118
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %5, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %6, align 4
  br label %191

177:                                              ; preds = %125, %122
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %5, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %6, align 4
  br label %190

181:                                              ; preds = %128, %126
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %5, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %6, align 4
  br label %189

185:                                              ; preds = %131, %129
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %5, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %6, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br label %189

189:                                              ; preds = %185, %181
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  br label %190

190:                                              ; preds = %189, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %191

191:                                              ; preds = %190, %173
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br label %192

192:                                              ; preds = %191, %169
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br label %193

193:                                              ; preds = %192, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %194

194:                                              ; preds = %193, %161
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %195

195:                                              ; preds = %194, %157
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br label %196

196:                                              ; preds = %195, %153
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %197

197:                                              ; preds = %196, %149
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %198

198:                                              ; preds = %197, %145
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %498

199:                                              ; preds = %137, %133
  %200 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 29
  store i8 1, ptr %200, align 2, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %201

201:                                              ; preds = %199, %89
  %202 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 28
  %203 = load i8, ptr %202, align 1, !tbaa !48, !range !38, !noundef !39
  %204 = trunc i8 %203 to i1
  br i1 %204, label %205, label %206

205:                                              ; preds = %201
  store i1 true, ptr %2, align 1
  br label %496

206:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  %207 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %208 = call noundef zeroext i1 @_ZN10SimTKIpopt9IpoptData14tiny_step_flagEv(ptr noundef nonnull align 8 dereferenceable(864) %207)
  %209 = zext i1 %208 to i8
  store i8 %209, ptr %16, align 1, !tbaa !50
  %210 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %211 = call noundef zeroext i1 @_ZNK10SimTKIpopt9IpoptData10FreeMuModeEv(ptr noundef nonnull align 8 dereferenceable(864) %210)
  br i1 %211, label %318, label %212

212:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  %213 = call noundef zeroext i1 @_ZN10SimTKIpopt16AdaptiveMuUpdate23CheckSufficientProgressEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  %214 = zext i1 %213 to i8
  store i8 %214, ptr %17, align 1, !tbaa !50
  %215 = load i8, ptr %17, align 1, !tbaa !50, !range !38, !noundef !39
  %216 = trunc i8 %215 to i1
  br i1 %216, label %217, label %223

217:                                              ; preds = %212
  %218 = load i8, ptr %16, align 1, !tbaa !50, !range !38, !noundef !39
  %219 = trunc i8 %218 to i1
  br i1 %219, label %223, label %220

220:                                              ; preds = %217
  %221 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %221, i32 noundef 5, i32 noundef 4, ptr noundef @.str.62)
  %222 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @_ZN10SimTKIpopt9IpoptData13SetFreeMuModeEb(ptr noundef nonnull align 8 dereferenceable(864) %222, i1 noundef zeroext true)
  call void @_ZN10SimTKIpopt16AdaptiveMuUpdate30RememberCurrentPointAsAcceptedEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  br label %317

223:                                              ; preds = %217, %212
  %224 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %224, i32 noundef 5, i32 noundef 4, ptr noundef @.str.63)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %225 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %226 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities18curr_barrier_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %225)
  store double %226, ptr %18, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %227 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %228 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %227)
  store double %228, ptr %19, align 8, !tbaa !51
  %229 = load double, ptr %18, align 8, !tbaa !51
  %230 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 8
  %231 = load double, ptr %230, align 8, !tbaa !42
  %232 = load double, ptr %19, align 8, !tbaa !51
  %233 = fmul double %231, %232
  %234 = fcmp ole double %229, %233
  br i1 %234, label %238, label %235

235:                                              ; preds = %223
  %236 = load i8, ptr %16, align 1, !tbaa !50, !range !38, !noundef !39
  %237 = trunc i8 %236 to i1
  br i1 %237, label %238, label %316

238:                                              ; preds = %235, %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %239 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %240 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %239)
  store double %240, ptr %20, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %241 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @_ZNK10SimTKIpopt8IpoptNLP11NLP_scalingEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.39") align 8 %22, ptr noundef nonnull align 8 dereferenceable(24) %241)
  %242 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %243 unwind label %279

243:                                              ; preds = %238
  %244 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 17
  %245 = load ptr, ptr %242, align 8, !tbaa !40
  %246 = getelementptr inbounds ptr, ptr %245, i64 2
  %247 = load ptr, ptr %246, align 8
  %248 = invoke noundef double %247(ptr noundef nonnull align 8 dereferenceable(24) %242, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %249 unwind label %279

249:                                              ; preds = %243
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  store double %248, ptr %21, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %250 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 9
  %251 = load double, ptr %250, align 8, !tbaa !52
  %252 = load double, ptr %19, align 8, !tbaa !51
  %253 = fmul double %251, %252
  %254 = load double, ptr %19, align 8, !tbaa !51
  %255 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 10
  %256 = load double, ptr %255, align 8, !tbaa !53
  %257 = call double @pow(double noundef %254, double noundef %256) #7
  %258 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %253, double noundef %257)
  store double %258, ptr %23, align 8, !tbaa !51
  %259 = load double, ptr %23, align 8, !tbaa !51
  %260 = load double, ptr %21, align 8, !tbaa !51
  %261 = load double, ptr %20, align 8, !tbaa !51
  %262 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %260, double noundef %261)
  %263 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 8
  %264 = load double, ptr %263, align 8, !tbaa !42
  %265 = fadd double %264, 1.000000e+00
  %266 = fdiv double %262, %265
  %267 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %259, double noundef %266)
  store double %267, ptr %23, align 8, !tbaa !51
  %268 = load i8, ptr %16, align 1, !tbaa !50, !range !38, !noundef !39
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %300

270:                                              ; preds = %249
  %271 = load double, ptr %23, align 8, !tbaa !51
  %272 = load double, ptr %19, align 8, !tbaa !51
  %273 = fcmp oeq double %271, %272
  br i1 %273, label %274, label %300

274:                                              ; preds = %270
  store i1 true, ptr %28, align 1
  %275 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.64, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %276 unwind label %283

276:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %277 unwind label %287

277:                                              ; preds = %276
  invoke void @_ZN10SimTKIpopt18TINY_STEP_DETECTEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %275, ptr noundef %24, ptr noundef %26, i32 noundef 315)
          to label %278 unwind label %291

278:                                              ; preds = %277
  store i1 false, ptr %28, align 1
  invoke void @__cxa_throw(ptr %275, ptr @_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #8
          to label %503 unwind label %291

279:                                              ; preds = %243, %238
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %5, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %6, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %315

283:                                              ; preds = %274
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %5, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %6, align 4
  br label %296

287:                                              ; preds = %276
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %5, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %6, align 4
  br label %295

291:                                              ; preds = %278, %277
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %5, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %295

295:                                              ; preds = %291, %287
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %296

296:                                              ; preds = %295, %283
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  %297 = load i1, ptr %28, align 1
  br i1 %297, label %298, label %299

298:                                              ; preds = %296
  call void @__cxa_free_exception(ptr %275) #7
  br label %299

299:                                              ; preds = %298, %296
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %315

300:                                              ; preds = %270, %249
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %301 = load double, ptr %19, align 8, !tbaa !51
  %302 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate20Compute_tau_monotoneEd(ptr noundef nonnull align 8 dereferenceable(304) %48, double noundef %301)
  store double %302, ptr %29, align 8, !tbaa !51
  %303 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %304 = load double, ptr %23, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %303, double noundef %304)
  %305 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %306 = load double, ptr %29, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %305, double noundef %306)
  %307 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %308 = load double, ptr %23, align 8, !tbaa !51
  %309 = load double, ptr %29, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %307, i32 noundef 5, i32 noundef 4, ptr noundef @.str.66, double noundef %308, double noundef %309)
  %310 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 18
  %311 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %310)
  %312 = load ptr, ptr %311, align 8, !tbaa !40
  %313 = getelementptr inbounds ptr, ptr %312, i64 4
  %314 = load ptr, ptr %313, align 8
  call void %314(ptr noundef nonnull align 8 dereferenceable(49) %311)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %316

315:                                              ; preds = %299, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  br label %495

316:                                              ; preds = %300, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %317

317:                                              ; preds = %316, %220
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  br label %403

318:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  %319 = call noundef zeroext i1 @_ZN10SimTKIpopt16AdaptiveMuUpdate23CheckSufficientProgressEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  %320 = zext i1 %319 to i8
  store i8 %320, ptr %30, align 1, !tbaa !50
  %321 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 18
  %322 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %321)
  %323 = load ptr, ptr %322, align 8, !tbaa !40
  %324 = getelementptr inbounds ptr, ptr %323, i64 6
  %325 = load ptr, ptr %324, align 8
  %326 = call noundef zeroext i1 %325(ptr noundef nonnull align 8 dereferenceable(49) %322)
  br i1 %326, label %330, label %327

327:                                              ; preds = %318
  %328 = load i8, ptr %16, align 1, !tbaa !50, !range !38, !noundef !39
  %329 = trunc i8 %328 to i1
  br i1 %329, label %330, label %331

330:                                              ; preds = %327, %318
  store i8 0, ptr %30, align 1, !tbaa !50
  br label %331

331:                                              ; preds = %330, %327
  %332 = load i8, ptr %30, align 1, !tbaa !50, !range !38, !noundef !39
  %333 = trunc i8 %332 to i1
  br i1 %333, label %334, label %336

334:                                              ; preds = %331
  %335 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %335, i32 noundef 5, i32 noundef 4, ptr noundef @.str.67)
  call void @_ZN10SimTKIpopt16AdaptiveMuUpdate30RememberCurrentPointAsAcceptedEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  br label %401

336:                                              ; preds = %331
  %337 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @_ZN10SimTKIpopt9IpoptData13SetFreeMuModeEb(ptr noundef nonnull align 8 dereferenceable(864) %337, i1 noundef zeroext false)
  %338 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 27
  %339 = load i8, ptr %338, align 8, !tbaa !54, !range !38, !noundef !39
  %340 = trunc i8 %339 to i1
  br i1 %340, label %341, label %355

341:                                              ; preds = %336
  %342 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %342, i32 noundef 5, i32 noundef 4, ptr noundef @.str.68)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %343 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 30
  %344 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %343)
  call void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.58") align 8 %31, ptr noundef nonnull align 8 dereferenceable(280) %344)
  %345 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
          to label %346 unwind label %351

346:                                              ; preds = %341
  invoke void @_ZN10SimTKIpopt9IpoptData9set_trialERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(864) %345, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %347 unwind label %351

347:                                              ; preds = %346
  %348 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
          to label %349 unwind label %351

349:                                              ; preds = %347
  invoke void @_ZN10SimTKIpopt9IpoptData16AcceptTrialPointEv(ptr noundef nonnull align 8 dereferenceable(864) %348)
          to label %350 unwind label %351

350:                                              ; preds = %349
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %355

351:                                              ; preds = %349, %347, %346, %341
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %5, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %6, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %402

355:                                              ; preds = %350, %336
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %356 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate10NewFixedMuEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  store double %356, ptr %32, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %357 = load double, ptr %32, align 8, !tbaa !51
  %358 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate20Compute_tau_monotoneEd(ptr noundef nonnull align 8 dereferenceable(304) %48, double noundef %357)
  store double %358, ptr %33, align 8, !tbaa !51
  %359 = load i8, ptr %16, align 1, !tbaa !50, !range !38, !noundef !39
  %360 = trunc i8 %359 to i1
  br i1 %360, label %361, label %388

361:                                              ; preds = %355
  %362 = load double, ptr %32, align 8, !tbaa !51
  %363 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %364 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %363)
  %365 = fcmp oeq double %362, %364
  br i1 %365, label %366, label %388

366:                                              ; preds = %361
  store i1 true, ptr %38, align 1
  %367 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.64, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %368 unwind label %371

368:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %369 unwind label %375

369:                                              ; preds = %368
  invoke void @_ZN10SimTKIpopt18TINY_STEP_DETECTEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %367, ptr noundef %34, ptr noundef %36, i32 noundef 356)
          to label %370 unwind label %379

370:                                              ; preds = %369
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %367, ptr @_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #8
          to label %503 unwind label %379

371:                                              ; preds = %366
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %5, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %6, align 4
  br label %384

375:                                              ; preds = %368
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %5, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %6, align 4
  br label %383

379:                                              ; preds = %370, %369
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %5, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %383

383:                                              ; preds = %379, %375
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %384

384:                                              ; preds = %383, %371
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  %385 = load i1, ptr %38, align 1
  br i1 %385, label %386, label %387

386:                                              ; preds = %384
  call void @__cxa_free_exception(ptr %367) #7
  br label %387

387:                                              ; preds = %386, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %402

388:                                              ; preds = %361, %355
  %389 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %390 = load double, ptr %32, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %389, double noundef %390)
  %391 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %392 = load double, ptr %33, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %391, double noundef %392)
  %393 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %394 = load double, ptr %32, align 8, !tbaa !51
  %395 = load double, ptr %33, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %393, i32 noundef 5, i32 noundef 4, ptr noundef @.str.69, double noundef %394, double noundef %395)
  %396 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 18
  %397 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %396)
  %398 = load ptr, ptr %397, align 8, !tbaa !40
  %399 = getelementptr inbounds ptr, ptr %398, i64 4
  %400 = load ptr, ptr %399, align 8
  call void %400(ptr noundef nonnull align 8 dereferenceable(49) %397)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %401

401:                                              ; preds = %388, %334
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  br label %403

402:                                              ; preds = %387, %351
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  br label %495

403:                                              ; preds = %401, %317
  %404 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %405 = call noundef zeroext i1 @_ZNK10SimTKIpopt9IpoptData10FreeMuModeEv(ptr noundef nonnull align 8 dereferenceable(864) %404)
  br i1 %405, label %406, label %475

406:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %407 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 5
  %408 = load double, ptr %407, align 8, !tbaa !49
  %409 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %410 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities14curr_nlp_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %409)
  %411 = fsub double 1.000000e+00, %410
  %412 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %408, double noundef %411)
  store double %412, ptr %39, align 8, !tbaa !51
  %413 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %414 = load double, ptr %39, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %413, double noundef %414)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  %415 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 19
  %416 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_8MuOracleEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %415)
  %417 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 3
  %418 = load double, ptr %417, align 8, !tbaa !43
  %419 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 2
  %420 = load double, ptr %419, align 8, !tbaa !44
  %421 = load ptr, ptr %416, align 8, !tbaa !40
  %422 = getelementptr inbounds ptr, ptr %421, i64 3
  %423 = load ptr, ptr %422, align 8
  %424 = call noundef zeroext i1 %423(ptr noundef nonnull align 8 dereferenceable(49) %416, double noundef %418, double noundef %420, ptr noundef nonnull align 8 dereferenceable(8) %40)
  %425 = zext i1 %424 to i8
  store i8 %425, ptr %41, align 1, !tbaa !50
  %426 = load i8, ptr %41, align 1, !tbaa !50, !range !38, !noundef !39
  %427 = trunc i8 %426 to i1
  br i1 %427, label %430, label %428

428:                                              ; preds = %406
  %429 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %429, i32 noundef 5, i32 noundef 4, ptr noundef @.str.70)
  store i1 false, ptr %2, align 1
  store i32 1, ptr %42, align 4
  br label %472

430:                                              ; preds = %406
  %431 = load double, ptr %40, align 8, !tbaa !51
  %432 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 3
  %433 = load double, ptr %432, align 8, !tbaa !43
  %434 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %431, double noundef %433)
  store double %434, ptr %40, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %435 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate18lower_mu_safeguardEv(ptr noundef nonnull align 8 dereferenceable(304) %48)
  store double %435, ptr %43, align 8, !tbaa !51
  %436 = load double, ptr %40, align 8, !tbaa !51
  %437 = load double, ptr %43, align 8, !tbaa !51
  %438 = fcmp olt double %436, %437
  br i1 %438, label %439, label %456

439:                                              ; preds = %430
  %440 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %441 = load double, ptr %40, align 8, !tbaa !51
  %442 = load double, ptr %43, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %440, i32 noundef 5, i32 noundef 4, ptr noundef @.str.71, double noundef %441, double noundef %442)
  %443 = load double, ptr %43, align 8, !tbaa !51
  store double %443, ptr %40, align 8, !tbaa !51
  %444 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %445 unwind label %447

445:                                              ; preds = %439
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %444, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %446 unwind label %451

446:                                              ; preds = %445
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %456

447:                                              ; preds = %439
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %5, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %6, align 4
  br label %455

451:                                              ; preds = %445
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %5, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %455

455:                                              ; preds = %451, %447
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %495

456:                                              ; preds = %446, %430
  %457 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %458 = load double, ptr %40, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %457, i32 noundef 5, i32 noundef 4, ptr noundef @.str.73, double noundef %458)
  %459 = load double, ptr %40, align 8, !tbaa !51
  %460 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 2
  %461 = load double, ptr %460, align 8, !tbaa !44
  %462 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %459, double noundef %461)
  store double %462, ptr %40, align 8, !tbaa !51
  %463 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %464 = load double, ptr %40, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %463, i32 noundef 5, i32 noundef 4, ptr noundef @.str.74, double noundef %464)
  %465 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  %466 = load double, ptr %40, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %465, double noundef %466)
  %467 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 18
  %468 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %467)
  %469 = load ptr, ptr %468, align 8, !tbaa !40
  %470 = getelementptr inbounds ptr, ptr %469, i64 4
  %471 = load ptr, ptr %470, align 8
  call void %471(ptr noundef nonnull align 8 dereferenceable(49) %468)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  store i32 0, ptr %42, align 4
  br label %472

472:                                              ; preds = %456, %428
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  %473 = load i32, ptr %42, align 4
  switch i32 %473, label %494 [
    i32 0, label %474
  ]

474:                                              ; preds = %472
  br label %493

475:                                              ; preds = %403
  %476 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %48)
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %477 unwind label %484

477:                                              ; preds = %475
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %476, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %478 unwind label %488

478:                                              ; preds = %477
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  %479 = getelementptr inbounds %"class.SimTKIpopt::AdaptiveMuUpdate", ptr %48, i32 0, i32 18
  %480 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %479)
  %481 = load ptr, ptr %480, align 8, !tbaa !40
  %482 = getelementptr inbounds ptr, ptr %481, i64 5
  %483 = load ptr, ptr %482, align 8
  call void %483(ptr noundef nonnull align 8 dereferenceable(49) %480, i1 noundef zeroext true)
  br label %493

484:                                              ; preds = %475
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %5, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %6, align 4
  br label %492

488:                                              ; preds = %477
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %5, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %492

492:                                              ; preds = %488, %484
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %495

493:                                              ; preds = %478, %474
  store i1 true, ptr %2, align 1
  store i32 1, ptr %42, align 4
  br label %494

494:                                              ; preds = %493, %472
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %496

495:                                              ; preds = %492, %455, %402, %315
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %498

496:                                              ; preds = %494, %205
  %497 = load i1, ptr %2, align 1
  ret i1 %497

498:                                              ; preds = %495, %198, %71
  %499 = load ptr, ptr %5, align 8
  %500 = load i32, ptr %6, align 4
  %501 = insertvalue { ptr, i32 } poison, ptr %499, 0
  %502 = insertvalue { ptr, i32 } %501, i32 %500, 1
  resume { ptr, i32 } %502

503:                                              ; preds = %370, %278
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.20") 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)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData9set_trialERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(864), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

declare void @_ZN10SimTKIpopt9IpoptData16AcceptTrialPointEv(ptr noundef nonnull align 8 dereferenceable(864)) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate18lower_mu_safeguardEv(ptr noundef nonnull align 8 dereferenceable(304)) #2 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)) #2 align 2

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

!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, !19, i64 80}
!10 = !{!"_ZTSN10SimTKIpopt16AdaptiveMuUpdateE", !11, i64 0, !20, i64 56, !20, i64 64, !20, i64 72, !19, i64 80, !20, i64 88, !20, i64 96, !20, i64 104, !20, i64 112, !20, i64 120, !20, i64 128, !21, i64 136, !22, i64 140, !23, i64 144, !24, i64 148, !20, i64 152, !20, i64 160, !20, i64 168, !25, i64 176, !26, i64 184, !26, i64 192, !20, i64 200, !20, i64 208, !14, i64 216, !27, i64 224, !20, i64 248, !33, i64 256, !19, i64 288, !19, i64 289, !19, i64 290, !37, i64 296}
!11 = !{!"_ZTSN10SimTKIpopt8MuUpdateE", !12, i64 0}
!12 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !13, i64 0, !15, i64 16, !16, i64 24, !17, i64 32, !18, i64 40, !19, i64 48}
!13 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !14, i64 8}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"double", !7, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle8NormEnumE", !7, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle14CentralityEnumE", !7, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle17BalancingTermEnumE", !7, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt16AdaptiveMuUpdate27AdaptiveMuGlobalizationEnumE", !7, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_10LineSearchEEE", !6, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8MuOracleEEE", !6, i64 0}
!27 = !{!"_ZTSNSt7__cxx114listIdSaIdEEE", !28, i64 0}
!28 = !{!"_ZTSNSt7__cxx1110_List_baseIdSaIdEEE", !29, i64 0}
!29 = !{!"_ZTSNSt7__cxx1110_List_baseIdSaIdEE10_List_implE", !30, i64 0}
!30 = !{!"_ZTSNSt8__detail17_List_node_headerE", !31, i64 0, !32, i64 16}
!31 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt6FilterE", !14, i64 0, !34, i64 8}
!34 = !{!"_ZTSNSt7__cxx114listIPN10SimTKIpopt11FilterEntryESaIS3_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt7__cxx1110_List_baseIPN10SimTKIpopt11FilterEntryESaIS3_EEE", !36, i64 0}
!36 = !{!"_ZTSNSt7__cxx1110_List_baseIPN10SimTKIpopt11FilterEntryESaIS3_EE10_List_implE", !30, i64 0}
!37 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !6, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!41, !41, i64 0}
!41 = !{!"vtable pointer", !8, i64 0}
!42 = !{!10, !20, i64 112}
!43 = !{!10, !20, i64 72}
!44 = !{!10, !20, i64 64}
!45 = !{!10, !20, i64 56}
!46 = !{!10, !19, i64 290}
!47 = !{!14, !14, i64 0}
!48 = !{!10, !19, i64 289}
!49 = !{!10, !20, i64 88}
!50 = !{!19, !19, i64 0}
!51 = !{!20, !20, i64 0}
!52 = !{!10, !20, i64 120}
!53 = !{!10, !20, i64 128}
!54 = !{!10, !19, i64 288}


; 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.39" = type { ptr }
%"class.SimTKIpopt::SmartPtr.47" = type { ptr }
%"class.SimTKIpopt::SmartPtr.20" = 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.22" = type { i8 }
%"class.SimTKIpopt::SmartPtr.58" = type { ptr }

@.str.61 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [103 x i8], align 1
@_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.66 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [2 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: 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 #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_8MuOracleEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 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 #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #2 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 #2 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 #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt16AdaptiveMuUpdate22UpdateBarrierParameterEv(ptr noundef nonnull align 8 dereferenceable(304) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.SimTKIpopt::SmartPtr.39", align 8
  %3 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %4 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %5 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %6 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %7 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %8 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %9 = alloca %"class.SimTKIpopt::SmartPtr.47", align 8
  %10 = alloca %"class.SimTKIpopt::SmartPtr.20", align 8
  %11 = alloca %"class.SimTKIpopt::SmartPtr.39", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.22", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.22", align 1
  %16 = alloca %"class.SimTKIpopt::SmartPtr.58", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.22", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.22", align 1
  %21 = alloca double, align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.22", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.22", align 1
  %26 = getelementptr inbounds i8, ptr %0, i64 80
  %27 = load i8, ptr %26, align 8, !tbaa !5, !range !37, !noundef !38
  %28 = trunc nuw i8 %27 to i1
  br i1 %28, label %29, label %48

29:                                               ; preds = %1
  %30 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %31 = tail call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %30)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  %32 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZNK10SimTKIpopt8IpoptNLP11NLP_scalingEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.39") align 8 %2, ptr noundef nonnull align 8 dereferenceable(24) %32)
  %33 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %34 = getelementptr inbounds i8, ptr %0, i64 168
  %35 = load ptr, ptr %33, align 8, !tbaa !39
  %36 = getelementptr inbounds i8, ptr %35, i64 16
  %37 = load ptr, ptr %36, align 8
  %38 = invoke noundef double %37(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %39 unwind label %46

39:                                               ; preds = %29
  %40 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %31, double noundef %38)
  %41 = getelementptr inbounds i8, ptr %0, i64 112
  %42 = load double, ptr %41, align 8, !tbaa !41
  %43 = fadd double %42, 1.000000e+00
  %44 = fdiv double %40, %43
  %45 = getelementptr inbounds i8, ptr %0, i64 72
  store double %44, ptr %45, align 8, !tbaa !42
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  br label %48

46:                                               ; preds = %29
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  br label %333

48:                                               ; preds = %39, %1
  %49 = getelementptr inbounds i8, ptr %0, i64 64
  %50 = load double, ptr %49, align 8, !tbaa !43
  %51 = fcmp olt double %50, 0.000000e+00
  br i1 %51, label %52, label %60

52:                                               ; preds = %48
  %53 = getelementptr inbounds i8, ptr %0, i64 56
  %54 = load double, ptr %53, align 8, !tbaa !44
  %55 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %56 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15curr_avrg_complEv(ptr noundef nonnull align 8 dereferenceable(2025) %55)
  %57 = fmul double %54, %56
  store double %57, ptr %49, align 8, !tbaa !43
  %58 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %59 = load double, ptr %49, align 8, !tbaa !43
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %58, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.61, double noundef %59)
  br label %60

60:                                               ; preds = %52, %48
  %61 = getelementptr inbounds i8, ptr %0, i64 290
  %62 = load i8, ptr %61, align 2, !tbaa !45, !range !37, !noundef !38
  %63 = trunc nuw i8 %62 to i1
  br i1 %63, label %140, label %64

64:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %65 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %4, ptr noundef nonnull align 8 dereferenceable(864) %65)
  %66 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_LEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %3, ptr noundef nonnull align 8 dereferenceable(280) %66)
          to label %67 unwind label %107

67:                                               ; preds = %64
  %68 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %69 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %68)
          to label %70 unwind label %109

70:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  %71 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %72 unwind label %111

72:                                               ; preds = %70
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %6, ptr noundef nonnull align 8 dereferenceable(864) %71)
          to label %73 unwind label %111

73:                                               ; preds = %72
  %74 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3z_UEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %5, ptr noundef nonnull align 8 dereferenceable(280) %74)
          to label %75 unwind label %113

75:                                               ; preds = %73
  %76 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %77 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %76)
          to label %78 unwind label %115

78:                                               ; preds = %75
  %79 = add nsw i32 %77, %69
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %80 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %81 unwind label %117

81:                                               ; preds = %78
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %8, ptr noundef nonnull align 8 dereferenceable(864) %80)
          to label %82 unwind label %117

82:                                               ; preds = %81
  %83 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_LEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %7, ptr noundef nonnull align 8 dereferenceable(280) %83)
          to label %84 unwind label %119

84:                                               ; preds = %82
  %85 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %86 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %85)
          to label %87 unwind label %121

87:                                               ; preds = %84
  %88 = add nsw i32 %79, %86
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %89 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %90 unwind label %123

90:                                               ; preds = %87
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.20") align 8 %10, ptr noundef nonnull align 8 dereferenceable(864) %89)
          to label %91 unwind label %123

91:                                               ; preds = %90
  %92 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3v_UEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.47") align 8 %9, ptr noundef nonnull align 8 dereferenceable(280) %92)
          to label %93 unwind label %125

93:                                               ; preds = %91
  %94 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
  %95 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %94)
          to label %96 unwind label %127

96:                                               ; preds = %93
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7
  %97 = sub i32 0, %95
  %98 = icmp eq i32 %88, %97
  br i1 %98, label %99, label %139

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %0, i64 289
  store i8 1, ptr %100, align 1, !tbaa !46
  %101 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %102 = getelementptr inbounds i8, ptr %0, i64 72
  %103 = load double, ptr %102, align 8, !tbaa !42
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %101, double noundef %103)
  %104 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %105 = getelementptr inbounds i8, ptr %0, i64 88
  %106 = load double, ptr %105, align 8, !tbaa !47
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %104, double noundef %106)
  br label %139

107:                                              ; preds = %64
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %138

109:                                              ; preds = %67
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %137

111:                                              ; preds = %72, %70
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %136

113:                                              ; preds = %73
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %135

115:                                              ; preds = %75
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %134

117:                                              ; preds = %81, %78
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %133

119:                                              ; preds = %82
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %132

121:                                              ; preds = %84
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %131

123:                                              ; preds = %90, %87
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %130

125:                                              ; preds = %91
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %129

127:                                              ; preds = %93
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br label %129

129:                                              ; preds = %127, %125
  %.pn = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %130

130:                                              ; preds = %129, %123
  %.pn.pn = phi { ptr, i32 } [ %.pn, %129 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %131

131:                                              ; preds = %130, %121
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %130 ], [ %122, %121 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #7
  br label %132

132:                                              ; preds = %131, %119
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %131 ], [ %120, %119 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  br label %133

133:                                              ; preds = %132, %117
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %132 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %134

134:                                              ; preds = %133, %115
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %133 ], [ %116, %115 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br label %135

135:                                              ; preds = %134, %113
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %134 ], [ %114, %113 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #7
  br label %136

136:                                              ; preds = %135, %111
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %135 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  br label %137

137:                                              ; preds = %136, %109
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %136 ], [ %110, %109 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  br label %138

138:                                              ; preds = %137, %107
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %137 ], [ %108, %107 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7
  br label %333

139:                                              ; preds = %99, %96
  store i8 1, ptr %61, align 2, !tbaa !45
  br label %140

140:                                              ; preds = %139, %60
  %141 = getelementptr inbounds i8, ptr %0, i64 289
  %142 = load i8, ptr %141, align 1, !tbaa !46, !range !37, !noundef !38
  %143 = trunc nuw i8 %142 to i1
  br i1 %143, label %332, label %144

144:                                              ; preds = %140
  %145 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %146 = call noundef zeroext i1 @_ZN10SimTKIpopt9IpoptData14tiny_step_flagEv(ptr noundef nonnull align 8 dereferenceable(864) %145)
  %147 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %148 = call noundef zeroext i1 @_ZNK10SimTKIpopt9IpoptData10FreeMuModeEv(ptr noundef nonnull align 8 dereferenceable(864) %147)
  %149 = call noundef zeroext i1 @_ZN10SimTKIpopt16AdaptiveMuUpdate23CheckSufficientProgressEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
  br i1 %148, label %211, label %150

150:                                              ; preds = %144
  %.not = xor i1 %149, true
  %brmerge = or i1 %146, %.not
  %151 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  br i1 %brmerge, label %154, label %152

152:                                              ; preds = %150
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %151, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.62)
  %153 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData13SetFreeMuModeEb(ptr noundef nonnull align 8 dereferenceable(864) %153, i1 noundef zeroext true)
  call void @_ZN10SimTKIpopt16AdaptiveMuUpdate30RememberCurrentPointAsAcceptedEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
  br label %264

154:                                              ; preds = %150
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %151, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.63)
  %155 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %156 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities18curr_barrier_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %155)
  %157 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %158 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %157)
  %159 = getelementptr inbounds i8, ptr %0, i64 112
  %160 = load double, ptr %159, align 8, !tbaa !41
  %161 = fmul double %158, %160
  %162 = fcmp ole double %156, %161
  %brmerge95 = or i1 %146, %162
  br i1 %brmerge95, label %163, label %264

163:                                              ; preds = %154
  %164 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %165 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %164)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %166 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZNK10SimTKIpopt8IpoptNLP11NLP_scalingEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.39") align 8 %11, ptr noundef nonnull align 8 dereferenceable(24) %166)
  %167 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %168 = getelementptr inbounds i8, ptr %0, i64 168
  %169 = load ptr, ptr %167, align 8, !tbaa !39
  %170 = getelementptr inbounds i8, ptr %169, i64 16
  %171 = load ptr, ptr %170, align 8
  %172 = invoke noundef double %171(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(8) %168)
          to label %173 unwind label %192

173:                                              ; preds = %163
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %174 = getelementptr inbounds i8, ptr %0, i64 120
  %175 = load double, ptr %174, align 8, !tbaa !48
  %176 = fmul double %158, %175
  %177 = getelementptr inbounds i8, ptr %0, i64 128
  %178 = load double, ptr %177, align 8, !tbaa !49
  %179 = call double @pow(double noundef %158, double noundef %178) #7
  %180 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %176, double noundef %179)
  %181 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %172, double noundef %165)
  %182 = load double, ptr %159, align 8, !tbaa !41
  %183 = fadd double %182, 1.000000e+00
  %184 = fdiv double %181, %183
  %185 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %180, double noundef %184)
  %186 = fcmp oeq double %185, %158
  %or.cond = and i1 %146, %186
  br i1 %or.cond, label %187, label %201

187:                                              ; preds = %173
  %188 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.64, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %189 unwind label %.thread

189:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %190 unwind label %195

190:                                              ; preds = %189
  invoke void @_ZN10SimTKIpopt18TINY_STEP_DETECTEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %188, ptr noundef nonnull %12, ptr noundef nonnull %14, i32 noundef 315)
          to label %191 unwind label %197

191:                                              ; preds = %190
  invoke void @__cxa_throw(ptr nonnull %188, ptr nonnull @_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #8
          to label %334 unwind label %197

192:                                              ; preds = %163
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %333

.thread:                                          ; preds = %187
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  br label %200

195:                                              ; preds = %189
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %199

197:                                              ; preds = %191, %190
  %.066 = phi i1 [ false, %191 ], [ true, %190 ]
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %199

199:                                              ; preds = %195, %197
  %.167 = phi i1 [ %.066, %197 ], [ true, %195 ]
  %.pn80 = phi { ptr, i32 } [ %198, %197 ], [ %196, %195 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  br i1 %.167, label %200, label %333

200:                                              ; preds = %.thread, %199
  %.pn80.pn101 = phi { ptr, i32 } [ %194, %.thread ], [ %.pn80, %199 ]
  call void @__cxa_free_exception(ptr %188) #7
  br label %333

201:                                              ; preds = %173
  %202 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate20Compute_tau_monotoneEd(ptr noundef nonnull align 8 dereferenceable(304) %0, double noundef %158)
  %203 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %203, double noundef %185)
  %204 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %204, double noundef %202)
  %205 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %205, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.66, double noundef %185, double noundef %202)
  %206 = getelementptr inbounds i8, ptr %0, i64 176
  %207 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %206)
  %208 = load ptr, ptr %207, align 8, !tbaa !39
  %209 = getelementptr inbounds i8, ptr %208, i64 32
  %210 = load ptr, ptr %209, align 8
  call void %210(ptr noundef nonnull align 8 dereferenceable(49) %207)
  br label %264

211:                                              ; preds = %144
  %212 = getelementptr inbounds i8, ptr %0, i64 176
  %213 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %212)
  %214 = load ptr, ptr %213, align 8, !tbaa !39
  %215 = getelementptr inbounds i8, ptr %214, i64 48
  %216 = load ptr, ptr %215, align 8
  %217 = call noundef zeroext i1 %216(ptr noundef nonnull align 8 dereferenceable(49) %213)
  %.not97 = xor i1 %149, true
  %218 = or i1 %217, %.not97
  %brmerge98 = or i1 %146, %218
  br i1 %brmerge98, label %.critedge, label %219

219:                                              ; preds = %211
  %220 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %220, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.67)
  call void @_ZN10SimTKIpopt16AdaptiveMuUpdate30RememberCurrentPointAsAcceptedEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
  br label %264

.critedge:                                        ; preds = %211
  %221 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData13SetFreeMuModeEb(ptr noundef nonnull align 8 dereferenceable(864) %221, i1 noundef zeroext false)
  %222 = getelementptr inbounds i8, ptr %0, i64 288
  %223 = load i8, ptr %222, align 8, !tbaa !50, !range !37, !noundef !38
  %224 = trunc nuw i8 %223 to i1
  br i1 %224, label %225, label %237

225:                                              ; preds = %.critedge
  %226 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %226, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.68)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %227 = getelementptr inbounds i8, ptr %0, i64 296
  %228 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %227)
  call void @_ZNK10SimTKIpopt14IteratesVector16MakeNewContainerEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.58") align 8 %16, ptr noundef nonnull align 8 dereferenceable(280) %228)
  %229 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %230 unwind label %235

230:                                              ; preds = %225
  invoke void @_ZN10SimTKIpopt9IpoptData9set_trialERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(864) %229, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %231 unwind label %235

231:                                              ; preds = %230
  %232 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %233 unwind label %235

233:                                              ; preds = %231
  invoke void @_ZN10SimTKIpopt9IpoptData16AcceptTrialPointEv(ptr noundef nonnull align 8 dereferenceable(864) %232)
          to label %234 unwind label %235

234:                                              ; preds = %233
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %237

235:                                              ; preds = %233, %231, %230, %225
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %333

237:                                              ; preds = %234, %.critedge
  %238 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate10NewFixedMuEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
  %239 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate20Compute_tau_monotoneEd(ptr noundef nonnull align 8 dereferenceable(304) %0, double noundef %238)
  br i1 %146, label %240, label %256

240:                                              ; preds = %237
  %241 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %242 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %241)
  %243 = fcmp oeq double %238, %242
  br i1 %243, label %244, label %256

244:                                              ; preds = %240
  %245 = call ptr @__cxa_allocate_exception(i64 112) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.64, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %246 unwind label %.thread102

246:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.65, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %247 unwind label %250

247:                                              ; preds = %246
  invoke void @_ZN10SimTKIpopt18TINY_STEP_DETECTEDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %245, ptr noundef nonnull %17, ptr noundef nonnull %19, i32 noundef 356)
          to label %248 unwind label %252

248:                                              ; preds = %247
  invoke void @__cxa_throw(ptr nonnull %245, ptr nonnull @_ZTIN10SimTKIpopt18TINY_STEP_DETECTEDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #8
          to label %334 unwind label %252

.thread102:                                       ; preds = %244
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  br label %255

250:                                              ; preds = %246
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %254

252:                                              ; preds = %248, %247
  %.063 = phi i1 [ false, %248 ], [ true, %247 ]
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %254

254:                                              ; preds = %250, %252
  %.164 = phi i1 [ %.063, %252 ], [ true, %250 ]
  %.pn84 = phi { ptr, i32 } [ %253, %252 ], [ %251, %250 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  br i1 %.164, label %255, label %333

255:                                              ; preds = %.thread102, %254
  %.pn84.pn105 = phi { ptr, i32 } [ %249, %.thread102 ], [ %.pn84, %254 ]
  call void @__cxa_free_exception(ptr %245) #7
  br label %333

256:                                              ; preds = %240, %237
  %257 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %257, double noundef %238)
  %258 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %258, double noundef %239)
  %259 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %259, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.69, double noundef %238, double noundef %239)
  %260 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %212)
  %261 = load ptr, ptr %260, align 8, !tbaa !39
  %262 = getelementptr inbounds i8, ptr %261, i64 32
  %263 = load ptr, ptr %262, align 8
  call void %263(ptr noundef nonnull align 8 dereferenceable(49) %260)
  br label %264

264:                                              ; preds = %219, %256, %152, %154, %201
  %265 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %266 = call noundef zeroext i1 @_ZNK10SimTKIpopt9IpoptData10FreeMuModeEv(ptr noundef nonnull align 8 dereferenceable(864) %265)
  br i1 %266, label %267, label %318

267:                                              ; preds = %264
  %268 = getelementptr inbounds i8, ptr %0, i64 88
  %269 = load double, ptr %268, align 8, !tbaa !47
  %270 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %271 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities14curr_nlp_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %270)
  %272 = fsub double 1.000000e+00, %271
  %273 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %269, double noundef %272)
  %274 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData7Set_tauEd(ptr noundef nonnull align 8 dereferenceable(864) %274, double noundef %273)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %275 = getelementptr inbounds i8, ptr %0, i64 184
  %276 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_8MuOracleEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %275)
  %277 = getelementptr inbounds i8, ptr %0, i64 72
  %278 = load double, ptr %277, align 8, !tbaa !42
  %279 = load double, ptr %49, align 8, !tbaa !43
  %280 = load ptr, ptr %276, align 8, !tbaa !39
  %281 = getelementptr inbounds i8, ptr %280, i64 24
  %282 = load ptr, ptr %281, align 8
  %283 = call noundef zeroext i1 %282(ptr noundef nonnull align 8 dereferenceable(49) %276, double noundef %278, double noundef %279, ptr noundef nonnull align 8 dereferenceable(8) %21)
  br i1 %283, label %284, label %316

284:                                              ; preds = %267
  %285 = load double, ptr %21, align 8, !tbaa !51
  %286 = load double, ptr %277, align 8, !tbaa !42
  %287 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %285, double noundef %286)
  store double %287, ptr %21, align 8, !tbaa !51
  %288 = call noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate18lower_mu_safeguardEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
  %289 = load double, ptr %21, align 8, !tbaa !51
  %290 = fcmp olt double %289, %288
  br i1 %290, label %291, label %.thread106

291:                                              ; preds = %284
  %292 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %293 = load double, ptr %21, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %292, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.71, double noundef %293, double noundef %288)
  store double %288, ptr %21, align 8, !tbaa !51
  %294 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %295 unwind label %297

295:                                              ; preds = %291
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %294, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %296 unwind label %299

296:                                              ; preds = %295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %.thread106

297:                                              ; preds = %291
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %301

299:                                              ; preds = %295
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %301

301:                                              ; preds = %299, %297
  %.pn90 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %333

.thread106:                                       ; preds = %284, %296
  %302 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %303 = load double, ptr %21, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %302, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.73, double noundef %303)
  %304 = load double, ptr %21, align 8, !tbaa !51
  %305 = load double, ptr %49, align 8, !tbaa !43
  %306 = call noundef double @_ZN10SimTKIpopt3MinEdd(double noundef %304, double noundef %305)
  store double %306, ptr %21, align 8, !tbaa !51
  %307 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %308 = load double, ptr %21, align 8, !tbaa !51
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %307, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.74, double noundef %308)
  %309 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %310 = load double, ptr %21, align 8, !tbaa !51
  call void @_ZN10SimTKIpopt9IpoptData6Set_muEd(ptr noundef nonnull align 8 dereferenceable(864) %309, double noundef %310)
  %311 = getelementptr inbounds i8, ptr %0, i64 176
  %312 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %311)
  %313 = load ptr, ptr %312, align 8, !tbaa !39
  %314 = getelementptr inbounds i8, ptr %313, i64 32
  %315 = load ptr, ptr %314, align 8
  call void %315(ptr noundef nonnull align 8 dereferenceable(49) %312)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %332

316:                                              ; preds = %267
  %317 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %317, i32 noundef 5, i32 noundef 4, ptr noundef nonnull @.str.70)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %332

318:                                              ; preds = %264
  %319 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %320 unwind label %327

320:                                              ; preds = %318
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %319, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %321 unwind label %329

321:                                              ; preds = %320
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  %322 = getelementptr inbounds i8, ptr %0, i64 176
  %323 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_10LineSearchEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %322)
  %324 = load ptr, ptr %323, align 8, !tbaa !39
  %325 = getelementptr inbounds i8, ptr %324, i64 40
  %326 = load ptr, ptr %325, align 8
  call void %326(ptr noundef nonnull align 8 dereferenceable(49) %323, i1 noundef zeroext true)
  br label %332

327:                                              ; preds = %318
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %331

329:                                              ; preds = %320
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %331

331:                                              ; preds = %329, %327
  %.pn88 = phi { ptr, i32 } [ %330, %329 ], [ %328, %327 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %333

332:                                              ; preds = %321, %.thread106, %316, %140
  %.2 = phi i1 [ true, %140 ], [ false, %316 ], [ true, %.thread106 ], [ true, %321 ]
  ret i1 %.2

333:                                              ; preds = %301, %331, %199, %200, %192, %254, %255, %235, %138, %46
  %.pn90.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %138 ], [ %47, %46 ], [ %.pn90, %301 ], [ %.pn88, %331 ], [ %193, %192 ], [ %.pn80.pn101, %200 ], [ %.pn80, %199 ], [ %236, %235 ], [ %.pn84.pn105, %255 ], [ %.pn84, %254 ]
  resume { ptr, i32 } %.pn90.pn.pn

334:                                              ; preds = %248, %191
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10SimTKIpopt3MinEdd(double noundef, double noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt8IpoptNLP11NLP_scalingEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.39") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.20") 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 #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt9IpoptData14tiny_step_flagEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10SimTKIpopt9IpoptData10FreeMuModeEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #6

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10SimTKIpopt14IpoptExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #1 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 noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate20Compute_tau_monotoneEd(ptr noundef nonnull align 8 dereferenceable(304), double noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10SimTKIpopt9IpoptData9set_trialERNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(864), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

declare void @_ZN10SimTKIpopt9IpoptData16AcceptTrialPointEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN10SimTKIpopt16AdaptiveMuUpdate18lower_mu_safeguardEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #2 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 #2 align 2

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

!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, !18, i64 80}
!6 = !{!"_ZTSN10SimTKIpopt16AdaptiveMuUpdateE", !7, i64 0, !19, i64 56, !19, i64 64, !19, i64 72, !18, i64 80, !19, i64 88, !19, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !19, i64 128, !20, i64 136, !21, i64 140, !22, i64 144, !23, i64 148, !19, i64 152, !19, i64 160, !19, i64 168, !24, i64 176, !25, i64 184, !25, i64 192, !19, i64 200, !19, i64 208, !10, i64 216, !26, i64 224, !19, i64 248, !32, i64 256, !18, i64 288, !18, i64 289, !18, i64 290, !36, i64 296}
!7 = !{!"_ZTSN10SimTKIpopt8MuUpdateE", !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 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle8NormEnumE", !11, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle14CentralityEnumE", !11, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt23QualityFunctionMuOracle17BalancingTermEnumE", !11, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt16AdaptiveMuUpdate27AdaptiveMuGlobalizationEnumE", !11, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_10LineSearchEEE", !14, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8MuOracleEEE", !14, i64 0}
!26 = !{!"_ZTSNSt7__cxx114listIdSaIdEEE", !27, i64 0}
!27 = !{!"_ZTSNSt7__cxx1110_List_baseIdSaIdEEE", !28, i64 0}
!28 = !{!"_ZTSNSt7__cxx1110_List_baseIdSaIdEE10_List_implE", !29, i64 0}
!29 = !{!"_ZTSNSt8__detail17_List_node_headerE", !30, i64 0, !31, i64 16}
!30 = !{!"_ZTSNSt8__detail15_List_node_baseE", !14, i64 0, !14, i64 8}
!31 = !{!"long", !11, i64 0}
!32 = !{!"_ZTSN10SimTKIpopt6FilterE", !10, i64 0, !33, i64 8}
!33 = !{!"_ZTSNSt7__cxx114listIPN10SimTKIpopt11FilterEntryESaIS3_EEE", !34, i64 0}
!34 = !{!"_ZTSNSt7__cxx1110_List_baseIPN10SimTKIpopt11FilterEntryESaIS3_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt7__cxx1110_List_baseIPN10SimTKIpopt11FilterEntryESaIS3_EE10_List_implE", !29, i64 0}
!36 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !14, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!40, !40, i64 0}
!40 = !{!"vtable pointer", !12, i64 0}
!41 = !{!6, !19, i64 112}
!42 = !{!6, !19, i64 72}
!43 = !{!6, !19, i64 64}
!44 = !{!6, !19, i64 56}
!45 = !{!6, !18, i64 290}
!46 = !{!6, !18, i64 289}
!47 = !{!6, !19, i64 88}
!48 = !{!6, !19, i64 120}
!49 = !{!6, !19, i64 128}
!50 = !{!6, !18, i64 288}
!51 = !{!19, !19, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass