; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/rbdl/addons/urdfreader/urdf/urdfdom/urdf_parser/src (joint)

; 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.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" = type { i8 }
%"class.urdf::Vector3" = type { double, double, double }
%"class.urdf::Joint" = type { %"class.std::__cxx11::basic_string", i32, %"class.urdf::Vector3", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.urdf::Pose", %class.my_shared_ptr.0, %class.my_shared_ptr.1, %class.my_shared_ptr.2, %class.my_shared_ptr.3, %class.my_shared_ptr.4 }
%"class.urdf::Pose" = type { %"class.urdf::Vector3", %"class.urdf::Rotation" }
%"class.urdf::Rotation" = type { double, double, double, double }
%class.my_shared_ptr.0 = type { ptr, ptr }
%class.my_shared_ptr.1 = type { ptr, ptr }
%class.my_shared_ptr.2 = type { ptr, ptr }
%class.my_shared_ptr.3 = type { ptr, ptr }
%class.my_shared_ptr.4 = type { ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.69 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #0

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

declare noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) #2

declare void @_Z8logDebugPKcS0_S0_(ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_begin_catch(ptr)

declare void @_Z8logErrorPKcS0_S0_S0_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @__cxa_end_catch()

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca ptr, align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca ptr, align 8
  %23 = alloca %"class.urdf::Vector3", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN4urdf5Joint5clearEv(ptr noundef nonnull align 8 dereferenceable(264) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %33, ptr noundef @.str.47)
  store ptr %34, ptr %6, align 8, !tbaa !5
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = icmp ne ptr %35, null
  br i1 %36, label %38, label %37

37:                                               ; preds = %2
  call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.48, ptr noundef @.str.2, ptr noundef @.str.2, ptr noundef @.str.2)
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %502

38:                                               ; preds = %2
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds %"class.urdf::Joint", ptr %40, i32 0, i32 0
  %42 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef %39)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %43, ptr noundef @.str.49)
  store ptr %44, ptr %8, align 8, !tbaa !5
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = icmp ne ptr %45, null
  br i1 %46, label %53, label %47

47:                                               ; preds = %38
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.urdf::Joint", ptr %48, i32 0, i32 0
  %50 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.50, ptr noundef %50, ptr noundef @.str.2)
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %"class.urdf::Joint", ptr %51, i32 0, i32 5
  call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %52)
  br label %65

53:                                               ; preds = %38
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %"class.urdf::Joint", ptr %54, i32 0, i32 5
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = call noundef zeroext i1 @_ZN4urdf9parsePoseERNS_4PoseEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(56) %55, ptr noundef %56)
  br i1 %57, label %64, label %58

58:                                               ; preds = %53
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %"class.urdf::Joint", ptr %59, i32 0, i32 5
  call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %60)
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = getelementptr inbounds %"class.urdf::Joint", ptr %61, i32 0, i32 0
  %63 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %62) #10
  call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.51, ptr noundef %63, ptr noundef @.str.2, ptr noundef @.str.2)
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %501

64:                                               ; preds = %53
  br label %65

65:                                               ; preds = %64, %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  %67 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %66, ptr noundef @.str.52)
  store ptr %67, ptr %9, align 8, !tbaa !5
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  %69 = icmp ne ptr %68, null
  br i1 %69, label %70, label %90

70:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %71, ptr noundef @.str.53)
  store ptr %72, ptr %10, align 8, !tbaa !5
  %73 = load ptr, ptr %10, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %79, label %75

75:                                               ; preds = %70
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %"class.urdf::Joint", ptr %76, i32 0, i32 0
  %78 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @_Z9logInformPKcS0_(ptr noundef @.str.54, ptr noundef %78)
  br label %89

79:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #10
  %80 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %80, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %81 unwind label %85

81:                                               ; preds = %79
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %"class.urdf::Joint", ptr %82, i32 0, i32 4
  %84 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  br label %89

85:                                               ; preds = %79
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %13, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %500

89:                                               ; preds = %81, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %90

90:                                               ; preds = %89, %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %91, ptr noundef @.str.55)
  store ptr %92, ptr %15, align 8, !tbaa !5
  %93 = load ptr, ptr %15, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %115

95:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %96, ptr noundef @.str.53)
  store ptr %97, ptr %16, align 8, !tbaa !5
  %98 = load ptr, ptr %16, align 8, !tbaa !5
  %99 = icmp ne ptr %98, null
  br i1 %99, label %104, label %100

100:                                              ; preds = %95
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds %"class.urdf::Joint", ptr %101, i32 0, i32 0
  %103 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %102) #10
  call void @_Z9logInformPKcS0_(ptr noundef @.str.56, ptr noundef %103)
  br label %114

104:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #10
  %105 = load ptr, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef %105, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %106 unwind label %110

106:                                              ; preds = %104
  %107 = load ptr, ptr %4, align 8, !tbaa !5
  %108 = getelementptr inbounds %"class.urdf::Joint", ptr %107, i32 0, i32 3
  %109 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  br label %114

110:                                              ; preds = %104
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %13, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %499

114:                                              ; preds = %106, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %115

115:                                              ; preds = %114, %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %116 = load ptr, ptr %5, align 8, !tbaa !5
  %117 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %116, ptr noundef @.str.57)
  store ptr %117, ptr %19, align 8, !tbaa !5
  %118 = load ptr, ptr %19, align 8, !tbaa !5
  %119 = icmp ne ptr %118, null
  br i1 %119, label %124, label %120

120:                                              ; preds = %115
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = getelementptr inbounds %"class.urdf::Joint", ptr %121, i32 0, i32 0
  %123 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %122) #10
  call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.58, ptr noundef %123, ptr noundef @.str.2, ptr noundef @.str.2)
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %498

124:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #10
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %125, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %126 unwind label %132

126:                                              ; preds = %124
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  %127 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.59)
          to label %128 unwind label %136

128:                                              ; preds = %126
  br i1 %127, label %129, label %140

129:                                              ; preds = %128
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = getelementptr inbounds %"class.urdf::Joint", ptr %130, i32 0, i32 1
  store i32 5, ptr %131, align 8, !tbaa !9
  br label %181

132:                                              ; preds = %124
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %13, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  br label %497

136:                                              ; preds = %170, %164, %158, %152, %146, %140, %126
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %13, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %14, align 4
  br label %496

140:                                              ; preds = %128
  %141 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.60)
          to label %142 unwind label %136

142:                                              ; preds = %140
  br i1 %141, label %143, label %146

143:                                              ; preds = %142
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = getelementptr inbounds %"class.urdf::Joint", ptr %144, i32 0, i32 1
  store i32 4, ptr %145, align 8, !tbaa !9
  br label %180

146:                                              ; preds = %142
  %147 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.61)
          to label %148 unwind label %136

148:                                              ; preds = %146
  br i1 %147, label %149, label %152

149:                                              ; preds = %148
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %"class.urdf::Joint", ptr %150, i32 0, i32 1
  store i32 1, ptr %151, align 8, !tbaa !9
  br label %179

152:                                              ; preds = %148
  %153 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.62)
          to label %154 unwind label %136

154:                                              ; preds = %152
  br i1 %153, label %155, label %158

155:                                              ; preds = %154
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %"class.urdf::Joint", ptr %156, i32 0, i32 1
  store i32 2, ptr %157, align 8, !tbaa !9
  br label %178

158:                                              ; preds = %154
  %159 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.63)
          to label %160 unwind label %136

160:                                              ; preds = %158
  br i1 %159, label %161, label %164

161:                                              ; preds = %160
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %"class.urdf::Joint", ptr %162, i32 0, i32 1
  store i32 3, ptr %163, align 8, !tbaa !9
  br label %177

164:                                              ; preds = %160
  %165 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.64)
          to label %166 unwind label %136

166:                                              ; preds = %164
  br i1 %165, label %167, label %170

167:                                              ; preds = %166
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"class.urdf::Joint", ptr %168, i32 0, i32 1
  store i32 6, ptr %169, align 8, !tbaa !9
  br label %176

170:                                              ; preds = %166
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %"class.urdf::Joint", ptr %171, i32 0, i32 0
  %173 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %172) #10
  %174 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.65, ptr noundef %173, ptr noundef %174, ptr noundef @.str.2)
          to label %175 unwind label %136

175:                                              ; preds = %170
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %495

176:                                              ; preds = %167
  br label %177

177:                                              ; preds = %176, %161
  br label %178

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

179:                                              ; preds = %178, %149
  br label %180

180:                                              ; preds = %179, %143
  br label %181

181:                                              ; preds = %180, %129
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %"class.urdf::Joint", ptr %182, i32 0, i32 1
  %184 = load i32, ptr %183, align 8, !tbaa !9
  %185 = icmp ne i32 %184, 4
  br i1 %185, label %186, label %277

186:                                              ; preds = %181
  %187 = load ptr, ptr %4, align 8, !tbaa !5
  %188 = getelementptr inbounds %"class.urdf::Joint", ptr %187, i32 0, i32 1
  %189 = load i32, ptr %188, align 8, !tbaa !9
  %190 = icmp ne i32 %189, 6
  br i1 %190, label %191, label %277

191:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %192, ptr noundef @.str.66)
          to label %194 unwind label %205

194:                                              ; preds = %191
  store ptr %193, ptr %22, align 8, !tbaa !5
  %195 = load ptr, ptr %22, align 8, !tbaa !5
  %196 = icmp ne ptr %195, null
  br i1 %196, label %213, label %197

197:                                              ; preds = %194
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"class.urdf::Joint", ptr %198, i32 0, i32 0
  %200 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %199) #10
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.67, ptr noundef %200, ptr noundef @.str.2)
          to label %201 unwind label %205

201:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #10
  invoke void @_ZN4urdf7Vector3C2Eddd(ptr noundef nonnull align 8 dereferenceable(24) %23, double noundef 1.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00)
          to label %202 unwind label %209

202:                                              ; preds = %201
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %"class.urdf::Joint", ptr %203, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %204, ptr align 8 %23, i64 24, i1 false), !tbaa.struct !24
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  br label %272

205:                                              ; preds = %213, %197, %191
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %13, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %14, align 4
  br label %276

209:                                              ; preds = %201
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %13, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  br label %276

213:                                              ; preds = %194
  %214 = load ptr, ptr %22, align 8, !tbaa !5
  %215 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %214, ptr noundef @.str.68)
          to label %216 unwind label %205

216:                                              ; preds = %213
  %217 = icmp ne ptr %215, null
  br i1 %217, label %218, label %271

218:                                              ; preds = %216
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %"class.urdf::Joint", ptr %219, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #10
  %221 = load ptr, ptr %22, align 8, !tbaa !5
  %222 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %221, ptr noundef @.str.68)
          to label %223 unwind label %226

223:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef %222, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %224 unwind label %230

224:                                              ; preds = %223
  invoke void @_ZN4urdf7Vector34initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %220, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %225 unwind label %234

225:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  br label %270

226:                                              ; preds = %218
  %227 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %13, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %14, align 4
  br label %239

230:                                              ; preds = %223
  %231 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %13, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %14, align 4
  br label %238

234:                                              ; preds = %224
  %235 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %13, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %238

238:                                              ; preds = %234, %230
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  br label %239

239:                                              ; preds = %238, %226
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  br label %240

240:                                              ; preds = %239
  %241 = load i32, ptr %14, align 4
  %242 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #10
  %243 = icmp eq i32 %241, %242
  br i1 %243, label %244, label %276

244:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %245 = load ptr, ptr %13, align 8
  %246 = call ptr @__cxa_begin_catch(ptr %245) #10
  store ptr %246, ptr %26, align 8
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %"class.urdf::Joint", ptr %247, i32 0, i32 2
  invoke void @_ZN4urdf7Vector35clearEv(ptr noundef nonnull align 8 dereferenceable(24) %248)
          to label %249 unwind label %259

249:                                              ; preds = %244
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"class.urdf::Joint", ptr %250, i32 0, i32 0
  %252 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %251) #10
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load ptr, ptr %253, align 8, !tbaa !26
  %255 = getelementptr inbounds ptr, ptr %254, i64 2
  %256 = load ptr, ptr %255, align 8
  %257 = call noundef ptr %256(ptr noundef nonnull align 8 dereferenceable(16) %253) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.69, ptr noundef %252, ptr noundef %257, ptr noundef @.str.2)
          to label %258 unwind label %259

258:                                              ; preds = %249
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %263 unwind label %264

259:                                              ; preds = %249, %244
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %13, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %14, align 4
  invoke void @__cxa_end_catch()
          to label %268 unwind label %509

263:                                              ; preds = %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %273

264:                                              ; preds = %258
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %13, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %14, align 4
  br label %269

268:                                              ; preds = %259
  br label %269

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

270:                                              ; preds = %225
  br label %271

271:                                              ; preds = %270, %216
  br label %272

272:                                              ; preds = %271, %202
  store i32 0, ptr %7, align 4
  br label %273

273:                                              ; preds = %272, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  %274 = load i32, ptr %7, align 4
  switch i32 %274, label %495 [
    i32 0, label %275
  ]

275:                                              ; preds = %273
  br label %277

276:                                              ; preds = %269, %240, %209, %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %496

277:                                              ; preds = %275, %186, %181
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %278, ptr noundef @.str.70)
          to label %280 unwind label %305

280:                                              ; preds = %277
  store ptr %279, ptr %27, align 8, !tbaa !5
  %281 = load ptr, ptr %27, align 8, !tbaa !5
  %282 = icmp ne ptr %281, null
  br i1 %282, label %283, label %314

283:                                              ; preds = %280
  %284 = load ptr, ptr %4, align 8, !tbaa !5
  %285 = getelementptr inbounds %"class.urdf::Joint", ptr %284, i32 0, i32 7
  %286 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #11
          to label %287 unwind label %305

287:                                              ; preds = %283
  invoke void @_ZN4urdf11JointLimitsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286)
          to label %288 unwind label %309

288:                                              ; preds = %287
  invoke void @_ZN13my_shared_ptrIN4urdf11JointLimitsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %285, ptr noundef %286)
          to label %289 unwind label %305

289:                                              ; preds = %288
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %"class.urdf::Joint", ptr %290, i32 0, i32 7
  %292 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK13my_shared_ptrIN4urdf11JointLimitsEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %291)
          to label %293 unwind label %305

293:                                              ; preds = %289
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = invoke noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %292, ptr noundef %294)
          to label %296 unwind label %305

296:                                              ; preds = %293
  br i1 %295, label %313, label %297

297:                                              ; preds = %296
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %"class.urdf::Joint", ptr %298, i32 0, i32 0
  %300 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %299) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.71, ptr noundef %300, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %301 unwind label %305

301:                                              ; preds = %297
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = getelementptr inbounds %"class.urdf::Joint", ptr %302, i32 0, i32 7
  invoke void @_ZN13my_shared_ptrIN4urdf11JointLimitsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %303, ptr noundef null)
          to label %304 unwind label %305

304:                                              ; preds = %301
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %493

305:                                              ; preds = %329, %319, %301, %297, %293, %289, %288, %283, %277
  %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 %494

309:                                              ; preds = %287
  %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
  call void @_ZdlPvm(ptr noundef %286, i64 noundef 32) #12
  br label %494

313:                                              ; preds = %296
  br label %336

314:                                              ; preds = %280
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %"class.urdf::Joint", ptr %315, i32 0, i32 1
  %317 = load i32, ptr %316, align 8, !tbaa !9
  %318 = icmp eq i32 %317, 1
  br i1 %318, label %319, label %324

319:                                              ; preds = %314
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %"class.urdf::Joint", ptr %320, i32 0, i32 0
  %322 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %321) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.72, ptr noundef %322, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %323 unwind label %305

323:                                              ; preds = %319
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %493

324:                                              ; preds = %314
  %325 = load ptr, ptr %4, align 8, !tbaa !5
  %326 = getelementptr inbounds %"class.urdf::Joint", ptr %325, i32 0, i32 1
  %327 = load i32, ptr %326, align 8, !tbaa !9
  %328 = icmp eq i32 %327, 3
  br i1 %328, label %329, label %334

329:                                              ; preds = %324
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %"class.urdf::Joint", ptr %330, i32 0, i32 0
  %332 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %331) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.73, ptr noundef %332, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %333 unwind label %305

333:                                              ; preds = %329
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %493

334:                                              ; preds = %324
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335, %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %337, ptr noundef @.str.74)
          to label %339 unwind label %364

339:                                              ; preds = %336
  store ptr %338, ptr %28, align 8, !tbaa !5
  %340 = load ptr, ptr %28, align 8, !tbaa !5
  %341 = icmp ne ptr %340, null
  br i1 %341, label %342, label %373

342:                                              ; preds = %339
  %343 = load ptr, ptr %4, align 8, !tbaa !5
  %344 = getelementptr inbounds %"class.urdf::Joint", ptr %343, i32 0, i32 8
  %345 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #11
          to label %346 unwind label %364

346:                                              ; preds = %342
  invoke void @_ZN4urdf11JointSafetyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345)
          to label %347 unwind label %368

347:                                              ; preds = %346
  invoke void @_ZN13my_shared_ptrIN4urdf11JointSafetyEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %344, ptr noundef %345)
          to label %348 unwind label %364

348:                                              ; preds = %347
  %349 = load ptr, ptr %4, align 8, !tbaa !5
  %350 = getelementptr inbounds %"class.urdf::Joint", ptr %349, i32 0, i32 8
  %351 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK13my_shared_ptrIN4urdf11JointSafetyEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %350)
          to label %352 unwind label %364

352:                                              ; preds = %348
  %353 = load ptr, ptr %28, align 8, !tbaa !5
  %354 = invoke noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %351, ptr noundef %353)
          to label %355 unwind label %364

355:                                              ; preds = %352
  br i1 %354, label %372, label %356

356:                                              ; preds = %355
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %"class.urdf::Joint", ptr %357, i32 0, i32 0
  %359 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %358) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.75, ptr noundef %359, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %360 unwind label %364

360:                                              ; preds = %356
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %"class.urdf::Joint", ptr %361, i32 0, i32 8
  invoke void @_ZN13my_shared_ptrIN4urdf11JointSafetyEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %362, ptr noundef null)
          to label %363 unwind label %364

363:                                              ; preds = %360
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %491

364:                                              ; preds = %360, %356, %352, %348, %347, %342, %336
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %13, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %14, align 4
  br label %492

368:                                              ; preds = %346
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %13, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %345, i64 noundef 32) #12
  br label %492

372:                                              ; preds = %355
  br label %373

373:                                              ; preds = %372, %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %374 = load ptr, ptr %5, align 8, !tbaa !5
  %375 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %374, ptr noundef @.str.76)
          to label %376 unwind label %401

376:                                              ; preds = %373
  store ptr %375, ptr %29, align 8, !tbaa !5
  %377 = load ptr, ptr %29, align 8, !tbaa !5
  %378 = icmp ne ptr %377, null
  br i1 %378, label %379, label %410

379:                                              ; preds = %376
  %380 = load ptr, ptr %4, align 8, !tbaa !5
  %381 = getelementptr inbounds %"class.urdf::Joint", ptr %380, i32 0, i32 9
  %382 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #11
          to label %383 unwind label %401

383:                                              ; preds = %379
  invoke void @_ZN4urdf16JointCalibrationC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %382)
          to label %384 unwind label %405

384:                                              ; preds = %383
  invoke void @_ZN13my_shared_ptrIN4urdf16JointCalibrationEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %381, ptr noundef %382)
          to label %385 unwind label %401

385:                                              ; preds = %384
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"class.urdf::Joint", ptr %386, i32 0, i32 9
  %388 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK13my_shared_ptrIN4urdf16JointCalibrationEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %387)
          to label %389 unwind label %401

389:                                              ; preds = %385
  %390 = load ptr, ptr %29, align 8, !tbaa !5
  %391 = invoke noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40) %388, ptr noundef %390)
          to label %392 unwind label %401

392:                                              ; preds = %389
  br i1 %391, label %409, label %393

393:                                              ; preds = %392
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %"class.urdf::Joint", ptr %394, i32 0, i32 0
  %396 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %395) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.77, ptr noundef %396, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %397 unwind label %401

397:                                              ; preds = %393
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %"class.urdf::Joint", ptr %398, i32 0, i32 9
  invoke void @_ZN13my_shared_ptrIN4urdf16JointCalibrationEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %399, ptr noundef null)
          to label %400 unwind label %401

400:                                              ; preds = %397
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %489

401:                                              ; preds = %397, %393, %389, %385, %384, %379, %373
  %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
  br label %490

405:                                              ; preds = %383
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %13, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %382, i64 noundef 40) #12
  br label %490

409:                                              ; preds = %392
  br label %410

410:                                              ; preds = %409, %376
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %411 = load ptr, ptr %5, align 8, !tbaa !5
  %412 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %411, ptr noundef @.str.78)
          to label %413 unwind label %438

413:                                              ; preds = %410
  store ptr %412, ptr %30, align 8, !tbaa !5
  %414 = load ptr, ptr %30, align 8, !tbaa !5
  %415 = icmp ne ptr %414, null
  br i1 %415, label %416, label %447

416:                                              ; preds = %413
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds %"class.urdf::Joint", ptr %417, i32 0, i32 10
  %419 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #11
          to label %420 unwind label %438

420:                                              ; preds = %416
  invoke void @_ZN4urdf10JointMimicC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %419)
          to label %421 unwind label %442

421:                                              ; preds = %420
  invoke void @_ZN13my_shared_ptrIN4urdf10JointMimicEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %418, ptr noundef %419)
          to label %422 unwind label %438

422:                                              ; preds = %421
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = getelementptr inbounds %"class.urdf::Joint", ptr %423, i32 0, i32 10
  %425 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK13my_shared_ptrIN4urdf10JointMimicEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %424)
          to label %426 unwind label %438

426:                                              ; preds = %422
  %427 = load ptr, ptr %30, align 8, !tbaa !5
  %428 = invoke noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48) %425, ptr noundef %427)
          to label %429 unwind label %438

429:                                              ; preds = %426
  br i1 %428, label %446, label %430

430:                                              ; preds = %429
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %"class.urdf::Joint", ptr %431, i32 0, i32 0
  %433 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %432) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.79, ptr noundef %433, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %434 unwind label %438

434:                                              ; preds = %430
  %435 = load ptr, ptr %4, align 8, !tbaa !5
  %436 = getelementptr inbounds %"class.urdf::Joint", ptr %435, i32 0, i32 10
  invoke void @_ZN13my_shared_ptrIN4urdf10JointMimicEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %436, ptr noundef null)
          to label %437 unwind label %438

437:                                              ; preds = %434
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %487

438:                                              ; preds = %434, %430, %426, %422, %421, %416, %410
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %13, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %14, align 4
  br label %488

442:                                              ; preds = %420
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %13, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %419, i64 noundef 48) #12
  br label %488

446:                                              ; preds = %429
  br label %447

447:                                              ; preds = %446, %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %448, ptr noundef @.str.80)
          to label %450 unwind label %475

450:                                              ; preds = %447
  store ptr %449, ptr %31, align 8, !tbaa !5
  %451 = load ptr, ptr %31, align 8, !tbaa !5
  %452 = icmp ne ptr %451, null
  br i1 %452, label %453, label %484

453:                                              ; preds = %450
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %"class.urdf::Joint", ptr %454, i32 0, i32 6
  %456 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #11
          to label %457 unwind label %475

457:                                              ; preds = %453
  invoke void @_ZN4urdf13JointDynamicsC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %456)
          to label %458 unwind label %479

458:                                              ; preds = %457
  invoke void @_ZN13my_shared_ptrIN4urdf13JointDynamicsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef %456)
          to label %459 unwind label %475

459:                                              ; preds = %458
  %460 = load ptr, ptr %4, align 8, !tbaa !5
  %461 = getelementptr inbounds %"class.urdf::Joint", ptr %460, i32 0, i32 6
  %462 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13my_shared_ptrIN4urdf13JointDynamicsEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %461)
          to label %463 unwind label %475

463:                                              ; preds = %459
  %464 = load ptr, ptr %31, align 8, !tbaa !5
  %465 = invoke noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16) %462, ptr noundef %464)
          to label %466 unwind label %475

466:                                              ; preds = %463
  br i1 %465, label %483, label %467

467:                                              ; preds = %466
  %468 = load ptr, ptr %4, align 8, !tbaa !5
  %469 = getelementptr inbounds %"class.urdf::Joint", ptr %468, i32 0, i32 0
  %470 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %469) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.81, ptr noundef %470, ptr noundef @.str.2, ptr noundef @.str.2)
          to label %471 unwind label %475

471:                                              ; preds = %467
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = getelementptr inbounds %"class.urdf::Joint", ptr %472, i32 0, i32 6
  invoke void @_ZN13my_shared_ptrIN4urdf13JointDynamicsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef null)
          to label %474 unwind label %475

474:                                              ; preds = %471
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %485

475:                                              ; preds = %471, %467, %463, %459, %458, %453, %447
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %13, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %14, align 4
  br label %486

479:                                              ; preds = %457
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %13, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %456, i64 noundef 16) #12
  br label %486

483:                                              ; preds = %466
  br label %484

484:                                              ; preds = %483, %450
  store i1 true, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %485

485:                                              ; preds = %484, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %487

486:                                              ; preds = %479, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %488

487:                                              ; preds = %485, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %489

488:                                              ; preds = %486, %442, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %490

489:                                              ; preds = %487, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %491

490:                                              ; preds = %488, %405, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %492

491:                                              ; preds = %489, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %493

492:                                              ; preds = %490, %368, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %494

493:                                              ; preds = %491, %333, %323, %304
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %495

494:                                              ; preds = %492, %309, %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %496

495:                                              ; preds = %493, %273, %175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #10
  br label %498

496:                                              ; preds = %494, %276, %136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  br label %497

497:                                              ; preds = %496, %132
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %499

498:                                              ; preds = %495, %120
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %501

499:                                              ; preds = %497, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %500

500:                                              ; preds = %499, %85
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  br label %504

501:                                              ; preds = %498, %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %502

502:                                              ; preds = %501, %37
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  %503 = load i1, ptr %3, align 1
  ret i1 %503

504:                                              ; preds = %500
  %505 = load ptr, ptr %13, align 8
  %506 = load i32, ptr %14, align 4
  %507 = insertvalue { ptr, i32 } poison, ptr %505, 0
  %508 = insertvalue { ptr, i32 } %507, i32 %506, 1
  resume { ptr, i32 } %508

509:                                              ; preds = %259
  %510 = landingpad { ptr, i32 }
          catch ptr null
  %511 = extractvalue { ptr, i32 } %510, 0
  call void @__clang_call_terminate(ptr %511) #13
  unreachable
}

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf9parsePoseERNS_4PoseEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) #2

declare void @_Z9logInformPKcS0_(ptr noundef, ptr noundef) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #7 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !14, i64 32}
!10 = !{!"_ZTSN4urdf5JointE", !11, i64 0, !14, i64 32, !15, i64 40, !11, i64 64, !11, i64 96, !17, i64 128, !19, i64 184, !20, i64 200, !21, i64 216, !22, i64 232, !23, i64 248}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSN4urdf5JointUt_E", !7, i64 0}
!15 = !{!"_ZTSN4urdf7Vector3E", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_ZTSN4urdf4PoseE", !15, i64 0, !18, i64 24}
!18 = !{!"_ZTSN4urdf8RotationE", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!19 = !{!"_ZTS13my_shared_ptrIN4urdf13JointDynamicsEE", !6, i64 0, !6, i64 8}
!20 = !{!"_ZTS13my_shared_ptrIN4urdf11JointLimitsEE", !6, i64 0, !6, i64 8}
!21 = !{!"_ZTS13my_shared_ptrIN4urdf11JointSafetyEE", !6, i64 0, !6, i64 8}
!22 = !{!"_ZTS13my_shared_ptrIN4urdf16JointCalibrationEE", !6, i64 0, !6, i64 8}
!23 = !{!"_ZTS13my_shared_ptrIN4urdf10JointMimicEE", !6, i64 0, !6, i64 8}
!24 = !{i64 0, i64 8, !25, i64 8, i64 8, !25, i64 16, i64 8, !25}
!25 = !{!16, !16, i64 0}
!26 = !{!27, !27, i64 0}
!27 = !{!"vtable pointer", !8, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.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" = type { i8 }
%"class.urdf::Vector3" = type { double, double, double }

@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.69 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [54 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0

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

declare noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) local_unnamed_addr #2

declare void @_Z8logDebugPKcS0_S0_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @_Z8logErrorPKcS0_S0_S0_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @__cxa_end_catch() local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264) %0, ptr noundef %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.urdf::Vector3", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  tail call void @_ZN4urdf5Joint5clearEv(ptr noundef nonnull align 8 dereferenceable(264) %0)
  %12 = tail call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %1, ptr noundef nonnull @.str.47)
  %.not = icmp eq ptr %12, null
  br i1 %.not, label %13, label %14

13:                                               ; preds = %2
  tail call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %222

14:                                               ; preds = %2
  %15 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %12)
  %16 = tail call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.49)
  %.not131 = icmp eq ptr %16, null
  br i1 %.not131, label %17, label %20

17:                                               ; preds = %14
  %18 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  tail call void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.50, ptr noundef %18, ptr noundef nonnull @.str.2)
  %19 = getelementptr inbounds i8, ptr %0, i64 128
  tail call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %19)
  br label %25

20:                                               ; preds = %14
  %21 = getelementptr inbounds i8, ptr %0, i64 128
  %22 = tail call noundef zeroext i1 @_ZN4urdf9parsePoseERNS_4PoseEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull %16)
  br i1 %22, label %25, label %23

23:                                               ; preds = %20
  tail call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %21)
  %24 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  tail call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.51, ptr noundef %24, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %222

25:                                               ; preds = %20, %17
  %26 = tail call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.52)
  %.not132 = icmp eq ptr %26, null
  br i1 %.not132, label %39, label %27

27:                                               ; preds = %25
  %28 = tail call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %26, ptr noundef nonnull @.str.53)
  %.not133 = icmp eq ptr %28, null
  br i1 %.not133, label %29, label %31

29:                                               ; preds = %27
  %30 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  tail call void @_Z9logInformPKcS0_(ptr noundef nonnull @.str.54, ptr noundef %30)
  br label %39

31:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %28, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %32 unwind label %35

32:                                               ; preds = %31
  %33 = getelementptr inbounds i8, ptr %0, i64 96
  %34 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  br label %39

35:                                               ; preds = %31
  %36 = landingpad { ptr, i32 }
          cleanup
  %37 = extractvalue { ptr, i32 } %36, 0
  %38 = extractvalue { ptr, i32 } %36, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #10
  br label %219

39:                                               ; preds = %29, %32, %25
  %40 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.55)
  %.not134 = icmp eq ptr %40, null
  br i1 %.not134, label %53, label %41

41:                                               ; preds = %39
  %42 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %40, ptr noundef nonnull @.str.53)
  %.not135 = icmp eq ptr %42, null
  br i1 %.not135, label %43, label %45

43:                                               ; preds = %41
  %44 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  call void @_Z9logInformPKcS0_(ptr noundef nonnull @.str.56, ptr noundef %44)
  br label %53

45:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %42, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %46 unwind label %49

46:                                               ; preds = %45
  %47 = getelementptr inbounds i8, ptr %0, i64 64
  %48 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  br label %53

49:                                               ; preds = %45
  %50 = landingpad { ptr, i32 }
          cleanup
  %51 = extractvalue { ptr, i32 } %50, 0
  %52 = extractvalue { ptr, i32 } %50, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #10
  br label %219

53:                                               ; preds = %43, %46, %39
  %54 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %1, ptr noundef nonnull @.str.57)
  %.not136 = icmp eq ptr %54, null
  br i1 %.not136, label %55, label %57

55:                                               ; preds = %53
  %56 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  call void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.58, ptr noundef %56, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
  br label %222

57:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %54, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %58 unwind label %60

58:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  %59 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.59)
  br i1 %59, label %83, label %68

60:                                               ; preds = %57
  %61 = landingpad { ptr, i32 }
          cleanup
  %62 = extractvalue { ptr, i32 } %61, 0
  %63 = extractvalue { ptr, i32 } %61, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  br label %218

64:                                               ; preds = %78
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  %67 = extractvalue { ptr, i32 } %65, 1
  br label %217

68:                                               ; preds = %58
  %69 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.60)
  br i1 %69, label %81, label %70

70:                                               ; preds = %68
  %71 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.61)
  br i1 %71, label %83, label %72

72:                                               ; preds = %70
  %73 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.62)
  br i1 %73, label %83, label %74

74:                                               ; preds = %72
  %75 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.63)
  br i1 %75, label %83, label %76

76:                                               ; preds = %74
  %77 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.64)
  br i1 %77, label %81, label %78

78:                                               ; preds = %76
  %79 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  %80 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.65, ptr noundef %79, ptr noundef %80, ptr noundef nonnull @.str.2)
          to label %.critedge unwind label %64

81:                                               ; preds = %76, %68
  %.sink = phi i32 [ 4, %68 ], [ 6, %76 ]
  %82 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %.sink, ptr %82, align 8, !tbaa !5
  br label %127

83:                                               ; preds = %74, %72, %70, %58
  %.sink156 = phi i32 [ 5, %58 ], [ 1, %70 ], [ 2, %72 ], [ 3, %74 ]
  %84 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %.sink156, ptr %84, align 8, !tbaa !5
  %85 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.66)
          to label %86 unwind label %91

86:                                               ; preds = %83
  %.not139 = icmp eq ptr %85, null
  br i1 %.not139, label %87, label %95

87:                                               ; preds = %86
  %88 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.67, ptr noundef %88, ptr noundef nonnull @.str.2)
          to label %89 unwind label %91

89:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  call void @_ZN4urdf7Vector3C2Eddd(ptr noundef nonnull align 8 dereferenceable(24) %9, double noundef 1.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00)
  %90 = getelementptr inbounds i8, ptr %0, i64 40
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  br label %127

91:                                               ; preds = %95, %87, %83
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  %94 = extractvalue { ptr, i32 } %92, 1
  br label %217

95:                                               ; preds = %86
  %96 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %85, ptr noundef nonnull @.str.68)
          to label %97 unwind label %91

97:                                               ; preds = %95
  %.not140 = icmp eq ptr %96, null
  br i1 %.not140, label %127, label %98

98:                                               ; preds = %97
  %99 = getelementptr inbounds i8, ptr %0, i64 40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #10
  %100 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %85, ptr noundef nonnull @.str.68)
          to label %101 unwind label %104

101:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %100, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %102 unwind label %106

102:                                              ; preds = %101
  invoke void @_ZN4urdf7Vector34initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %103 unwind label %108

103:                                              ; preds = %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  br label %127

104:                                              ; preds = %98
  %105 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %111

106:                                              ; preds = %101
  %107 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %110

108:                                              ; preds = %102
  %109 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %110

110:                                              ; preds = %108, %106
  %.pn = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  br label %111

111:                                              ; preds = %110, %104
  %.pn.pn = phi { ptr, i32 } [ %.pn, %110 ], [ %105, %104 ]
  %.196 = extractvalue { ptr, i32 } %.pn.pn, 0
  %.1106 = extractvalue { ptr, i32 } %.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  %112 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #10
  %113 = icmp eq i32 %.1106, %112
  br i1 %113, label %114, label %217

114:                                              ; preds = %111
  %115 = call ptr @__cxa_begin_catch(ptr %.196) #10
  call void @_ZN4urdf7Vector35clearEv(ptr noundef nonnull align 8 dereferenceable(24) %99)
  %116 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  %117 = load ptr, ptr %115, align 8, !tbaa !25
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  %119 = load ptr, ptr %118, align 8
  %120 = call noundef ptr %119(ptr noundef nonnull align 8 dereferenceable(16) %115) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.69, ptr noundef %116, ptr noundef %120, ptr noundef nonnull @.str.2)
          to label %121 unwind label %122

121:                                              ; preds = %114
  invoke void @__cxa_end_catch()
          to label %.critedge unwind label %124

122:                                              ; preds = %114
  %123 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %126 unwind label %223

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

126:                                              ; preds = %122, %124
  %.pn143 = phi { ptr, i32 } [ %125, %124 ], [ %123, %122 ]
  %.297 = extractvalue { ptr, i32 } %.pn143, 0
  %.2107 = extractvalue { ptr, i32 } %.pn143, 1
  br label %217

127:                                              ; preds = %81, %97, %103, %89
  %128 = getelementptr inbounds i8, ptr %0, i64 32
  %129 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.70)
          to label %130 unwind label %142

130:                                              ; preds = %127
  %.not145 = icmp eq ptr %129, null
  br i1 %.not145, label %144, label %131

131:                                              ; preds = %130
  %132 = getelementptr inbounds i8, ptr %0, i64 200
  %133 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %134 unwind label %142

134:                                              ; preds = %131
  call void @_ZN4urdf11JointLimitsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133)
  invoke void @_ZN13my_shared_ptrIN4urdf11JointLimitsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef nonnull %133)
          to label %135 unwind label %142

135:                                              ; preds = %134
  %136 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK13my_shared_ptrIN4urdf11JointLimitsEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %132)
  %137 = invoke noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef nonnull %129)
          to label %138 unwind label %142

138:                                              ; preds = %135
  br i1 %137, label %149, label %139

139:                                              ; preds = %138
  %140 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.71, ptr noundef %140, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %141 unwind label %142

141:                                              ; preds = %139
  invoke void @_ZN13my_shared_ptrIN4urdf11JointLimitsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef null)
          to label %.critedge unwind label %142

142:                                              ; preds = %.invoke, %141, %139, %135, %134, %131, %127
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %216

144:                                              ; preds = %130
  %145 = load i32, ptr %128, align 8, !tbaa !5
  switch i32 %145, label %149 [
    i32 1, label %.invoke
    i32 3, label %146
  ]

146:                                              ; preds = %144
  br label %.invoke

.invoke:                                          ; preds = %144, %146
  %147 = phi ptr [ @.str.73, %146 ], [ @.str.72, %144 ]
  %148 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull %147, ptr noundef %148, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %.critedge unwind label %142

149:                                              ; preds = %144, %138
  %150 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.74)
          to label %151 unwind label %163

151:                                              ; preds = %149
  %.not146 = icmp eq ptr %150, null
  br i1 %.not146, label %165, label %152

152:                                              ; preds = %151
  %153 = getelementptr inbounds i8, ptr %0, i64 216
  %154 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #11
          to label %155 unwind label %163

155:                                              ; preds = %152
  call void @_ZN4urdf11JointSafetyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154)
  invoke void @_ZN13my_shared_ptrIN4urdf11JointSafetyEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef nonnull %154)
          to label %156 unwind label %163

156:                                              ; preds = %155
  %157 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK13my_shared_ptrIN4urdf11JointSafetyEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
  %158 = invoke noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef nonnull %150)
          to label %159 unwind label %163

159:                                              ; preds = %156
  br i1 %158, label %165, label %160

160:                                              ; preds = %159
  %161 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.75, ptr noundef %161, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %162 unwind label %163

162:                                              ; preds = %160
  invoke void @_ZN13my_shared_ptrIN4urdf11JointSafetyEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef null)
          to label %.critedge unwind label %163

163:                                              ; preds = %162, %160, %156, %155, %152, %149
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %216

165:                                              ; preds = %159, %151
  %166 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.76)
          to label %167 unwind label %180

167:                                              ; preds = %165
  %.not147 = icmp eq ptr %166, null
  br i1 %.not147, label %184, label %168

168:                                              ; preds = %167
  %169 = getelementptr inbounds i8, ptr %0, i64 232
  %170 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #11
          to label %171 unwind label %180

171:                                              ; preds = %168
  invoke void @_ZN4urdf16JointCalibrationC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %170)
          to label %172 unwind label %182

172:                                              ; preds = %171
  invoke void @_ZN13my_shared_ptrIN4urdf16JointCalibrationEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %169, ptr noundef nonnull %170)
          to label %173 unwind label %180

173:                                              ; preds = %172
  %174 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK13my_shared_ptrIN4urdf16JointCalibrationEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  %175 = invoke noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40) %174, ptr noundef nonnull %166)
          to label %176 unwind label %180

176:                                              ; preds = %173
  br i1 %175, label %184, label %177

177:                                              ; preds = %176
  %178 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.77, ptr noundef %178, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %179 unwind label %180

179:                                              ; preds = %177
  invoke void @_ZN13my_shared_ptrIN4urdf16JointCalibrationEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %169, ptr noundef null)
          to label %.critedge unwind label %180

180:                                              ; preds = %179, %177, %173, %172, %168, %165
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %216

182:                                              ; preds = %171
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %170, i64 noundef 40) #12
  br label %216

184:                                              ; preds = %176, %167
  %185 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.78)
          to label %186 unwind label %198

186:                                              ; preds = %184
  %.not148 = icmp eq ptr %185, null
  br i1 %.not148, label %200, label %187

187:                                              ; preds = %186
  %188 = getelementptr inbounds i8, ptr %0, i64 248
  %189 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #11
          to label %190 unwind label %198

190:                                              ; preds = %187
  call void @_ZN4urdf10JointMimicC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %189)
  invoke void @_ZN13my_shared_ptrIN4urdf10JointMimicEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %188, ptr noundef nonnull %189)
          to label %191 unwind label %198

191:                                              ; preds = %190
  %192 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK13my_shared_ptrIN4urdf10JointMimicEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
  %193 = invoke noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48) %192, ptr noundef nonnull %185)
          to label %194 unwind label %198

194:                                              ; preds = %191
  br i1 %193, label %200, label %195

195:                                              ; preds = %194
  %196 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.79, ptr noundef %196, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %197 unwind label %198

197:                                              ; preds = %195
  invoke void @_ZN13my_shared_ptrIN4urdf10JointMimicEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %188, ptr noundef null)
          to label %.critedge unwind label %198

198:                                              ; preds = %197, %195, %191, %190, %187, %184
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %216

200:                                              ; preds = %194, %186
  %201 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull @.str.80)
          to label %202 unwind label %214

202:                                              ; preds = %200
  %.not149 = icmp eq ptr %201, null
  br i1 %.not149, label %.critedge, label %203

203:                                              ; preds = %202
  %204 = getelementptr inbounds i8, ptr %0, i64 184
  %205 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #11
          to label %206 unwind label %214

206:                                              ; preds = %203
  call void @_ZN4urdf13JointDynamicsC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %205)
  invoke void @_ZN13my_shared_ptrIN4urdf13JointDynamicsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull %205)
          to label %207 unwind label %214

207:                                              ; preds = %206
  %208 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK13my_shared_ptrIN4urdf13JointDynamicsEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
  %209 = invoke noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16) %208, ptr noundef nonnull %201)
          to label %210 unwind label %214

210:                                              ; preds = %207
  br i1 %209, label %.critedge, label %211

211:                                              ; preds = %210
  %212 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #10
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.81, ptr noundef %212, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.2)
          to label %213 unwind label %214

213:                                              ; preds = %211
  invoke void @_ZN13my_shared_ptrIN4urdf13JointDynamicsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef null)
          to label %.critedge unwind label %214

214:                                              ; preds = %213, %211, %207, %206, %203, %200
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %216

216:                                              ; preds = %163, %198, %214, %182, %180, %142
  %.pn150.pn.pn.pn = phi { ptr, i32 } [ %143, %142 ], [ %164, %163 ], [ %181, %180 ], [ %183, %182 ], [ %215, %214 ], [ %199, %198 ]
  %.7102 = extractvalue { ptr, i32 } %.pn150.pn.pn.pn, 0
  %.7112 = extractvalue { ptr, i32 } %.pn150.pn.pn.pn, 1
  br label %217

.critedge:                                        ; preds = %.invoke, %121, %141, %179, %213, %210, %202, %197, %162, %78
  %.6 = phi i1 [ false, %78 ], [ false, %141 ], [ false, %162 ], [ false, %179 ], [ false, %197 ], [ false, %213 ], [ true, %210 ], [ true, %202 ], [ false, %121 ], [ false, %.invoke ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  br label %222

217:                                              ; preds = %91, %111, %126, %216, %64
  %.8113 = phi i32 [ %.7112, %216 ], [ %67, %64 ], [ %.2107, %126 ], [ %.1106, %111 ], [ %94, %91 ]
  %.8103 = phi ptr [ %.7102, %216 ], [ %66, %64 ], [ %.297, %126 ], [ %.196, %111 ], [ %93, %91 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #10
  br label %218

218:                                              ; preds = %217, %60
  %.9114 = phi i32 [ %.8113, %217 ], [ %63, %60 ]
  %.9104 = phi ptr [ %.8103, %217 ], [ %62, %60 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  br label %219

219:                                              ; preds = %49, %218, %35
  %.11116 = phi i32 [ %38, %35 ], [ %.9114, %218 ], [ %52, %49 ]
  %.11 = phi ptr [ %37, %35 ], [ %.9104, %218 ], [ %51, %49 ]
  %220 = insertvalue { ptr, i32 } poison, ptr %.11, 0
  %221 = insertvalue { ptr, i32 } %220, i32 %.11116, 1
  resume { ptr, i32 } %221

222:                                              ; preds = %23, %.critedge, %55, %13
  %.9 = phi i1 [ false, %13 ], [ false, %23 ], [ %.6, %.critedge ], [ false, %55 ]
  ret i1 %.9

223:                                              ; preds = %122
  %224 = landingpad { ptr, i32 }
          catch ptr null
  %225 = extractvalue { ptr, i32 } %224, 0
  call void @__clang_call_terminate(ptr %225) #13
  unreachable
}

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf9parsePoseERNS_4PoseEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) local_unnamed_addr #2

declare void @_Z9logInformPKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4urdf7Vector34initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf11JointLimitsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf11JointSafetyEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf16JointCalibrationEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf10JointMimicEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf13JointDynamicsEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 32}
!6 = !{!"_ZTSN4urdf5JointE", !7, i64 0, !13, i64 32, !14, i64 40, !7, i64 64, !7, i64 96, !16, i64 128, !18, i64 184, !19, i64 200, !20, i64 216, !21, i64 232, !22, i64 248}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"_ZTSN4urdf5JointUt_E", !10, i64 0}
!14 = !{!"_ZTSN4urdf7Vector3E", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"double", !10, i64 0}
!16 = !{!"_ZTSN4urdf4PoseE", !14, i64 0, !17, i64 24}
!17 = !{!"_ZTSN4urdf8RotationE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!18 = !{!"_ZTS13my_shared_ptrIN4urdf13JointDynamicsEE", !9, i64 0, !9, i64 8}
!19 = !{!"_ZTS13my_shared_ptrIN4urdf11JointLimitsEE", !9, i64 0, !9, i64 8}
!20 = !{!"_ZTS13my_shared_ptrIN4urdf11JointSafetyEE", !9, i64 0, !9, i64 8}
!21 = !{!"_ZTS13my_shared_ptrIN4urdf16JointCalibrationEE", !9, i64 0, !9, i64 8}
!22 = !{!"_ZTS13my_shared_ptrIN4urdf10JointMimicEE", !9, i64 0, !9, i64 8}
!23 = !{i64 0, i64 8, !24, i64 8, i64 8, !24, i64 16, i64 8, !24}
!24 = !{!15, !15, i64 0}
!25 = !{!26, !26, i64 0}
!26 = !{!"vtable pointer", !11, i64 0}


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