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

; 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.16" = type { ptr }
%"class.SimTKIpopt::RestoIpoptNLP" = type { %"class.SimTKIpopt::IpoptNLP", %"class.SimTKIpopt::SmartPtr.17", %"class.SimTKIpopt::SmartPtr.18", %"class.SimTKIpopt::SmartPtr.19", %"class.SimTKIpopt::SmartPtr.20", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.20", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.23", %"class.SimTKIpopt::SmartPtr.24", %"class.SimTKIpopt::SmartPtr.25", %"class.SimTKIpopt::SmartPtr.24", %"class.SimTKIpopt::SmartPtr.25", %"class.SimTKIpopt::SmartPtr.26", %"class.SimTKIpopt::SmartPtr.25", %"class.SimTKIpopt::SmartPtr.26", double, double, double, %"class.SimTKIpopt::SmartPtr.27", %"class.SimTKIpopt::SmartPtr.28", %"class.SimTKIpopt::SmartPtr.27", i8, i32, i8, i32, i32, i32, i32, i32, i32, i32 }
%"class.SimTKIpopt::IpoptNLP" = type { %"class.SimTKIpopt::ReferencedObject.base", %"class.SimTKIpopt::SmartPtr.16" }
%"class.SimTKIpopt::ReferencedObject.base" = type <{ ptr, i32 }>
%"class.SimTKIpopt::SmartPtr.17" = type { ptr }
%"class.SimTKIpopt::SmartPtr.18" = type { ptr }
%"class.SimTKIpopt::SmartPtr.19" = type { ptr }
%"class.SimTKIpopt::SmartPtr.20" = type { ptr }
%"class.SimTKIpopt::SmartPtr" = type { ptr }
%"class.SimTKIpopt::SmartPtr.5" = type { ptr }
%"class.SimTKIpopt::SmartPtr.21" = type { ptr }
%"class.SimTKIpopt::SmartPtr.22" = type { ptr }
%"class.SimTKIpopt::SmartPtr.23" = type { ptr }
%"class.SimTKIpopt::SmartPtr.24" = type { ptr }
%"class.SimTKIpopt::SmartPtr.25" = type { ptr }
%"class.SimTKIpopt::SmartPtr.26" = type { ptr }
%"class.SimTKIpopt::SmartPtr.28" = type { ptr }
%"class.SimTKIpopt::SmartPtr.27" = type { ptr }

@_ZTVN10SimTKIpopt13RestoIpoptNLPE = external dso_local unnamed_addr constant { [39 x ptr] }, align 8

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt13RestoIpoptNLPC2ERNS_8IpoptNLPERNS_9IpoptDataERNS_25IpoptCalculatedQuantitiesE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(864) %2, ptr noundef nonnull align 8 dereferenceable(2025) %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.SimTKIpopt::SmartPtr.16", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %12 = load ptr, ptr %5, align 8
  %13 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #4
  invoke void @_ZN10SimTKIpopt18NoNLPScalingObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %13)
          to label %14 unwind label %78

14:                                               ; preds = %4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %13)
  invoke void @_ZN10SimTKIpopt8IpoptNLPC2ENS_8SmartPtrINS_16NLPScalingObjectEEE(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef %9)
          to label %15 unwind label %82

15:                                               ; preds = %14
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  store ptr getelementptr inbounds inrange(-16, 296) ({ [39 x ptr] }, ptr @_ZTVN10SimTKIpopt13RestoIpoptNLPE, i32 0, i32 0, i32 2), ptr %12, align 8, !tbaa !9
  %16 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 1
  %17 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %17)
          to label %18 unwind label %86

18:                                               ; preds = %15
  %19 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 2
  %20 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_9IpoptDataEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef %20)
          to label %21 unwind label %90

21:                                               ; preds = %18
  %22 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 3
  %23 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %23)
          to label %24 unwind label %94

24:                                               ; preds = %21
  %25 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 4
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %26 unwind label %98

26:                                               ; preds = %24
  %27 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 5
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %28 unwind label %102

28:                                               ; preds = %26
  %29 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 6
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %30 unwind label %106

30:                                               ; preds = %28
  %31 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 7
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %32 unwind label %110

32:                                               ; preds = %30
  %33 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 8
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %34 unwind label %114

34:                                               ; preds = %32
  %35 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 9
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %36 unwind label %118

36:                                               ; preds = %34
  %37 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 10
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %38 unwind label %122

38:                                               ; preds = %36
  %39 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 11
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %40 unwind label %126

40:                                               ; preds = %38
  %41 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 12
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %42 unwind label %130

42:                                               ; preds = %40
  %43 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 13
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %44 unwind label %134

44:                                               ; preds = %42
  %45 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 14
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %46 unwind label %138

46:                                               ; preds = %44
  %47 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 15
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %48 unwind label %142

48:                                               ; preds = %46
  %49 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 16
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %50 unwind label %146

50:                                               ; preds = %48
  %51 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 17
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_22CompoundSymMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %52 unwind label %150

52:                                               ; preds = %50
  %53 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 18
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %54 unwind label %154

54:                                               ; preds = %52
  %55 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 19
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %56 unwind label %158

56:                                               ; preds = %54
  %57 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 20
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %58 unwind label %162

58:                                               ; preds = %56
  %59 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 21
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %60 unwind label %166

60:                                               ; preds = %58
  %61 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 22
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %62 unwind label %170

62:                                               ; preds = %60
  %63 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 23
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %64 unwind label %174

64:                                               ; preds = %62
  %65 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 24
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %66 unwind label %178

66:                                               ; preds = %64
  %67 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 25
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %68 unwind label %182

68:                                               ; preds = %66
  %69 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 26
  store double 1.000000e+03, ptr %69, align 8, !tbaa !11
  %70 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 27
  store double 1.000000e+00, ptr %70, align 8, !tbaa !34
  %71 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 28
  store double 5.000000e-01, ptr %71, align 8, !tbaa !35
  %72 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 29
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %73 unwind label %186

73:                                               ; preds = %68
  %74 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 30
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_10DiagMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %75 unwind label %190

75:                                               ; preds = %73
  %76 = getelementptr inbounds %"class.SimTKIpopt::RestoIpoptNLP", ptr %12, i32 0, i32 31
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %77 unwind label %194

77:                                               ; preds = %75
  ret void

78:                                               ; preds = %4
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %10, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %13, i64 noundef 72) #6
  br label %225

82:                                               ; preds = %14
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %10, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %11, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  br label %225

86:                                               ; preds = %15
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %10, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %11, align 4
  br label %224

90:                                               ; preds = %18
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %10, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %11, align 4
  br label %223

94:                                               ; preds = %21
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %10, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %11, align 4
  br label %222

98:                                               ; preds = %24
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %10, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %11, align 4
  br label %221

102:                                              ; preds = %26
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %10, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %11, align 4
  br label %220

106:                                              ; preds = %28
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %10, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %11, align 4
  br label %219

110:                                              ; preds = %30
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %10, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %11, align 4
  br label %218

114:                                              ; preds = %32
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %10, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %11, align 4
  br label %217

118:                                              ; preds = %34
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %10, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %11, align 4
  br label %216

122:                                              ; preds = %36
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %10, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %11, align 4
  br label %215

126:                                              ; preds = %38
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %10, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %11, align 4
  br label %214

130:                                              ; preds = %40
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %10, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %11, align 4
  br label %213

134:                                              ; preds = %42
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %10, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %11, align 4
  br label %212

138:                                              ; preds = %44
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %10, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %11, align 4
  br label %211

142:                                              ; preds = %46
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %10, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %11, align 4
  br label %210

146:                                              ; preds = %48
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %10, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %11, align 4
  br label %209

150:                                              ; preds = %50
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %10, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %11, align 4
  br label %208

154:                                              ; preds = %52
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %10, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %11, align 4
  br label %207

158:                                              ; preds = %54
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %10, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %11, align 4
  br label %206

162:                                              ; preds = %56
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %10, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %11, align 4
  br label %205

166:                                              ; preds = %58
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %10, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %11, align 4
  br label %204

170:                                              ; preds = %60
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %10, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %11, align 4
  br label %203

174:                                              ; preds = %62
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %10, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %11, align 4
  br label %202

178:                                              ; preds = %64
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %10, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %11, align 4
  br label %201

182:                                              ; preds = %66
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %10, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %11, align 4
  br label %200

186:                                              ; preds = %68
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %10, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %11, align 4
  br label %199

190:                                              ; preds = %73
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %10, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %11, align 4
  br label %198

194:                                              ; preds = %75
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %10, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %11, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_10DiagMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #5
  br label %198

198:                                              ; preds = %194, %190
  call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #5
  br label %199

199:                                              ; preds = %198, %186
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #5
  br label %200

200:                                              ; preds = %199, %182
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #5
  br label %201

201:                                              ; preds = %200, %178
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #5
  br label %202

202:                                              ; preds = %201, %174
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #5
  br label %203

203:                                              ; preds = %202, %170
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #5
  br label %204

204:                                              ; preds = %203, %166
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #5
  br label %205

205:                                              ; preds = %204, %162
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #5
  br label %206

206:                                              ; preds = %205, %158
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #5
  br label %207

207:                                              ; preds = %206, %154
  call void @_ZN10SimTKIpopt8SmartPtrINS_22CompoundSymMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #5
  br label %208

208:                                              ; preds = %207, %150
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #5
  br label %209

209:                                              ; preds = %208, %146
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #5
  br label %210

210:                                              ; preds = %209, %142
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #5
  br label %211

211:                                              ; preds = %210, %138
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #5
  br label %212

212:                                              ; preds = %211, %134
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #5
  br label %213

213:                                              ; preds = %212, %130
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #5
  br label %214

214:                                              ; preds = %213, %126
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #5
  br label %215

215:                                              ; preds = %214, %122
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #5
  br label %216

216:                                              ; preds = %215, %118
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #5
  br label %217

217:                                              ; preds = %216, %114
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #5
  br label %218

218:                                              ; preds = %217, %110
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #5
  br label %219

219:                                              ; preds = %218, %106
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #5
  br label %220

220:                                              ; preds = %219, %102
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #5
  br label %221

221:                                              ; preds = %220, %98
  call void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #5
  br label %222

222:                                              ; preds = %221, %94
  call void @_ZN10SimTKIpopt8SmartPtrINS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #5
  br label %223

223:                                              ; preds = %222, %90
  call void @_ZN10SimTKIpopt8SmartPtrINS_8IpoptNLPEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #5
  br label %224

224:                                              ; preds = %223, %86
  call void @_ZN10SimTKIpopt8IpoptNLPD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  br label %225

225:                                              ; preds = %224, %82, %78
  %226 = load ptr, ptr %10, align 8
  %227 = load i32, ptr %11, align 4
  %228 = insertvalue { ptr, i32 } poison, ptr %226, 0
  %229 = insertvalue { ptr, i32 } %228, i32 %227, 1
  resume { ptr, i32 } %229
}

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { builtin allocsize(0) }
attributes #5 = { nounwind }
attributes #6 = { builtin 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 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !29, i64 224}
!12 = !{!"_ZTSN10SimTKIpopt13RestoIpoptNLPE", !13, i64 0, !17, i64 24, !18, i64 32, !19, i64 40, !20, i64 48, !21, i64 56, !21, i64 64, !20, i64 72, !22, i64 80, !21, i64 88, !22, i64 96, !21, i64 104, !23, i64 112, !21, i64 120, !23, i64 128, !22, i64 136, !22, i64 144, !24, i64 152, !25, i64 160, !26, i64 168, !27, i64 176, !26, i64 184, !27, i64 192, !28, i64 200, !27, i64 208, !28, i64 216, !29, i64 224, !29, i64 232, !29, i64 240, !30, i64 248, !31, i64 256, !30, i64 264, !32, i64 272, !33, i64 276, !32, i64 280, !15, i64 284, !15, i64 288, !15, i64 292, !15, i64 296, !15, i64 300, !15, i64 304, !15, i64 308}
!13 = !{!"_ZTSN10SimTKIpopt8IpoptNLPE", !14, i64 0, !16, i64 16}
!14 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !15, i64 8}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEE", !6, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEE", !6, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !6, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEE", !6, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !6, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22CompoundSymMatrixSpaceEEE", !6, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14CompoundVectorEEE", !6, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEE", !6, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6VectorEEE", !6, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6MatrixEEE", !6, i64 0}
!29 = !{!"double", !7, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_6VectorEEE", !6, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_10DiagMatrixEEE", !6, i64 0}
!32 = !{!"bool", !7, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !7, i64 0}
!34 = !{!12, !29, i64 232}
!35 = !{!12, !29, i64 240}


; 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.16" = type { ptr }

@_ZTVN10SimTKIpopt13RestoIpoptNLPE = external dso_local unnamed_addr constant { [39 x ptr] }, align 8

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt13RestoIpoptNLPC2ERNS_8IpoptNLPERNS_9IpoptDataERNS_25IpoptCalculatedQuantitiesE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(864) %2, ptr noundef nonnull align 8 dereferenceable(2025) %3) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.SimTKIpopt::SmartPtr.16", align 8
  %6 = tail call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #4
  invoke void @_ZN10SimTKIpopt18NoNLPScalingObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %6)
          to label %7 unwind label %42

7:                                                ; preds = %4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %6)
  invoke void @_ZN10SimTKIpopt8IpoptNLPC2ENS_8SmartPtrINS_16NLPScalingObjectEEE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %5)
          to label %8 unwind label %44

8:                                                ; preds = %7
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  store ptr getelementptr inbounds inrange(-16, 296) (i8, ptr @_ZTVN10SimTKIpopt13RestoIpoptNLPE, i64 16), ptr %0, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 24
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %1)
          to label %10 unwind label %46

10:                                               ; preds = %8
  %11 = getelementptr inbounds i8, ptr %0, i64 32
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_9IpoptDataEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %2)
          to label %12 unwind label %48

12:                                               ; preds = %10
  %13 = getelementptr inbounds i8, ptr %0, i64 40
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull %3)
          to label %14 unwind label %50

14:                                               ; preds = %12
  %15 = getelementptr inbounds i8, ptr %0, i64 48
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
  %16 = getelementptr inbounds i8, ptr %0, i64 56
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
  %17 = getelementptr inbounds i8, ptr %0, i64 64
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
  %18 = getelementptr inbounds i8, ptr %0, i64 72
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %19 = getelementptr inbounds i8, ptr %0, i64 80
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %20 = getelementptr inbounds i8, ptr %0, i64 88
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
  %21 = getelementptr inbounds i8, ptr %0, i64 96
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %22 = getelementptr inbounds i8, ptr %0, i64 104
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  %23 = getelementptr inbounds i8, ptr %0, i64 112
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %24 = getelementptr inbounds i8, ptr %0, i64 120
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %25 = getelementptr inbounds i8, ptr %0, i64 128
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  %26 = getelementptr inbounds i8, ptr %0, i64 136
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %27 = getelementptr inbounds i8, ptr %0, i64 144
  call void @_ZN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
  %28 = getelementptr inbounds i8, ptr %0, i64 152
  call void @_ZN10SimTKIpopt8SmartPtrINS_22CompoundSymMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %29 = getelementptr inbounds i8, ptr %0, i64 160
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
  %30 = getelementptr inbounds i8, ptr %0, i64 168
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
  %31 = getelementptr inbounds i8, ptr %0, i64 176
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
  %32 = getelementptr inbounds i8, ptr %0, i64 184
  call void @_ZN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
  %33 = getelementptr inbounds i8, ptr %0, i64 192
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %34 = getelementptr inbounds i8, ptr %0, i64 200
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
  %35 = getelementptr inbounds i8, ptr %0, i64 208
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
  %36 = getelementptr inbounds i8, ptr %0, i64 216
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36)
  %37 = getelementptr inbounds i8, ptr %0, i64 224
  store <2 x double> <double 1.000000e+03, double 1.000000e+00>, ptr %37, align 8, !tbaa !8
  %38 = getelementptr inbounds i8, ptr %0, i64 240
  store double 5.000000e-01, ptr %38, align 8, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %0, i64 248
  call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %40 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZN10SimTKIpopt8SmartPtrINS_10DiagMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
  %41 = getelementptr inbounds i8, ptr %0, i64 264
  call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
  ret void

42:                                               ; preds = %4
  %43 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef 72) #6
  br label %54

44:                                               ; preds = %7
  %45 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  br label %54

46:                                               ; preds = %8
  %47 = landingpad { ptr, i32 }
          cleanup
  br label %53

48:                                               ; preds = %10
  %49 = landingpad { ptr, i32 }
          cleanup
  br label %52

50:                                               ; preds = %12
  %51 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_9IpoptDataEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #5
  br label %52

52:                                               ; preds = %50, %48
  %.pn = phi { ptr, i32 } [ %51, %50 ], [ %49, %48 ]
  call void @_ZN10SimTKIpopt8SmartPtrINS_8IpoptNLPEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #5
  br label %53

53:                                               ; preds = %52, %46
  %.pn.pn = phi { ptr, i32 } [ %.pn, %52 ], [ %47, %46 ]
  call void @_ZN10SimTKIpopt8IpoptNLPD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #5
  br label %54

54:                                               ; preds = %53, %44, %42
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %53 ], [ %45, %44 ], [ %43, %42 ]
  resume { ptr, i32 } %.pn.pn.pn
}

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { builtin allocsize(0) }
attributes #5 = { nounwind }
attributes #6 = { builtin 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, !9, i64 0}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !9, i64 240}
!12 = !{!"_ZTSN10SimTKIpopt13RestoIpoptNLPE", !13, i64 0, !18, i64 24, !19, i64 32, !20, i64 40, !21, i64 48, !22, i64 56, !22, i64 64, !21, i64 72, !23, i64 80, !22, i64 88, !23, i64 96, !22, i64 104, !24, i64 112, !22, i64 120, !24, i64 128, !23, i64 136, !23, i64 144, !25, i64 152, !26, i64 160, !27, i64 168, !28, i64 176, !27, i64 184, !28, i64 192, !29, i64 200, !28, i64 208, !29, i64 216, !9, i64 224, !9, i64 232, !9, i64 240, !30, i64 248, !31, i64 256, !30, i64 264, !32, i64 272, !33, i64 276, !32, i64 280, !15, i64 284, !15, i64 288, !15, i64 292, !15, i64 296, !15, i64 300, !15, i64 304, !15, i64 308}
!13 = !{!"_ZTSN10SimTKIpopt8IpoptNLPE", !14, i64 0, !16, i64 16}
!14 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !15, i64 8}
!15 = !{!"int", !10, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_16NLPScalingObjectEEE", !17, i64 0}
!17 = !{!"any pointer", !10, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !17, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !17, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !17, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_19CompoundVectorSpaceEEE", !17, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !17, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_19CompoundMatrixSpaceEEE", !17, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !17, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_22CompoundSymMatrixSpaceEEE", !17, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14CompoundVectorEEE", !17, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14CompoundMatrixEEE", !17, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6VectorEEE", !17, i64 0}
!29 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6MatrixEEE", !17, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_6VectorEEE", !17, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_10DiagMatrixEEE", !17, i64 0}
!32 = !{!"bool", !10, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !10, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,GlobalOptPass,InstCombinePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass