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

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

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

@_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.84 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.88 = 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: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #1

declare ptr @__cxa_begin_catch(ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @__cxa_end_catch()

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, i1 noundef zeroext %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #3 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca double, align 8
  %19 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %26 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.15", align 1
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i8, align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.15", align 1
  store ptr %0, ptr %9, align 8, !tbaa !5
  %36 = zext i1 %1 to i8
  store i8 %36, ptr %10, align 1, !tbaa !9
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  %37 = load ptr, ptr %9, align 8
  %38 = load ptr, ptr %15, align 8, !tbaa !5
  store i8 0, ptr %38, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  store i8 0, ptr %17, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %39 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %40 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %41 = call noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %40)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %42 = load ptr, ptr %16, align 8, !tbaa !5
  %43 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
  call void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %19, ptr noundef nonnull align 8 dereferenceable(280) %43)
  %44 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %45 unwind label %65

45:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %46 = load ptr, ptr %16, align 8, !tbaa !5
  %47 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %48 unwind label %69

48:                                               ; preds = %45
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %22, ptr noundef nonnull align 8 dereferenceable(280) %47)
          to label %49 unwind label %69

49:                                               ; preds = %48
  %50 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %51 unwind label %73

51:                                               ; preds = %49
  %52 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities24primal_frac_to_the_boundEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(2025) %39, double noundef %41, ptr noundef nonnull align 8 dereferenceable(205) %44, ptr noundef nonnull align 8 dereferenceable(205) %50)
          to label %53 unwind label %73

53:                                               ; preds = %51
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  store double %52, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %54 = load double, ptr %18, align 8, !tbaa !11
  store double %54, ptr %23, align 8, !tbaa !11
  %55 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 14
  %56 = load i8, ptr %55, align 1, !tbaa !13, !range !28, !noundef !29
  %57 = trunc i8 %56 to i1
  br i1 %57, label %79, label %58

58:                                               ; preds = %53
  %59 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 30
  %60 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %59)
  %61 = load ptr, ptr %60, align 8, !tbaa !30
  %62 = getelementptr inbounds ptr, ptr %61, i64 6
  %63 = load ptr, ptr %62, align 8
  %64 = call noundef double %63(ptr noundef nonnull align 8 dereferenceable(49) %60)
  store double %64, ptr %23, align 8, !tbaa !11
  br label %79

65:                                               ; preds = %8
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %20, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %21, align 4
  br label %78

69:                                               ; preds = %48, %45
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %20, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %21, align 4
  br label %77

73:                                               ; preds = %51, %49
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %20, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %21, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br label %77

77:                                               ; preds = %73, %69
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %78

78:                                               ; preds = %77, %65
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %367

79:                                               ; preds = %58, %53
  %80 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %81 = load double, ptr %23, align 8, !tbaa !11
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %80, i32 noundef 5, i32 noundef 8, ptr noundef @.str.84, double noundef %81)
  %82 = load double, ptr %18, align 8, !tbaa !11
  %83 = load ptr, ptr %11, align 8, !tbaa !5
  store double %82, ptr %83, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = load double, ptr %84, align 8, !tbaa !11
  store double %85, ptr %24, align 8, !tbaa !11
  %86 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 14
  %87 = load i8, ptr %86, align 1, !tbaa !13, !range !28, !noundef !29
  %88 = trunc i8 %87 to i1
  br i1 %88, label %89, label %92

89:                                               ; preds = %79
  %90 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 17
  %91 = load double, ptr %90, align 8, !tbaa !32
  store double %91, ptr %24, align 8, !tbaa !11
  br label %92

92:                                               ; preds = %89, %79
  %93 = load i8, ptr %10, align 1, !tbaa !9, !range !28, !noundef !29
  %94 = trunc i8 %93 to i1
  br i1 %94, label %95, label %101

95:                                               ; preds = %92
  %96 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 1
  %97 = load double, ptr %96, align 8, !tbaa !33
  %98 = load ptr, ptr %11, align 8, !tbaa !5
  %99 = load double, ptr %98, align 8, !tbaa !11
  %100 = fmul double %99, %97
  store double %100, ptr %98, align 8, !tbaa !11
  br label %101

101:                                              ; preds = %95, %92
  %102 = load i8, ptr %10, align 1, !tbaa !9, !range !28, !noundef !29
  %103 = trunc i8 %102 to i1
  br i1 %103, label %115, label %104

104:                                              ; preds = %101
  %105 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 30
  %106 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %105)
  %107 = load double, ptr %24, align 8, !tbaa !11
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = load ptr, ptr %106, align 8, !tbaa !30
  %111 = getelementptr inbounds ptr, ptr %110, i64 9
  %112 = load ptr, ptr %111, align 8
  %113 = call noundef zeroext i1 %112(ptr noundef nonnull align 8 dereferenceable(49) %106, double noundef %107, ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %109)
  %114 = zext i1 %113 to i8
  store i8 %114, ptr %17, align 1, !tbaa !9
  br label %115

115:                                              ; preds = %104, %101
  %116 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %117 = trunc i8 %116 to i1
  br i1 %117, label %118, label %120

118:                                              ; preds = %115
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  store i8 1, ptr %119, align 1, !tbaa !9
  br label %120

120:                                              ; preds = %118, %115
  %121 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %122 = trunc i8 %121 to i1
  br i1 %122, label %311, label %123

123:                                              ; preds = %120
  br label %124

124:                                              ; preds = %301, %123
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = load double, ptr %125, align 8, !tbaa !11
  %127 = load double, ptr %23, align 8, !tbaa !11
  %128 = fcmp ogt double %126, %127
  br i1 %128, label %133, label %129

129:                                              ; preds = %124
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !34
  %132 = icmp eq i32 %131, 0
  br label %133

133:                                              ; preds = %129, %124
  %134 = phi i1 [ true, %124 ], [ %132, %129 ]
  br i1 %134, label %135, label %310

135:                                              ; preds = %133
  %136 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load double, ptr %137, align 8, !tbaa !11
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %136, i32 noundef 5, i32 noundef 8, ptr noundef @.str.85, double noundef %138)
  %139 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
          to label %140 unwind label %161

140:                                              ; preds = %135
  %141 = load ptr, ptr %11, align 8, !tbaa !5
  %142 = load double, ptr %141, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %143)
          to label %145 unwind label %165

145:                                              ; preds = %140
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %25, ptr noundef nonnull align 8 dereferenceable(280) %144)
          to label %146 unwind label %165

146:                                              ; preds = %145
  %147 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %148 unwind label %169

148:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %149 = load ptr, ptr %16, align 8, !tbaa !5
  %150 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %151 unwind label %173

151:                                              ; preds = %148
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %26, ptr noundef nonnull align 8 dereferenceable(280) %150)
          to label %152 unwind label %173

152:                                              ; preds = %151
  %153 = invoke noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %154 unwind label %177

154:                                              ; preds = %152
  invoke void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864) %139, double noundef %142, ptr noundef nonnull align 8 dereferenceable(205) %147, ptr noundef nonnull align 8 dereferenceable(205) %153)
          to label %155 unwind label %177

155:                                              ; preds = %154
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  %156 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 5
  %157 = load i8, ptr %156, align 4, !tbaa !35, !range !28, !noundef !29
  %158 = trunc i8 %157 to i1
  br i1 %158, label %159, label %207

159:                                              ; preds = %155
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch16PerformMagicStepEv(ptr noundef nonnull align 8 dereferenceable(224) %37)
          to label %160 unwind label %161

160:                                              ; preds = %159
  br label %207

161:                                              ; preds = %225, %222, %219, %217, %215, %213, %159, %135
  %162 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %20, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %21, align 4
  br label %184

165:                                              ; preds = %145, %140
  %166 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %20, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %21, align 4
  br label %183

169:                                              ; preds = %146
  %170 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %20, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %21, align 4
  br label %182

173:                                              ; preds = %151, %148
  %174 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %20, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %21, align 4
  br label %181

177:                                              ; preds = %154, %152
  %178 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %20, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %21, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  br label %181

181:                                              ; preds = %177, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %182

182:                                              ; preds = %181, %169
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %183

183:                                              ; preds = %182, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %184

184:                                              ; preds = %183, %161
  %185 = load i32, ptr %21, align 4
  %186 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE) #7
  %187 = icmp eq i32 %185, %186
  br i1 %187, label %188, label %366

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %189 = load ptr, ptr %20, align 8
  %190 = call ptr @__cxa_begin_catch(ptr %189) #7
  store ptr %190, ptr %27, align 8
  %191 = load ptr, ptr %27, align 8, !tbaa !5
  %192 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
          to label %193 unwind label %234

193:                                              ; preds = %188
  invoke void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112) %191, ptr noundef nonnull align 8 dereferenceable(40) %192, i32 noundef 5)
          to label %194 unwind label %234

194:                                              ; preds = %193
  %195 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
          to label %196 unwind label %234

196:                                              ; preds = %194
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %195, i32 noundef 2, i32 noundef 8, ptr noundef @.str.86)
          to label %197 unwind label %234

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

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %200 unwind label %238

200:                                              ; preds = %199
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %198, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %201 unwind label %242

201:                                              ; preds = %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  store i8 0, ptr %17, align 1, !tbaa !9
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  store i8 1, ptr %202, align 1, !tbaa !9
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %203

203:                                              ; preds = %233, %201
  %204 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %205 = trunc i8 %204 to i1
  br i1 %205, label %206, label %249

206:                                              ; preds = %203
  br label %310

207:                                              ; preds = %160, %155
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = load double, ptr %208, align 8, !tbaa !11
  store double %209, ptr %24, align 8, !tbaa !11
  %210 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 6
  %211 = load i8, ptr %210, align 1, !tbaa !36, !range !28, !noundef !29
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %222

213:                                              ; preds = %207
  %214 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
          to label %215 unwind label %161

215:                                              ; preds = %213
  %216 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025) %214)
          to label %217 unwind label %161

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
          to label %219 unwind label %161

219:                                              ; preds = %217
  %220 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %218)
          to label %221 unwind label %161

221:                                              ; preds = %219
  store i8 1, ptr %17, align 1, !tbaa !9
  br label %233

222:                                              ; preds = %207
  %223 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 30
  %224 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %225 unwind label %161

225:                                              ; preds = %222
  %226 = load double, ptr %24, align 8, !tbaa !11
  %227 = load ptr, ptr %224, align 8, !tbaa !30
  %228 = getelementptr inbounds ptr, ptr %227, i64 7
  %229 = load ptr, ptr %228, align 8
  %230 = invoke noundef zeroext i1 %229(ptr noundef nonnull align 8 dereferenceable(49) %224, double noundef %226)
          to label %231 unwind label %161

231:                                              ; preds = %225
  %232 = zext i1 %230 to i8
  store i8 %232, ptr %17, align 1, !tbaa !9
  br label %233

233:                                              ; preds = %231, %221
  br label %203

234:                                              ; preds = %197, %196, %194, %193, %188
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %20, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %21, align 4
  br label %247

238:                                              ; preds = %199
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %20, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %21, align 4
  br label %246

242:                                              ; preds = %200
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %20, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %246

246:                                              ; preds = %242, %238
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  br label %247

247:                                              ; preds = %246, %234
  invoke void @__cxa_end_catch()
          to label %248 unwind label %373

248:                                              ; preds = %247
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %366

249:                                              ; preds = %203
  %250 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 14
  %251 = load i8, ptr %250, align 1, !tbaa !13, !range !28, !noundef !29
  %252 = trunc i8 %251 to i1
  br i1 %252, label %253, label %254

253:                                              ; preds = %249
  br label %310

254:                                              ; preds = %249
  %255 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 7
  %256 = load i8, ptr %255, align 2, !tbaa !37, !range !28, !noundef !29
  %257 = trunc i8 %256 to i1
  br i1 %257, label %258, label %264

258:                                              ; preds = %254
  %259 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 28
  %260 = load i32, ptr %259, align 4, !tbaa !38
  %261 = icmp sge i32 %260, 5
  br i1 %261, label %262, label %263

262:                                              ; preds = %258
  br label %310

263:                                              ; preds = %258
  br label %264

264:                                              ; preds = %263, %254
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i8, ptr %265, align 1, !tbaa !9, !range !28, !noundef !29
  %267 = trunc i8 %266 to i1
  br i1 %267, label %301, label %268

268:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %269 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %270 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %269)
  store double %270, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %271 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %272 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %271)
  store double %272, ptr %31, align 8, !tbaa !11
  %273 = load ptr, ptr %11, align 8, !tbaa !5
  %274 = load double, ptr %273, align 8, !tbaa !11
  %275 = load double, ptr %18, align 8, !tbaa !11
  %276 = fcmp oeq double %274, %275
  br i1 %276, label %277, label %292

277:                                              ; preds = %268
  %278 = load double, ptr %30, align 8, !tbaa !11
  %279 = load double, ptr %31, align 8, !tbaa !11
  %280 = fcmp ole double %278, %279
  br i1 %280, label %281, label %292

281:                                              ; preds = %277
  %282 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 30
  %283 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %282)
  %284 = load double, ptr %24, align 8, !tbaa !11
  %285 = load ptr, ptr %11, align 8, !tbaa !5
  %286 = load ptr, ptr %16, align 8, !tbaa !5
  %287 = load ptr, ptr %283, align 8, !tbaa !30
  %288 = getelementptr inbounds ptr, ptr %287, i64 8
  %289 = load ptr, ptr %288, align 8
  %290 = call noundef zeroext i1 %289(ptr noundef nonnull align 8 dereferenceable(49) %283, double noundef %284, ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %286)
  %291 = zext i1 %290 to i8
  store i8 %291, ptr %17, align 1, !tbaa !9
  br label %292

292:                                              ; preds = %281, %277, %268
  %293 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %294 = trunc i8 %293 to i1
  br i1 %294, label %295, label %297

295:                                              ; preds = %292
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 1, ptr %296, align 1, !tbaa !9
  store i32 3, ptr %32, align 4
  br label %298

297:                                              ; preds = %292
  store i32 0, ptr %32, align 4
  br label %298

298:                                              ; preds = %297, %295
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  %299 = load i32, ptr %32, align 4
  switch i32 %299, label %376 [
    i32 0, label %300
    i32 3, label %310
  ]

300:                                              ; preds = %298
  br label %301

301:                                              ; preds = %300, %264
  %302 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 1
  %303 = load double, ptr %302, align 8, !tbaa !33
  %304 = load ptr, ptr %11, align 8, !tbaa !5
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = fmul double %305, %303
  store double %306, ptr %304, align 8, !tbaa !11
  %307 = load ptr, ptr %14, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !34
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %307, align 4, !tbaa !34
  br label %124, !llvm.loop !39

310:                                              ; preds = %298, %262, %253, %206, %133
  br label %311

311:                                              ; preds = %310, %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  store i8 63, ptr %33, align 1, !tbaa !41
  %312 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %313 = trunc i8 %312 to i1
  br i1 %313, label %319, label %314

314:                                              ; preds = %311
  %315 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 14
  %316 = load i8, ptr %315, align 1, !tbaa !13, !range !28, !noundef !29
  %317 = trunc i8 %316 to i1
  br i1 %317, label %318, label %319

318:                                              ; preds = %314
  store i8 119, ptr %33, align 1, !tbaa !41
  br label %331

319:                                              ; preds = %314, %311
  %320 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %321 = trunc i8 %320 to i1
  br i1 %321, label %322, label %330

322:                                              ; preds = %319
  %323 = getelementptr inbounds %"class.SimTKIpopt::BacktrackingLineSearch", ptr %37, i32 0, i32 30
  %324 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %323)
  %325 = load double, ptr %24, align 8, !tbaa !11
  %326 = load ptr, ptr %324, align 8, !tbaa !30
  %327 = getelementptr inbounds ptr, ptr %326, i64 10
  %328 = load ptr, ptr %327, align 8
  %329 = call noundef signext i8 %328(ptr noundef nonnull align 8 dereferenceable(49) %324, double noundef %325)
  store i8 %329, ptr %33, align 1, !tbaa !41
  br label %330

330:                                              ; preds = %322, %319
  br label %331

331:                                              ; preds = %330, %318
  %332 = load ptr, ptr %13, align 8, !tbaa !5
  %333 = load i8, ptr %332, align 1, !tbaa !9, !range !28, !noundef !29
  %334 = trunc i8 %333 to i1
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load i8, ptr %33, align 1, !tbaa !41
  %337 = sext i8 %336 to i32
  %338 = call i32 @toupper(i32 noundef %337) #8
  %339 = trunc i32 %338 to i8
  store i8 %339, ptr %33, align 1, !tbaa !41
  br label %340

340:                                              ; preds = %335, %331
  %341 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %342 = load i8, ptr %33, align 1, !tbaa !41
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %341, i8 noundef signext %342)
  %343 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !34
  %346 = add nsw i32 %345, 1
  call void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %343, i32 noundef %346)
  %347 = load ptr, ptr %12, align 8, !tbaa !5
  %348 = load i8, ptr %347, align 1, !tbaa !9, !range !28, !noundef !29
  %349 = trunc i8 %348 to i1
  br i1 %349, label %350, label %363

350:                                              ; preds = %340
  %351 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %37)
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #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.88, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %352 unwind label %354

352:                                              ; preds = %350
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %351, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %353 unwind label %358

353:                                              ; preds = %352
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  br label %363

354:                                              ; preds = %350
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %20, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %21, align 4
  br label %362

358:                                              ; preds = %352
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %20, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %21, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %362

362:                                              ; preds = %358, %354
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  br label %366

363:                                              ; preds = %353, %340
  %364 = load i8, ptr %17, align 1, !tbaa !9, !range !28, !noundef !29
  %365 = trunc i8 %364 to i1
  store i32 1, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  ret i1 %365

366:                                              ; preds = %362, %248, %184
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %367

367:                                              ; preds = %366, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  br label %368

368:                                              ; preds = %367
  %369 = load ptr, ptr %20, align 8
  %370 = load i32, ptr %21, align 4
  %371 = insertvalue { ptr, i32 } poison, ptr %369, 0
  %372 = insertvalue { ptr, i32 } %371, i32 %370, 1
  resume { ptr, i32 } %372

373:                                              ; preds = %247
  %374 = landingpad { ptr, i32 }
          catch ptr null
  %375 = extractvalue { ptr, i32 } %374, 0
  call void @__clang_call_terminate(ptr %375) #9
  unreachable

376:                                              ; preds = %298
  unreachable
}

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

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

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @toupper(i32 noundef) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !10, i64 121}
!14 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearchE", !15, i64 0, !12, i64 56, !23, i64 64, !12, i64 72, !18, i64 80, !10, i64 84, !10, i64 85, !10, i64 86, !12, i64 88, !12, i64 96, !12, i64 104, !18, i64 112, !18, i64 116, !10, i64 120, !10, i64 121, !18, i64 124, !18, i64 128, !12, i64 136, !24, i64 144, !24, i64 152, !12, i64 160, !24, i64 168, !18, i64 176, !10, i64 180, !10, i64 181, !10, i64 182, !10, i64 183, !18, i64 184, !18, i64 188, !10, i64 192, !25, i64 200, !26, i64 208, !27, i64 216}
!15 = !{!"_ZTSN10SimTKIpopt10LineSearchE", !16, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !17, i64 0, !19, i64 16, !20, i64 24, !21, i64 32, !22, i64 40, !10, i64 48}
!17 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !18, i64 8}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearch13AlphaForYEnumE", !7, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !6, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEE", !6, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEE", !6, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16ConvergenceCheckEEE", !6, i64 0}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!31, !31, i64 0}
!31 = !{!"vtable pointer", !8, i64 0}
!32 = !{!14, !12, i64 136}
!33 = !{!14, !12, i64 56}
!34 = !{!18, !18, i64 0}
!35 = !{!14, !10, i64 84}
!36 = !{!14, !10, i64 85}
!37 = !{!14, !10, i64 86}
!38 = !{!14, !18, i64 188}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!7, !7, i64 0}


; 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.51" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.15" = type { i8 }

@_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.84 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.88 = 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: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #1

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @__cxa_end_catch() local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt22BacktrackingLineSearch24DoBacktrackingLineSearchEbRdRbS2_RiS2_RNS_8SmartPtrINS_14IteratesVectorEEE(ptr noundef nonnull align 8 dereferenceable(224) %0, i1 noundef zeroext %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull align 1 dereferenceable(1) %3, ptr nocapture noundef nonnull align 1 dereferenceable(1) %4, ptr nocapture noundef nonnull align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull align 1 dereferenceable(1) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %10 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %11 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %12 = alloca %"class.SimTKIpopt::SmartPtr.51", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.15", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.15", align 1
  store i8 0, ptr %6, align 1, !tbaa !5
  %17 = tail call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %18 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %19 = tail call noundef double @_ZNK10SimTKIpopt9IpoptData8curr_tauEv(ptr noundef nonnull align 8 dereferenceable(864) %18)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %20 = tail call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %9, ptr noundef nonnull align 8 dereferenceable(280) %20)
  %21 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %22 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %10, ptr noundef nonnull align 8 dereferenceable(280) %22)
          to label %23 unwind label %37

23:                                               ; preds = %8
  %24 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %25 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities24primal_frac_to_the_boundEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(2025) %17, double noundef %19, ptr noundef nonnull align 8 dereferenceable(205) %21, ptr noundef nonnull align 8 dereferenceable(205) %24)
          to label %26 unwind label %39

26:                                               ; preds = %23
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  %27 = getelementptr inbounds i8, ptr %0, i64 121
  %28 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %29 = trunc nuw i8 %28 to i1
  br i1 %29, label %42, label %30

30:                                               ; preds = %26
  %31 = getelementptr inbounds i8, ptr %0, i64 200
  %32 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %31)
  %33 = load ptr, ptr %32, align 8, !tbaa !28
  %34 = getelementptr inbounds i8, ptr %33, i64 48
  %35 = load ptr, ptr %34, align 8
  %36 = call noundef double %35(ptr noundef nonnull align 8 dereferenceable(49) %32)
  br label %42

37:                                               ; preds = %8
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %41

39:                                               ; preds = %23
  %40 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  br label %41

41:                                               ; preds = %39, %37
  %.pn = phi { ptr, i32 } [ %40, %39 ], [ %38, %37 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %.loopexit

42:                                               ; preds = %30, %26
  %.079 = phi double [ %25, %26 ], [ %36, %30 ]
  %43 = 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) %43, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.84, double noundef %.079)
  store double %25, ptr %2, align 8, !tbaa !30
  %44 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %45 = trunc nuw i8 %44 to i1
  %46 = getelementptr inbounds i8, ptr %0, i64 136
  %47 = load double, ptr %46, align 8
  %.073 = select i1 %45, double %47, double %25
  br i1 %1, label %.thread132, label %51

.thread132:                                       ; preds = %42
  %48 = getelementptr inbounds i8, ptr %0, i64 56
  %49 = load double, ptr %48, align 8, !tbaa !31
  %50 = fmul double %25, %49
  store double %50, ptr %2, align 8, !tbaa !30
  br label %.critedge94.preheader

51:                                               ; preds = %42
  %52 = getelementptr inbounds i8, ptr %0, i64 200
  %53 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %52)
  %54 = load ptr, ptr %53, align 8, !tbaa !28
  %55 = getelementptr inbounds i8, ptr %54, i64 72
  %56 = load ptr, ptr %55, align 8
  %57 = call noundef zeroext i1 %56(ptr noundef nonnull align 8 dereferenceable(49) %53, double noundef %.073, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %7)
  br i1 %57, label %.thread.sink.split, label %.critedge94.preheader

.critedge94.preheader:                            ; preds = %.thread132, %51
  %.056134 = phi i1 [ false, %.thread132 ], [ %57, %51 ]
  %58 = load double, ptr %2, align 8, !tbaa !30
  %59 = fcmp ogt double %58, %.079
  %60 = load i32, ptr %5, align 4
  %61 = icmp eq i32 %60, 0
  %or.cond118 = select i1 %59, i1 true, i1 %61
  br i1 %or.cond118, label %.critedge.lr.ph, label %.thread

.critedge.lr.ph:                                  ; preds = %.critedge94.preheader
  %62 = getelementptr inbounds i8, ptr %0, i64 84
  %63 = getelementptr inbounds i8, ptr %0, i64 85
  %64 = getelementptr inbounds i8, ptr %0, i64 200
  %65 = getelementptr inbounds i8, ptr %0, i64 86
  %66 = getelementptr inbounds i8, ptr %0, i64 188
  %67 = getelementptr inbounds i8, ptr %0, i64 56
  br label %.critedge

.critedge:                                        ; preds = %.critedge.lr.ph, %.thread109
  %.174119 = phi double [ %.073, %.critedge.lr.ph ], [ %.477107, %.thread109 ]
  %68 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %69 = load double, ptr %2, align 8, !tbaa !30
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %68, i32 noundef 5, i32 noundef 8, ptr noundef nonnull @.str.85, double noundef %69)
  %70 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %71 unwind label %83

71:                                               ; preds = %.critedge
  %72 = load double, ptr %2, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %73 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %11, ptr noundef nonnull align 8 dereferenceable(280) %73)
          to label %74 unwind label %85

74:                                               ; preds = %71
  %75 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %76 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.51") align 8 %12, ptr noundef nonnull align 8 dereferenceable(280) %76)
          to label %77 unwind label %87

77:                                               ; preds = %74
  %78 = call noundef nonnull align 8 dereferenceable(205) ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
  invoke void @_ZN10SimTKIpopt9IpoptData31SetTrialPrimalVariablesFromStepEdRKNS_6VectorES3_(ptr noundef nonnull align 8 dereferenceable(864) %70, double noundef %72, ptr noundef nonnull align 8 dereferenceable(205) %75, ptr noundef nonnull align 8 dereferenceable(205) %78)
          to label %79 unwind label %89

79:                                               ; preds = %77
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %80 = load i8, ptr %62, align 4, !tbaa !32, !range !26, !noundef !27
  %81 = trunc nuw i8 %80 to i1
  br i1 %81, label %82, label %108

82:                                               ; preds = %79
  invoke void @_ZN10SimTKIpopt22BacktrackingLineSearch16PerformMagicStepEv(ptr noundef nonnull align 8 dereferenceable(224) %0)
          to label %108 unwind label %83

83:                                               ; preds = %120, %118, %116, %114, %112, %82, %.critedge
  %.275 = phi double [ %109, %118 ], [ %109, %116 ], [ %109, %114 ], [ %109, %112 ], [ %109, %120 ], [ %.174119, %82 ], [ %.174119, %.critedge ]
  %84 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  br label %93

85:                                               ; preds = %71
  %86 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  br label %92

87:                                               ; preds = %74
  %88 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  br label %91

89:                                               ; preds = %77
  %90 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  br label %91

91:                                               ; preds = %89, %87
  %.pn81 = phi { ptr, i32 } [ %90, %89 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br label %92

92:                                               ; preds = %91, %85
  %.pn81.pn = phi { ptr, i32 } [ %.pn81, %91 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %93

93:                                               ; preds = %92, %83
  %.376 = phi double [ %.275, %83 ], [ %.174119, %92 ]
  %.pn84 = phi { ptr, i32 } [ %84, %83 ], [ %.pn81.pn, %92 ]
  %.367 = extractvalue { ptr, i32 } %.pn84, 1
  %94 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN10SimTKIpopt8IpoptNLP10Eval_ErrorE) #7
  %95 = icmp eq i32 %.367, %94
  br i1 %95, label %96, label %.loopexit

96:                                               ; preds = %93
  %.361 = extractvalue { ptr, i32 } %.pn84, 0
  %97 = call ptr @__cxa_begin_catch(ptr %.361) #7
  %98 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %99 unwind label %126

99:                                               ; preds = %96
  invoke void @_ZNK10SimTKIpopt14IpoptException15ReportExceptionERKNS_10JournalistENS_13EJournalLevelE(ptr noundef nonnull align 8 dereferenceable(112) %97, ptr noundef nonnull align 8 dereferenceable(40) %98, i32 noundef 5)
          to label %100 unwind label %126

100:                                              ; preds = %99
  %101 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5JnlstEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %102 unwind label %126

102:                                              ; preds = %100
  invoke void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %101, i32 noundef 2, i32 noundef 8, ptr noundef nonnull @.str.86)
          to label %103 unwind label %126

103:                                              ; preds = %102
  %104 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %105 unwind label %126

105:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.87, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %106 unwind label %128

106:                                              ; preds = %105
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %104, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %.thread104 unwind label %130

.thread104:                                       ; preds = %106
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  store i8 1, ptr %6, align 1, !tbaa !5
  call void @__cxa_end_catch()
  br label %134

107:                                              ; preds = %120
  br i1 %125, label %.critedge101, label %134

108:                                              ; preds = %82, %79
  %109 = load double, ptr %2, align 8, !tbaa !30
  %110 = load i8, ptr %63, align 1, !tbaa !33, !range !26, !noundef !27
  %111 = trunc nuw i8 %110 to i1
  br i1 %111, label %112, label %120

112:                                              ; preds = %108
  %113 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %114 unwind label %83

114:                                              ; preds = %112
  %115 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities17trial_barrier_objEv(ptr noundef nonnull align 8 dereferenceable(2025) %113)
          to label %116 unwind label %83

116:                                              ; preds = %114
  %117 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %118 unwind label %83

118:                                              ; preds = %116
  %119 = invoke noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %117)
          to label %.critedge101 unwind label %83

120:                                              ; preds = %108
  %121 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64)
  %122 = load ptr, ptr %121, align 8, !tbaa !28
  %123 = getelementptr inbounds i8, ptr %122, i64 56
  %124 = load ptr, ptr %123, align 8
  %125 = invoke noundef zeroext i1 %124(ptr noundef nonnull align 8 dereferenceable(49) %121, double noundef %109)
          to label %107 unwind label %83

126:                                              ; preds = %103, %102, %100, %99, %96
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %133

128:                                              ; preds = %105
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %106
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %132

132:                                              ; preds = %130, %128
  %.pn86 = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %133

133:                                              ; preds = %132, %126
  %.pn86.pn = phi { ptr, i32 } [ %.pn86, %132 ], [ %127, %126 ]
  invoke void @__cxa_end_catch()
          to label %.loopexit unwind label %199

134:                                              ; preds = %.thread104, %107
  %.477107 = phi double [ %.376, %.thread104 ], [ %109, %107 ]
  %135 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %136 = trunc nuw i8 %135 to i1
  br i1 %136, label %.thread.thread, label %137

137:                                              ; preds = %134
  %138 = load i8, ptr %65, align 2, !tbaa !34, !range !26, !noundef !27
  %139 = trunc nuw i8 %138 to i1
  %140 = load i32, ptr %66, align 4
  %141 = icmp sgt i32 %140, 4
  %or.cond98 = select i1 %139, i1 %141, i1 false
  br i1 %or.cond98, label %.thread.thread, label %142

142:                                              ; preds = %137
  %143 = load i8, ptr %6, align 1, !tbaa !5, !range !26, !noundef !27
  %144 = trunc nuw i8 %143 to i1
  br i1 %144, label %.thread109, label %145

145:                                              ; preds = %142
  %146 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %147 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %146)
  %148 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %149 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities26trial_constraint_violationEv(ptr noundef nonnull align 8 dereferenceable(2025) %148)
  %150 = load double, ptr %2, align 8, !tbaa !30
  %151 = fcmp une double %150, %25
  %152 = fcmp ugt double %147, %149
  %or.cond99 = or i1 %152, %151
  br i1 %or.cond99, label %.thread109, label %153

153:                                              ; preds = %145
  %154 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64)
  %155 = load ptr, ptr %154, align 8, !tbaa !28
  %156 = getelementptr inbounds i8, ptr %155, i64 64
  %157 = load ptr, ptr %156, align 8
  %158 = call noundef zeroext i1 %157(ptr noundef nonnull align 8 dereferenceable(49) %154, double noundef %.477107, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %7)
  br i1 %158, label %.thread.sink.split, label %.thread109

.thread109:                                       ; preds = %145, %153, %142
  %.4 = phi i1 [ false, %142 ], [ %158, %153 ], [ false, %145 ]
  %159 = load double, ptr %67, align 8, !tbaa !31
  %160 = load double, ptr %2, align 8, !tbaa !30
  %161 = fmul double %159, %160
  store double %161, ptr %2, align 8, !tbaa !30
  %162 = load i32, ptr %5, align 4, !tbaa !35
  %163 = add nsw i32 %162, 1
  store i32 %163, ptr %5, align 4, !tbaa !35
  %164 = fcmp ogt double %161, %.079
  %165 = icmp eq i32 %163, 0
  %or.cond = select i1 %164, i1 true, i1 %165
  br i1 %or.cond, label %.critedge, label %.thread, !llvm.loop !36

.thread.sink.split:                               ; preds = %153, %51
  %.sink = phi ptr [ %3, %51 ], [ %4, %153 ]
  %.578.ph = phi double [ %.073, %51 ], [ %.477107, %153 ]
  %.5.ph = phi i1 [ %57, %51 ], [ %158, %153 ]
  store i8 1, ptr %.sink, align 1, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread109, %.thread.sink.split, %.critedge94.preheader
  %.578 = phi double [ %.073, %.critedge94.preheader ], [ %.578.ph, %.thread.sink.split ], [ %.477107, %.thread109 ]
  %.5 = phi i1 [ %.056134, %.critedge94.preheader ], [ %.5.ph, %.thread.sink.split ], [ %.4, %.thread109 ]
  br i1 %.5, label %.critedge101, label %.thread.thread

.thread.thread:                                   ; preds = %134, %137, %.thread
  %166 = load i8, ptr %27, align 1, !tbaa !9, !range !26, !noundef !27
  %167 = trunc nuw i8 %166 to i1
  %.mux = select i1 %167, i8 119, i8 63
  br label %174

.critedge101:                                     ; preds = %107, %118, %.thread
  %.578114 = phi double [ %.578, %.thread ], [ %109, %118 ], [ %109, %107 ]
  %168 = getelementptr inbounds i8, ptr %0, i64 200
  %169 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %168)
  %170 = load ptr, ptr %169, align 8, !tbaa !28
  %171 = getelementptr inbounds i8, ptr %170, i64 80
  %172 = load ptr, ptr %171, align 8
  %173 = call noundef signext i8 %172(ptr noundef nonnull align 8 dereferenceable(49) %169, double noundef %.578114)
  br label %174

174:                                              ; preds = %.thread.thread, %.critedge101
  %175 = phi i1 [ true, %.critedge101 ], [ false, %.thread.thread ]
  %.0 = phi i8 [ %173, %.critedge101 ], [ %.mux, %.thread.thread ]
  %176 = load i8, ptr %4, align 1, !tbaa !5, !range !26, !noundef !27
  %177 = trunc nuw i8 %176 to i1
  br i1 %177, label %178, label %182

178:                                              ; preds = %174
  %179 = sext i8 %.0 to i32
  %180 = call i32 @toupper(i32 noundef %179) #8
  %181 = trunc i32 %180 to i8
  br label %182

182:                                              ; preds = %178, %174
  %.1 = phi i8 [ %181, %178 ], [ %.0, %174 ]
  %183 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt9IpoptData26Set_info_alpha_primal_charEc(ptr noundef nonnull align 8 dereferenceable(864) %183, i8 noundef signext %.1)
  %184 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %185 = load i32, ptr %5, align 4, !tbaa !35
  %186 = add nsw i32 %185, 1
  call void @_ZN10SimTKIpopt9IpoptData17Set_info_ls_countEi(ptr noundef nonnull align 8 dereferenceable(864) %184, i32 noundef %186)
  %187 = load i8, ptr %3, align 1, !tbaa !5, !range !26, !noundef !27
  %188 = trunc nuw i8 %187 to i1
  br i1 %188, label %189, label %198

189:                                              ; preds = %182
  %190 = 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 %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.88, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %191 unwind label %193

191:                                              ; preds = %189
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %190, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %192 unwind label %195

192:                                              ; preds = %191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %198

193:                                              ; preds = %189
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %191
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %197

197:                                              ; preds = %195, %193
  %.pn89 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %.loopexit

198:                                              ; preds = %192, %182
  ret i1 %175

.loopexit:                                        ; preds = %93, %133, %197, %41
  %.merged = phi { ptr, i32 } [ %.pn, %41 ], [ %.pn89, %197 ], [ %.pn86.pn, %133 ], [ %.pn84, %93 ]
  resume { ptr, i32 } %.merged

199:                                              ; preds = %133
  %200 = landingpad { ptr, i32 }
          catch ptr null
  %201 = extractvalue { ptr, i32 } %200, 0
  call void @__clang_call_terminate(ptr %201) #9
  unreachable
}

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare i32 @toupper(i32 noundef) local_unnamed_addr #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 121}
!10 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearchE", !11, i64 0, !20, i64 56, !21, i64 64, !20, i64 72, !14, i64 80, !6, i64 84, !6, i64 85, !6, i64 86, !20, i64 88, !20, i64 96, !20, i64 104, !14, i64 112, !14, i64 116, !6, i64 120, !6, i64 121, !14, i64 124, !14, i64 128, !20, i64 136, !22, i64 144, !22, i64 152, !20, i64 160, !22, i64 168, !14, i64 176, !6, i64 180, !6, i64 181, !6, i64 182, !6, i64 183, !14, i64 184, !14, i64 188, !6, i64 192, !23, i64 200, !24, i64 208, !25, i64 216}
!11 = !{!"_ZTSN10SimTKIpopt10LineSearchE", !12, i64 0}
!12 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !13, i64 0, !15, i64 16, !17, i64 24, !18, i64 32, !19, i64 40, !6, i64 48}
!13 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !14, i64 8}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !16, i64 0}
!16 = !{!"any pointer", !7, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !16, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !16, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !16, i64 0}
!20 = !{!"double", !7, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt22BacktrackingLineSearch13AlphaForYEnumE", !7, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEE", !16, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22BacktrackingLSAcceptorEEE", !16, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16RestorationPhaseEEE", !16, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16ConvergenceCheckEEE", !16, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!29, !29, i64 0}
!29 = !{!"vtable pointer", !8, i64 0}
!30 = !{!20, !20, i64 0}
!31 = !{!10, !20, i64 56}
!32 = !{!10, !6, i64 84}
!33 = !{!10, !6, i64 85}
!34 = !{!10, !6, i64 86}
!35 = !{!14, !14, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}


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