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

; 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.23" = type { ptr }
%"class.SimTKIpopt::SmartPtr.31" = type { ptr }
%"class.SimTKIpopt::SmartPtr.43" = type { ptr }
%"class.SimTKIpopt::SmartPtr.9" = 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.11" = type { i8 }
%"class.SimTKIpopt::OptimalityErrorConvergenceCheck" = type <{ %"class.SimTKIpopt::ConvergenceCheck.base", [3 x i8], i32, double, double, double, i32, [4 x i8], double, double, double, double, double, i32, [4 x i8] }>
%"class.SimTKIpopt::ConvergenceCheck.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 }

@.str.30 = 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 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 uwtable
define dso_local noundef i32 @_ZN10SimTKIpopt31OptimalityErrorConvergenceCheck16CheckConvergenceEb(ptr noundef nonnull align 8 dereferenceable(132) %0, i1 noundef zeroext %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %16 = alloca i1, align 1
  %17 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %18 = alloca i1, align 1
  %19 = alloca i1, align 1
  %20 = alloca i1, align 1
  %21 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %22 = alloca i1, align 1
  %23 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %24 = alloca i1, align 1
  %25 = alloca i1, align 1
  %26 = alloca i1, align 1
  %27 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %28 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %29 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %30 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i8, align 1
  %37 = alloca %"class.SimTKIpopt::SmartPtr.43", align 8
  %38 = alloca %"class.SimTKIpopt::SmartPtr.9", align 8
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %45 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %46 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %47 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.11", align 1
  %50 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %51 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  %52 = zext i1 %1 to i8
  store i8 %52, ptr %5, align 1, !tbaa !9
  %53 = load ptr, ptr %4, align 8
  %54 = load i8, ptr %5, align 1, !tbaa !9, !range !11, !noundef !12
  %55 = trunc i8 %54 to i1
  br i1 %55, label %56, label %267

56:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %57 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %58 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %57)
  store i32 %58, ptr %7, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %59 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %60 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_primal_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %59, i32 noundef 2)
  store double %60, ptr %8, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %61 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %62 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities23curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %61, i32 noundef 2)
  store double %62, ptr %9, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %63 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %64 = call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %63)
  store double %64, ptr %10, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %65 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %12, ptr noundef nonnull align 8 dereferenceable(864) %65)
  store i1 false, ptr %16, align 1
  store i1 false, ptr %18, align 1
  store i1 false, ptr %19, align 1
  store i1 false, ptr %20, align 1
  store i1 false, ptr %22, align 1
  store i1 false, ptr %24, align 1
  store i1 false, ptr %25, align 1
  store i1 false, ptr %26, align 1
  %66 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_14IteratesVectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %67 unwind label %133

67:                                               ; preds = %56
  br i1 %66, label %68, label %86

68:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store i1 true, ptr %16, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store i1 true, ptr %18, align 1
  %69 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
          to label %70 unwind label %137

70:                                               ; preds = %68
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %17, ptr noundef nonnull align 8 dereferenceable(864) %69)
          to label %71 unwind label %137

71:                                               ; preds = %70
  store i1 true, ptr %19, align 1
  %72 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %73 unwind label %141

73:                                               ; preds = %71
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %15, ptr noundef nonnull align 8 dereferenceable(280) %72)
          to label %74 unwind label %141

74:                                               ; preds = %73
  store i1 true, ptr %20, align 1
  %75 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %76 unwind label %145

76:                                               ; preds = %74
  br i1 %75, label %77, label %86

77:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  store i1 true, ptr %22, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store i1 true, ptr %24, align 1
  %78 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
          to label %79 unwind label %149

79:                                               ; preds = %77
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %23, ptr noundef nonnull align 8 dereferenceable(864) %78)
          to label %80 unwind label %149

80:                                               ; preds = %79
  store i1 true, ptr %25, align 1
  %81 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %82 unwind label %153

82:                                               ; preds = %80
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %21, ptr noundef nonnull align 8 dereferenceable(280) %81)
          to label %83 unwind label %153

83:                                               ; preds = %82
  store i1 true, ptr %26, align 1
  %84 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %85 unwind label %157

85:                                               ; preds = %83
  br label %86

86:                                               ; preds = %85, %76, %67
  %87 = phi i1 [ false, %76 ], [ false, %67 ], [ %84, %85 ]
  %88 = load i1, ptr %26, align 1
  br i1 %88, label %89, label %90

89:                                               ; preds = %86
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br label %90

90:                                               ; preds = %89, %86
  %91 = load i1, ptr %25, align 1
  br i1 %91, label %92, label %93

92:                                               ; preds = %90
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br label %93

93:                                               ; preds = %92, %90
  %94 = load i1, ptr %24, align 1
  br i1 %94, label %95, label %96

95:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %96

96:                                               ; preds = %95, %93
  %97 = load i1, ptr %22, align 1
  br i1 %97, label %98, label %99

98:                                               ; preds = %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %99

99:                                               ; preds = %98, %96
  %100 = load i1, ptr %20, align 1
  br i1 %100, label %101, label %102

101:                                              ; preds = %99
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  br label %102

102:                                              ; preds = %101, %99
  %103 = load i1, ptr %19, align 1
  br i1 %103, label %104, label %105

104:                                              ; preds = %102
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %105

105:                                              ; preds = %104, %102
  %106 = load i1, ptr %18, align 1
  br i1 %106, label %107, label %108

107:                                              ; preds = %105
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %108

108:                                              ; preds = %107, %105
  %109 = load i1, ptr %16, align 1
  br i1 %109, label %110, label %111

110:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %111

111:                                              ; preds = %110, %108
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br i1 %87, label %112, label %215

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %113 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %28, ptr noundef nonnull align 8 dereferenceable(864) %113)
  %114 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %115 unwind label %191

115:                                              ; preds = %112
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %27, ptr noundef nonnull align 8 dereferenceable(280) %114)
          to label %116 unwind label %191

116:                                              ; preds = %115
  %117 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %118 unwind label %195

118:                                              ; preds = %116
  %119 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %117)
          to label %120 unwind label %195

120:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %121 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
          to label %122 unwind label %199

122:                                              ; preds = %120
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %30, ptr noundef nonnull align 8 dereferenceable(864) %121)
          to label %123 unwind label %199

123:                                              ; preds = %122
  %124 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %125 unwind label %203

125:                                              ; preds = %123
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %29, ptr noundef nonnull align 8 dereferenceable(280) %124)
          to label %126 unwind label %203

126:                                              ; preds = %125
  %127 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %128 unwind label %207

128:                                              ; preds = %126
  %129 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %127)
          to label %130 unwind label %207

130:                                              ; preds = %128
  %131 = invoke noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %119, double noundef %129)
          to label %132 unwind label %207

132:                                              ; preds = %130
  store double %131, ptr %11, align 8, !tbaa !17
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  br label %216

133:                                              ; preds = %56
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %13, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %14, align 4
  br label %190

137:                                              ; preds = %70, %68
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %13, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %14, align 4
  br label %183

141:                                              ; preds = %73, %71
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %13, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %14, align 4
  br label %179

145:                                              ; preds = %74
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %13, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %14, align 4
  br label %175

149:                                              ; preds = %79, %77
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %13, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %14, align 4
  br label %168

153:                                              ; preds = %82, %80
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %13, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %14, align 4
  br label %164

157:                                              ; preds = %83
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %13, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %14, align 4
  %161 = load i1, ptr %26, align 1
  br i1 %161, label %162, label %163

162:                                              ; preds = %157
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br label %163

163:                                              ; preds = %162, %157
  br label %164

164:                                              ; preds = %163, %153
  %165 = load i1, ptr %25, align 1
  br i1 %165, label %166, label %167

166:                                              ; preds = %164
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br label %167

167:                                              ; preds = %166, %164
  br label %168

168:                                              ; preds = %167, %149
  %169 = load i1, ptr %24, align 1
  br i1 %169, label %170, label %171

170:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %171

171:                                              ; preds = %170, %168
  %172 = load i1, ptr %22, align 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %174

174:                                              ; preds = %173, %171
  br label %175

175:                                              ; preds = %174, %145
  %176 = load i1, ptr %20, align 1
  br i1 %176, label %177, label %178

177:                                              ; preds = %175
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  br label %178

178:                                              ; preds = %177, %175
  br label %179

179:                                              ; preds = %178, %141
  %180 = load i1, ptr %19, align 1
  br i1 %180, label %181, label %182

181:                                              ; preds = %179
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %182

182:                                              ; preds = %181, %179
  br label %183

183:                                              ; preds = %182, %137
  %184 = load i1, ptr %18, align 1
  br i1 %184, label %185, label %186

185:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %186

186:                                              ; preds = %185, %183
  %187 = load i1, ptr %16, align 1
  br i1 %187, label %188, label %189

188:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %189

189:                                              ; preds = %188, %186
  br label %190

190:                                              ; preds = %189, %133
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br label %266

191:                                              ; preds = %115, %112
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %13, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %14, align 4
  br label %214

195:                                              ; preds = %118, %116
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %13, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %14, align 4
  br label %213

199:                                              ; preds = %122, %120
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %13, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %14, align 4
  br label %212

203:                                              ; preds = %125, %123
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %13, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %14, align 4
  br label %211

207:                                              ; preds = %130, %128, %126
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %13, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %14, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  br label %211

211:                                              ; preds = %207, %203
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #6
  br label %212

212:                                              ; preds = %211, %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  br label %213

213:                                              ; preds = %212, %195
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  br label %214

214:                                              ; preds = %213, %191
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  br label %266

215:                                              ; preds = %111
  store double 0.000000e+00, ptr %11, align 8, !tbaa !17
  br label %216

216:                                              ; preds = %215, %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %217 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %218 = call noundef double @_ZNK10SimTKIpopt9IpoptData17info_alpha_primalEv(ptr noundef nonnull align 8 dereferenceable(864) %217)
  store double %218, ptr %31, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %219 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %220 = call noundef double @_ZNK10SimTKIpopt9IpoptData15info_alpha_dualEv(ptr noundef nonnull align 8 dereferenceable(864) %219)
  store double %220, ptr %32, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %221 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %222 = call noundef double @_ZNK10SimTKIpopt9IpoptData11info_regu_xEv(ptr noundef nonnull align 8 dereferenceable(864) %221)
  store double %222, ptr %33, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %223 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %224 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15unscaled_curr_fEv(ptr noundef nonnull align 8 dereferenceable(2025) %223)
  store double %224, ptr %34, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %225 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %226 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData13info_ls_countEv(ptr noundef nonnull align 8 dereferenceable(864) %225)
  store i32 %226, ptr %35, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  %227 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %228 = load i32, ptr %6, align 4, !tbaa !13
  %229 = load i32, ptr %7, align 4, !tbaa !15
  %230 = load double, ptr %34, align 8, !tbaa !17
  %231 = load double, ptr %8, align 8, !tbaa !17
  %232 = load double, ptr %9, align 8, !tbaa !17
  %233 = load double, ptr %10, align 8, !tbaa !17
  %234 = load double, ptr %11, align 8, !tbaa !17
  %235 = load double, ptr %33, align 8, !tbaa !17
  %236 = load double, ptr %32, align 8, !tbaa !17
  %237 = load double, ptr %31, align 8, !tbaa !17
  %238 = load i32, ptr %35, align 4, !tbaa !15
  %239 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef %239)
  %240 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
          to label %241 unwind label %253

241:                                              ; preds = %216
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %240)
          to label %242 unwind label %253

242:                                              ; preds = %241
  %243 = load ptr, ptr %227, align 8, !tbaa !19
  %244 = getelementptr inbounds ptr, ptr %243, i64 36
  %245 = load ptr, ptr %244, align 8
  %246 = invoke noundef zeroext i1 %245(ptr noundef nonnull align 8 dereferenceable(24) %227, i32 noundef %228, i32 noundef %229, double noundef %230, double noundef %231, double noundef %232, double noundef %233, double noundef %234, double noundef %235, double noundef %236, double noundef %237, i32 noundef %238, ptr noundef %37, ptr noundef %38)
          to label %247 unwind label %257

247:                                              ; preds = %242
  %248 = xor i1 %246, true
  call void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  %249 = zext i1 %248 to i8
  store i8 %249, ptr %36, align 1, !tbaa !9
  %250 = load i8, ptr %36, align 1, !tbaa !9, !range !11, !noundef !12
  %251 = trunc i8 %250 to i1
  br i1 %251, label %252, label %262

252:                                              ; preds = %247
  store i32 5, ptr %3, align 4
  store i32 1, ptr %39, align 4
  br label %263

253:                                              ; preds = %241, %216
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %13, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %14, align 4
  br label %261

257:                                              ; preds = %242
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %13, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %14, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #6
  br label %261

261:                                              ; preds = %257, %253
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %266

262:                                              ; preds = %247
  store i32 0, ptr %39, align 4
  br label %263

263:                                              ; preds = %262, %252
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  %264 = load i32, ptr %39, align 4
  switch i32 %264, label %416 [
    i32 0, label %265
    i32 1, label %409
  ]

265:                                              ; preds = %263
  br label %267

266:                                              ; preds = %261, %214, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %411

267:                                              ; preds = %265, %2
  %268 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %269 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %268)
  %270 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 2
  %271 = load i32, ptr %270, align 4, !tbaa !21
  %272 = icmp sge i32 %269, %271
  br i1 %272, label %273, label %274

273:                                              ; preds = %267
  store i32 3, ptr %3, align 4
  br label %409

274:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %275 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %276 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities14curr_nlp_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %275)
  store double %276, ptr %40, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %277 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %278 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities32unscaled_curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %277, i32 noundef 2)
  store double %278, ptr %41, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %279 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %280 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities38unscaled_curr_nlp_constraint_violationENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %279, i32 noundef 2)
  store double %280, ptr %42, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %281 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %282 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29unscaled_curr_complementarityEdNS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %281, double noundef 0.000000e+00, i32 noundef 2)
  store double %282, ptr %43, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %283 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %45, ptr noundef nonnull align 8 dereferenceable(864) %283)
  %284 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %285 unwind label %305

285:                                              ; preds = %274
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %44, ptr noundef nonnull align 8 dereferenceable(280) %284)
          to label %286 unwind label %305

286:                                              ; preds = %285
  %287 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %288 unwind label %309

288:                                              ; preds = %286
  %289 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %287)
          to label %290 unwind label %309

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  %291 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
          to label %292 unwind label %313

292:                                              ; preds = %290
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %47, ptr noundef nonnull align 8 dereferenceable(864) %291)
          to label %293 unwind label %313

293:                                              ; preds = %292
  %294 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %295 unwind label %317

295:                                              ; preds = %293
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %46, ptr noundef nonnull align 8 dereferenceable(280) %294)
          to label %296 unwind label %317

296:                                              ; preds = %295
  %297 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %298 unwind label %321

298:                                              ; preds = %296
  %299 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %297)
          to label %300 unwind label %321

300:                                              ; preds = %298
  %301 = icmp eq i32 %289, %299
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  br i1 %301, label %302, label %329

302:                                              ; preds = %300
  %303 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 3
  store double 1.000000e+300, ptr %303, align 8, !tbaa !30
  %304 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 5
  store double 1.000000e+300, ptr %304, align 8, !tbaa !31
  br label %329

305:                                              ; preds = %285, %274
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %13, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %14, align 4
  br label %328

309:                                              ; preds = %288, %286
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %13, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %14, align 4
  br label %327

313:                                              ; preds = %292, %290
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %13, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %14, align 4
  br label %326

317:                                              ; preds = %295, %293
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %13, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %14, align 4
  br label %325

321:                                              ; preds = %298, %296
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %13, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %14, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  br label %325

325:                                              ; preds = %321, %317
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #6
  br label %326

326:                                              ; preds = %325, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %327

327:                                              ; preds = %326, %309
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  br label %328

328:                                              ; preds = %327, %305
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  br label %408

329:                                              ; preds = %302, %300
  %330 = load double, ptr %40, align 8, !tbaa !17
  %331 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  %332 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %331)
  %333 = fcmp ole double %330, %332
  br i1 %333, label %334, label %350

334:                                              ; preds = %329
  %335 = load double, ptr %41, align 8, !tbaa !17
  %336 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 3
  %337 = load double, ptr %336, align 8, !tbaa !30
  %338 = fcmp ole double %335, %337
  br i1 %338, label %339, label %350

339:                                              ; preds = %334
  %340 = load double, ptr %42, align 8, !tbaa !17
  %341 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 4
  %342 = load double, ptr %341, align 8, !tbaa !32
  %343 = fcmp ole double %340, %342
  br i1 %343, label %344, label %350

344:                                              ; preds = %339
  %345 = load double, ptr %43, align 8, !tbaa !17
  %346 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 5
  %347 = load double, ptr %346, align 8, !tbaa !31
  %348 = fcmp ole double %345, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %344
  store i32 1, ptr %3, align 4
  store i32 1, ptr %39, align 4
  br label %407

350:                                              ; preds = %344, %339, %334, %329
  %351 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 6
  %352 = load i32, ptr %351, align 8, !tbaa !33
  %353 = icmp sgt i32 %352, 0
  br i1 %353, label %354, label %382

354:                                              ; preds = %350
  %355 = load ptr, ptr %53, align 8, !tbaa !19
  %356 = getelementptr inbounds ptr, ptr %355, i64 4
  %357 = load ptr, ptr %356, align 8
  %358 = call noundef zeroext i1 %357(ptr noundef nonnull align 8 dereferenceable(132) %53)
  br i1 %358, label %359, label %382

359:                                              ; preds = %354
  %360 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %361 unwind label %372

361:                                              ; preds = %359
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %360, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %362 unwind label %376

362:                                              ; preds = %361
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  %363 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 13
  %364 = load i32, ptr %363, align 8, !tbaa !34
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %363, align 8, !tbaa !34
  %366 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 13
  %367 = load i32, ptr %366, align 8, !tbaa !34
  %368 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 6
  %369 = load i32, ptr %368, align 8, !tbaa !33
  %370 = icmp sge i32 %367, %369
  br i1 %370, label %371, label %381

371:                                              ; preds = %362
  store i32 2, ptr %3, align 4
  store i32 1, ptr %39, align 4
  br label %407

372:                                              ; preds = %359
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %13, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %14, align 4
  br label %380

376:                                              ; preds = %361
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %13, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %380

380:                                              ; preds = %376, %372
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  br label %408

381:                                              ; preds = %362
  br label %384

382:                                              ; preds = %354, %350
  %383 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 13
  store i32 0, ptr %383, align 8, !tbaa !34
  br label %384

384:                                              ; preds = %382, %381
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  %385 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %53)
  call void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %51, ptr noundef nonnull align 8 dereferenceable(864) %385)
  %386 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %387 unwind label %397

387:                                              ; preds = %384
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %50, ptr noundef nonnull align 8 dereferenceable(280) %386)
          to label %388 unwind label %397

388:                                              ; preds = %387
  %389 = invoke noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %390 unwind label %401

390:                                              ; preds = %388
  %391 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %389)
          to label %392 unwind label %401

392:                                              ; preds = %390
  %393 = getelementptr inbounds %"class.SimTKIpopt::OptimalityErrorConvergenceCheck", ptr %53, i32 0, i32 12
  %394 = load double, ptr %393, align 8, !tbaa !35
  %395 = fcmp ogt double %391, %394
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  br i1 %395, label %396, label %406

396:                                              ; preds = %392
  store i32 4, ptr %3, align 4
  store i32 1, ptr %39, align 4
  br label %407

397:                                              ; preds = %387, %384
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %13, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %14, align 4
  br label %405

401:                                              ; preds = %390, %388
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %13, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %14, align 4
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  br label %405

405:                                              ; preds = %401, %397
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  br label %408

406:                                              ; preds = %392
  store i32 0, ptr %3, align 4
  store i32 1, ptr %39, align 4
  br label %407

407:                                              ; preds = %406, %396, %371, %349
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %409

408:                                              ; preds = %405, %380, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %411

409:                                              ; preds = %407, %273, %263
  %410 = load i32, ptr %3, align 4
  ret i32 %410

411:                                              ; preds = %408, %266
  %412 = load ptr, ptr %13, align 8
  %413 = load i32, ptr %14, align 4
  %414 = insertvalue { ptr, i32 } poison, ptr %412, 0
  %415 = insertvalue { ptr, i32 } %414, i32 %413, 1
  resume { ptr, i32 } %415

416:                                              ; preds = %263
  unreachable
}

; 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 nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864)) #1 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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_primal_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities23curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) #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 @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8, ptr noundef nonnull align 8 dereferenceable(280)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.31") 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 void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

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

; 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 double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205)) #4 align 2

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

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

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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15unscaled_curr_fEv(ptr noundef nonnull align 8 dereferenceable(2025)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData13info_ls_countEv(ptr noundef nonnull align 8 dereferenceable(864)) #1 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 void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #2 align 2

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

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

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

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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities32unscaled_curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities38unscaled_curr_nlp_constraint_violationENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29unscaled_curr_complementarityEdNS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), double noundef, i32 noundef) #3

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

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

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

; 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 @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864), ptr noundef nonnull align 8 dereferenceable(32)) #2 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

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 = { "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 = { 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 #5 = { 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 #6 = { 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 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN10SimTKIpopt13AlgorithmModeE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"vtable pointer", !8, i64 0}
!21 = !{!22, !16, i64 52}
!22 = !{!"_ZTSN10SimTKIpopt31OptimalityErrorConvergenceCheckE", !23, i64 0, !16, i64 52, !18, i64 56, !18, i64 64, !18, i64 72, !16, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !18, i64 112, !18, i64 120, !16, i64 128}
!23 = !{!"_ZTSN10SimTKIpopt16ConvergenceCheckE", !24, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !25, i64 0, !26, i64 16, !27, i64 24, !28, i64 32, !29, i64 40, !10, i64 48}
!25 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !16, i64 8}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!29 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!30 = !{!22, !18, i64 56}
!31 = !{!22, !18, i64 72}
!32 = !{!22, !18, i64 64}
!33 = !{!22, !16, i64 80}
!34 = !{!22, !16, i64 128}
!35 = !{!22, !18, i64 120}


; 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.23" = type { ptr }
%"class.SimTKIpopt::SmartPtr.31" = type { ptr }
%"class.SimTKIpopt::SmartPtr.43" = type { ptr }
%"class.SimTKIpopt::SmartPtr.9" = 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.11" = type { i8 }

@.str.30 = 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 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 uwtable
define dso_local noundef range(i32 0, 6) i32 @_ZN10SimTKIpopt31OptimalityErrorConvergenceCheck16CheckConvergenceEb(ptr noundef nonnull align 8 dereferenceable(132) %0, i1 noundef zeroext %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %4 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %5 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %6 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %7 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %8 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %9 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %10 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %11 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %12 = alloca %"class.SimTKIpopt::SmartPtr.43", align 8
  %13 = alloca %"class.SimTKIpopt::SmartPtr.9", align 8
  %14 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %15 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %16 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %17 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.11", align 1
  %20 = alloca %"class.SimTKIpopt::SmartPtr.31", align 8
  %21 = alloca %"class.SimTKIpopt::SmartPtr.23", align 8
  br i1 %1, label %22, label %125

22:                                               ; preds = %2
  %23 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %24 = tail call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %23)
  %25 = tail call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %26 = tail call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_primal_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %25, i32 noundef 2)
  %27 = tail call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %28 = tail call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities23curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %27, i32 noundef 2)
  %29 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %30 = tail call noundef double @_ZNK10SimTKIpopt9IpoptData7curr_muEv(ptr noundef nonnull align 8 dereferenceable(864) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %31 = tail call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %3, ptr noundef nonnull align 8 dereferenceable(864) %31)
  %32 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_14IteratesVectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %33 unwind label %65

33:                                               ; preds = %22
  br i1 %32, label %34, label %.critedge101.thread

.critedge101.thread:                              ; preds = %33
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %99

34:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  %35 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %36 unwind label %67

36:                                               ; preds = %34
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %5, ptr noundef nonnull align 8 dereferenceable(864) %35)
          to label %37 unwind label %67

37:                                               ; preds = %36
  %38 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %4, ptr noundef nonnull align 8 dereferenceable(280) %38)
          to label %39 unwind label %69

39:                                               ; preds = %37
  %40 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %41 unwind label %71

41:                                               ; preds = %39
  br i1 %40, label %42, label %.critedge

42:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %43 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %44 unwind label %73

44:                                               ; preds = %42
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %7, ptr noundef nonnull align 8 dereferenceable(864) %43)
          to label %45 unwind label %73

45:                                               ; preds = %44
  %46 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %7)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %6, ptr noundef nonnull align 8 dereferenceable(280) %46)
          to label %47 unwind label %75

47:                                               ; preds = %45
  %48 = invoke noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %.critedge97.thread unwind label %77

.critedge97.thread:                               ; preds = %47
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br i1 %48, label %49, label %99

49:                                               ; preds = %.critedge97.thread
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %50 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %9, ptr noundef nonnull align 8 dereferenceable(864) %50)
  %51 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %8, ptr noundef nonnull align 8 dereferenceable(280) %51)
          to label %52 unwind label %85

52:                                               ; preds = %49
  %53 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %54 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %53)
          to label %55 unwind label %87

55:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %56 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %57 unwind label %89

57:                                               ; preds = %55
  invoke void @_ZNK10SimTKIpopt9IpoptData5deltaEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %11, ptr noundef nonnull align 8 dereferenceable(864) %56)
          to label %58 unwind label %89

58:                                               ; preds = %57
  %59 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1sEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %10, ptr noundef nonnull align 8 dereferenceable(280) %59)
          to label %60 unwind label %91

60:                                               ; preds = %58
  %61 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %62 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %61)
          to label %63 unwind label %93

63:                                               ; preds = %60
  %64 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %54, double noundef %62)
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %99

65:                                               ; preds = %22
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %84

67:                                               ; preds = %36, %34
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %83

69:                                               ; preds = %37
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %82

71:                                               ; preds = %39
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %81

73:                                               ; preds = %44, %42
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %80

75:                                               ; preds = %45
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %79

77:                                               ; preds = %47
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  br label %79

79:                                               ; preds = %75, %77
  %.pn = phi { ptr, i32 } [ %78, %77 ], [ %76, %75 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  br label %80

80:                                               ; preds = %73, %79
  %.pn.pn = phi { ptr, i32 } [ %.pn, %79 ], [ %74, %73 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %81

81:                                               ; preds = %71, %80
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %80 ], [ %72, %71 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  br label %82

82:                                               ; preds = %69, %81
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %81 ], [ %70, %69 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  br label %83

83:                                               ; preds = %67, %82
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %82 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  br label %84

84:                                               ; preds = %83, %65
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %83 ], [ %66, %65 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %224

85:                                               ; preds = %49
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %98

87:                                               ; preds = %52
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %97

89:                                               ; preds = %57, %55
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %96

91:                                               ; preds = %58
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %60
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  br label %95

95:                                               ; preds = %93, %91
  %.pn76 = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  br label %96

96:                                               ; preds = %95, %89
  %.pn76.pn = phi { ptr, i32 } [ %.pn76, %95 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  br label %97

97:                                               ; preds = %96, %87
  %.pn76.pn.pn = phi { ptr, i32 } [ %.pn76.pn, %96 ], [ %88, %87 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #6
  br label %98

98:                                               ; preds = %97, %85
  %.pn76.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn, %97 ], [ %86, %85 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %224

.critedge:                                        ; preds = %41
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %99

99:                                               ; preds = %.critedge, %.critedge101.thread, %.critedge97.thread, %63
  %.037 = phi double [ %64, %63 ], [ 0.000000e+00, %.critedge97.thread ], [ 0.000000e+00, %.critedge101.thread ], [ 0.000000e+00, %.critedge ]
  %100 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %101 = call noundef double @_ZNK10SimTKIpopt9IpoptData17info_alpha_primalEv(ptr noundef nonnull align 8 dereferenceable(864) %100)
  %102 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %103 = call noundef double @_ZNK10SimTKIpopt9IpoptData15info_alpha_dualEv(ptr noundef nonnull align 8 dereferenceable(864) %102)
  %104 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %105 = call noundef double @_ZNK10SimTKIpopt9IpoptData11info_regu_xEv(ptr noundef nonnull align 8 dereferenceable(864) %104)
  %106 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %107 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15unscaled_curr_fEv(ptr noundef nonnull align 8 dereferenceable(2025) %106)
  %108 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %109 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData13info_ls_countEv(ptr noundef nonnull align 8 dereferenceable(864) %108)
  %110 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject5IpNLPEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %111 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %111)
  %112 = invoke noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %113 unwind label %120

113:                                              ; preds = %99
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull %112)
          to label %114 unwind label %120

114:                                              ; preds = %113
  %115 = load ptr, ptr %110, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 288
  %117 = load ptr, ptr %116, align 8
  %118 = invoke noundef zeroext i1 %117(ptr noundef nonnull align 8 dereferenceable(24) %110, i32 noundef 0, i32 noundef %24, double noundef %107, double noundef %26, double noundef %28, double noundef %30, double noundef %.037, double noundef %105, double noundef %103, double noundef %101, i32 noundef %109, ptr noundef nonnull %12, ptr noundef nonnull %13)
          to label %119 unwind label %122

119:                                              ; preds = %114
  call void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  br i1 %118, label %125, label %223

120:                                              ; preds = %113, %99
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %124

122:                                              ; preds = %114
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  br label %124

124:                                              ; preds = %122, %120
  %.pn81 = phi { ptr, i32 } [ %123, %122 ], [ %121, %120 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  br label %224

125:                                              ; preds = %119, %2
  %126 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %127 = call noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864) %126)
  %128 = getelementptr inbounds i8, ptr %0, i64 52
  %129 = load i32, ptr %128, align 4, !tbaa !8
  %.not = icmp slt i32 %127, %129
  br i1 %.not, label %130, label %223

130:                                              ; preds = %125
  %131 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %132 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities14curr_nlp_errorEv(ptr noundef nonnull align 8 dereferenceable(2025) %131)
  %133 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %134 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities32unscaled_curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %133, i32 noundef 2)
  %135 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %136 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities38unscaled_curr_nlp_constraint_violationENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %135, i32 noundef 2)
  %137 = call noundef nonnull align 8 dereferenceable(2025) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject4IpCqEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %138 = call noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29unscaled_curr_complementarityEdNS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025) %137, double noundef 0.000000e+00, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %139 = 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.23") align 8 %15, ptr noundef nonnull align 8 dereferenceable(864) %139)
  %140 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %14, ptr noundef nonnull align 8 dereferenceable(280) %140)
          to label %141 unwind label %157

141:                                              ; preds = %130
  %142 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %143 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %142)
          to label %144 unwind label %159

144:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %145 = invoke noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
          to label %146 unwind label %161

146:                                              ; preds = %144
  invoke void @_ZNK10SimTKIpopt9IpoptData4currEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.23") align 8 %17, ptr noundef nonnull align 8 dereferenceable(864) %145)
          to label %147 unwind label %161

147:                                              ; preds = %146
  %148 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %17)
  invoke void @_ZNK10SimTKIpopt14IteratesVector3y_cEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %16, ptr noundef nonnull align 8 dereferenceable(280) %148)
          to label %149 unwind label %163

149:                                              ; preds = %147
  %150 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
  %151 = invoke noundef i32 @_ZNK10SimTKIpopt6Vector3DimEv(ptr noundef nonnull align 8 dereferenceable(205) %150)
          to label %152 unwind label %165

152:                                              ; preds = %149
  %153 = icmp eq i32 %143, %151
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br i1 %153, label %154, label %171

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %0, i64 56
  store double 1.000000e+300, ptr %155, align 8, !tbaa !22
  %156 = getelementptr inbounds i8, ptr %0, i64 72
  store double 1.000000e+300, ptr %156, align 8, !tbaa !23
  br label %171

157:                                              ; preds = %130
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %170

159:                                              ; preds = %141
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %169

161:                                              ; preds = %146, %144
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %168

163:                                              ; preds = %147
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %167

165:                                              ; preds = %149
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br label %167

167:                                              ; preds = %165, %163
  %.pn84 = phi { ptr, i32 } [ %166, %165 ], [ %164, %163 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #6
  br label %168

168:                                              ; preds = %167, %161
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %167 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %169

169:                                              ; preds = %168, %159
  %.pn84.pn.pn = phi { ptr, i32 } [ %.pn84.pn, %168 ], [ %160, %159 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  br label %170

170:                                              ; preds = %169, %157
  %.pn84.pn.pn.pn = phi { ptr, i32 } [ %.pn84.pn.pn, %169 ], [ %158, %157 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %224

171:                                              ; preds = %154, %152
  %172 = call noundef nonnull align 8 dereferenceable(864) ptr @_ZNK10SimTKIpopt23AlgorithmStrategyObject6IpDataEv(ptr noundef nonnull align 8 dereferenceable(49) %0)
  %173 = call noundef double @_ZNK10SimTKIpopt9IpoptData3tolEv(ptr noundef nonnull align 8 dereferenceable(864) %172)
  %174 = fcmp ugt double %132, %173
  %175 = getelementptr inbounds i8, ptr %0, i64 56
  %176 = load double, ptr %175, align 8
  %177 = fcmp ugt double %134, %176
  %or.cond = select i1 %174, i1 true, i1 %177
  %178 = getelementptr inbounds i8, ptr %0, i64 64
  %179 = load double, ptr %178, align 8
  %180 = fcmp ugt double %136, %179
  %or.cond106 = select i1 %or.cond, i1 true, i1 %180
  %181 = getelementptr inbounds i8, ptr %0, i64 72
  %182 = load double, ptr %181, align 8
  %183 = fcmp ugt double %138, %182
  %or.cond109 = select i1 %or.cond106, i1 true, i1 %183
  br i1 %or.cond109, label %184, label %223

184:                                              ; preds = %171
  %185 = getelementptr inbounds i8, ptr %0, i64 80
  %186 = load i32, ptr %185, align 8, !tbaa !24
  %187 = icmp sgt i32 %186, 0
  br i1 %187, label %188, label %206

188:                                              ; preds = %184
  %189 = load ptr, ptr %0, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 32
  %191 = load ptr, ptr %190, align 8
  %192 = call noundef zeroext i1 %191(ptr noundef nonnull align 8 dereferenceable(132) %0)
  br i1 %192, label %193, label %206

193:                                              ; preds = %188
  %194 = 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 %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %195 unwind label %201

195:                                              ; preds = %193
  invoke void @_ZN10SimTKIpopt9IpoptData18Append_info_stringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(864) %194, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %196 unwind label %203

196:                                              ; preds = %195
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  %197 = getelementptr inbounds i8, ptr %0, i64 128
  %198 = load i32, ptr %197, align 8, !tbaa !25
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %197, align 8, !tbaa !25
  %200 = load i32, ptr %185, align 8, !tbaa !24
  %.not91 = icmp slt i32 %199, %200
  br i1 %.not91, label %208, label %223

201:                                              ; preds = %193
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %195
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %205

205:                                              ; preds = %203, %201
  %.pn89 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br label %224

206:                                              ; preds = %188, %184
  %207 = getelementptr inbounds i8, ptr %0, i64 128
  store i32 0, ptr %207, align 8, !tbaa !25
  br label %208

208:                                              ; preds = %196, %206
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %209 = 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.23") align 8 %21, ptr noundef nonnull align 8 dereferenceable(864) %209)
  %210 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %21)
  invoke void @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind nonnull writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8 %20, ptr noundef nonnull align 8 dereferenceable(280) %210)
          to label %211 unwind label %218

211:                                              ; preds = %208
  %212 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_6VectorEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
  %213 = invoke noundef double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205) %212)
          to label %214 unwind label %220

214:                                              ; preds = %211
  %215 = getelementptr inbounds i8, ptr %0, i64 120
  %216 = load double, ptr %215, align 8, !tbaa !26
  %217 = fcmp ogt double %213, %216
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  %. = select i1 %217, i32 4, i32 0
  br label %223

218:                                              ; preds = %208
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %211
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  br label %222

222:                                              ; preds = %220, %218
  %.pn92 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %224

223:                                              ; preds = %119, %171, %196, %214, %125
  %.2 = phi i32 [ 5, %119 ], [ 3, %125 ], [ 1, %171 ], [ 2, %196 ], [ %., %214 ]
  ret i32 %.2

224:                                              ; preds = %170, %205, %222, %84, %98, %124
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn81, %124 ], [ %.pn76.pn.pn.pn, %98 ], [ %.pn.pn.pn.pn.pn.pn, %84 ], [ %.pn92, %222 ], [ %.pn89, %205 ], [ %.pn84.pn.pn.pn, %170 ]
  resume { ptr, i32 } %.pn92.pn.pn
}

; 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 nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData10iter_countEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #1 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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities25curr_primal_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) local_unnamed_addr #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities23curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) local_unnamed_addr #3

; 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 uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_14IteratesVectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_6VectorEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #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 @_ZNK10SimTKIpopt14IteratesVector1xEv(ptr dead_on_unwind noalias writable sret(%"class.SimTKIpopt::SmartPtr.31") align 8, ptr noundef nonnull align 8 dereferenceable(280)) 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.31") 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 void @_ZN10SimTKIpopt8SmartPtrIKNS_14IteratesVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

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

; 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 double @_ZNK10SimTKIpopt6Vector4AmaxEv(ptr noundef nonnull align 8 dereferenceable(205)) local_unnamed_addr #4 align 2

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

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

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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities15unscaled_curr_fEv(ptr noundef nonnull align 8 dereferenceable(2025)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK10SimTKIpopt9IpoptData13info_ls_countEv(ptr noundef nonnull align 8 dereferenceable(864)) local_unnamed_addr #1 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 void @_ZN10SimTKIpopt8SmartPtrIKNS_9IpoptDataEEC2EPS2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #2 align 2

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

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

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

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

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities32unscaled_curr_dual_infeasibilityENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) local_unnamed_addr #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities38unscaled_curr_nlp_constraint_violationENS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), i32 noundef) local_unnamed_addr #3

declare noundef double @_ZN10SimTKIpopt25IpoptCalculatedQuantities29unscaled_curr_complementarityEdNS_9ENormTypeE(ptr noundef nonnull align 8 dereferenceable(2025), double noundef, i32 noundef) local_unnamed_addr #3

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

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

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

; 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 @_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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 = { "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 = { 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 #5 = { 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 #6 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !13, i64 52}
!9 = !{!"_ZTSN10SimTKIpopt31OptimalityErrorConvergenceCheckE", !10, i64 0, !13, i64 52, !21, i64 56, !21, i64 64, !21, i64 72, !13, i64 80, !21, i64 88, !21, i64 96, !21, i64 104, !21, i64 112, !21, i64 120, !13, i64 128}
!10 = !{!"_ZTSN10SimTKIpopt16ConvergenceCheckE", !11, i64 0}
!11 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !12, i64 0, !15, i64 16, !17, i64 24, !18, i64 32, !19, i64 40, !20, i64 48}
!12 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !13, i64 8}
!13 = !{!"int", !14, i64 0}
!14 = !{!"omnipotent char", !7, i64 0}
!15 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !16, i64 0}
!16 = !{!"any pointer", !14, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !16, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !16, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !16, i64 0}
!20 = !{!"bool", !14, i64 0}
!21 = !{!"double", !14, i64 0}
!22 = !{!9, !21, i64 56}
!23 = !{!9, !21, i64 72}
!24 = !{!9, !13, i64 80}
!25 = !{!9, !13, i64 128}
!26 = !{!9, !21, i64 120}


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