; LLVM IR from HiroIshida/tinyfk :: urdf_parser/src/joint.ll (ZN4urdf10parseJointERNS_5JointEP12TiXmlElement)

; 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", i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.urdf::Pose", %"class.std::shared_ptr.0", %"class.std::shared_ptr.3", %"class.std::shared_ptr.6", %"class.std::shared_ptr.9", %"class.std::shared_ptr.12", %"class.std::weak_ptr" }
%"class.urdf::Pose" = type { %"class.urdf::Vector3", %"class.urdf::Rotation" }
%"class.urdf::Rotation" = type { double, double, double, double }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.3" = type { %"class.std::__shared_ptr.4" }
%"class.std::__shared_ptr.4" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.6" = type { %"class.std::__shared_ptr.7" }
%"class.std::__shared_ptr.7" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.9" = type { %"class.std::__shared_ptr.10" }
%"class.std::__shared_ptr.10" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.12" = type { %"class.std::__shared_ptr.13" }
%"class.std::__shared_ptr.13" = type { ptr, %"class.std::__shared_count" }
%"class.std::weak_ptr" = type { %"class.std::__weak_ptr" }
%"class.std::__weak_ptr" = type { ptr, %"class.std::__weak_count" }
%"class.std::__weak_count" = type { ptr }

@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 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(216), 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 @__cxa_end_catch()

; 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) #4

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

; 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(288) %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(288) %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(216) %33, ptr noundef @.str.15)
  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
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %431

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(104) %43, ptr noundef @.str.16)
  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 %50, 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 6
  call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %49)
  br label %59

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

55:                                               ; preds = %50
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"class.urdf::Joint", ptr %56, i32 0, i32 6
  call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %57)
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %430

58:                                               ; preds = %50
  br label %59

59:                                               ; preds = %58, %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %60, ptr noundef @.str.17)
  store ptr %61, ptr %9, align 8, !tbaa !5
  %62 = load ptr, ptr %9, align 8, !tbaa !5
  %63 = icmp ne ptr %62, null
  br i1 %63, label %64, label %81

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

69:                                               ; preds = %64
  br label %80

70:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #10
  %71 = 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 %71, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %72 unwind label %76

72:                                               ; preds = %70
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %"class.urdf::Joint", ptr %73, i32 0, i32 5
  %75 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %74, 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 %80

76:                                               ; preds = %70
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %13, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, 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 %429

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

81:                                               ; preds = %80, %59
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %82, ptr noundef @.str.19)
  store ptr %83, ptr %15, align 8, !tbaa !5
  %84 = load ptr, ptr %15, align 8, !tbaa !5
  %85 = icmp ne ptr %84, null
  br i1 %85, label %86, label %103

86:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %87 = load ptr, ptr %15, align 8, !tbaa !5
  %88 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %87, ptr noundef @.str.18)
  store ptr %88, ptr %16, align 8, !tbaa !5
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = icmp ne ptr %89, null
  br i1 %90, label %92, label %91

91:                                               ; preds = %86
  br label %102

92:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #10
  %93 = 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 %93, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %94 unwind label %98

94:                                               ; preds = %92
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %"class.urdf::Joint", ptr %95, i32 0, i32 4
  %97 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %96, 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 %102

98:                                               ; preds = %92
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %13, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, 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 %428

102:                                              ; preds = %94, %91
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %103

103:                                              ; preds = %102, %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %104, ptr noundef @.str.20)
  store ptr %105, ptr %19, align 8, !tbaa !5
  %106 = load ptr, ptr %19, align 8, !tbaa !5
  %107 = icmp ne ptr %106, null
  br i1 %107, label %109, label %108

108:                                              ; preds = %103
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %427

109:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #10
  %110 = 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 %110, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %111 unwind label %117

111:                                              ; preds = %109
  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
  %112 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.21)
          to label %113 unwind label %121

113:                                              ; preds = %111
  br i1 %112, label %114, label %125

114:                                              ; preds = %113
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"class.urdf::Joint", ptr %115, i32 0, i32 1
  store i32 5, ptr %116, align 8, !tbaa !9
  br label %161

117:                                              ; preds = %109
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %13, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, 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 %426

121:                                              ; preds = %149, %143, %137, %131, %125, %111
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %13, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %14, align 4
  br label %425

125:                                              ; preds = %113
  %126 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.22)
          to label %127 unwind label %121

127:                                              ; preds = %125
  br i1 %126, label %128, label %131

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

131:                                              ; preds = %127
  %132 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.23)
          to label %133 unwind label %121

133:                                              ; preds = %131
  br i1 %132, label %134, label %137

134:                                              ; preds = %133
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = getelementptr inbounds %"class.urdf::Joint", ptr %135, i32 0, i32 1
  store i32 1, ptr %136, align 8, !tbaa !9
  br label %159

137:                                              ; preds = %133
  %138 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.24)
          to label %139 unwind label %121

139:                                              ; preds = %137
  br i1 %138, label %140, label %143

140:                                              ; preds = %139
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds %"class.urdf::Joint", ptr %141, i32 0, i32 1
  store i32 2, ptr %142, align 8, !tbaa !9
  br label %158

143:                                              ; preds = %139
  %144 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.25)
          to label %145 unwind label %121

145:                                              ; preds = %143
  br i1 %144, label %146, label %149

146:                                              ; preds = %145
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"class.urdf::Joint", ptr %147, i32 0, i32 1
  store i32 3, ptr %148, align 8, !tbaa !9
  br label %157

149:                                              ; preds = %145
  %150 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.26)
          to label %151 unwind label %121

151:                                              ; preds = %149
  br i1 %150, label %152, label %155

152:                                              ; preds = %151
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds %"class.urdf::Joint", ptr %153, i32 0, i32 1
  store i32 6, ptr %154, align 8, !tbaa !9
  br label %156

155:                                              ; preds = %151
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %424

156:                                              ; preds = %152
  br label %157

157:                                              ; preds = %156, %146
  br label %158

158:                                              ; preds = %157, %140
  br label %159

159:                                              ; preds = %158, %134
  br label %160

160:                                              ; preds = %159, %128
  br label %161

161:                                              ; preds = %160, %114
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %"class.urdf::Joint", ptr %162, i32 0, i32 1
  %164 = load i32, ptr %163, align 8, !tbaa !9
  %165 = icmp ne i32 %164, 4
  br i1 %165, label %166, label %244

166:                                              ; preds = %161
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds %"class.urdf::Joint", ptr %167, i32 0, i32 1
  %169 = load i32, ptr %168, align 8, !tbaa !9
  %170 = icmp ne i32 %169, 6
  br i1 %170, label %171, label %244

171:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  %173 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %172, ptr noundef @.str.27)
          to label %174 unwind label %181

174:                                              ; preds = %171
  store ptr %173, ptr %22, align 8, !tbaa !5
  %175 = load ptr, ptr %22, align 8, !tbaa !5
  %176 = icmp ne ptr %175, null
  br i1 %176, label %189, label %177

177:                                              ; preds = %174
  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 %178 unwind label %185

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

181:                                              ; preds = %189, %171
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %13, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %14, align 4
  br label %243

185:                                              ; preds = %177
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %13, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  br label %243

189:                                              ; preds = %174
  %190 = load ptr, ptr %22, align 8, !tbaa !5
  %191 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %190, ptr noundef @.str.28)
          to label %192 unwind label %181

192:                                              ; preds = %189
  %193 = icmp ne ptr %191, null
  br i1 %193, label %194, label %238

194:                                              ; preds = %192
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"class.urdf::Joint", ptr %195, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #10
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %197, ptr noundef @.str.28)
          to label %199 unwind label %202

199:                                              ; preds = %194
  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 %198, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %200 unwind label %206

200:                                              ; preds = %199
  invoke void @_ZN4urdf7Vector34initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %196, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %201 unwind label %210

201:                                              ; preds = %200
  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 %237

202:                                              ; preds = %194
  %203 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %13, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %14, align 4
  br label %215

206:                                              ; preds = %199
  %207 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %13, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %14, align 4
  br label %214

210:                                              ; preds = %200
  %211 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %13, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %214

214:                                              ; preds = %210, %206
  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 %215

215:                                              ; preds = %214, %202
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  br label %216

216:                                              ; preds = %215
  %217 = load i32, ptr %14, align 4
  %218 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #10
  %219 = icmp eq i32 %217, %218
  br i1 %219, label %220, label %243

220:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %221 = load ptr, ptr %13, align 8
  %222 = call ptr @__cxa_begin_catch(ptr %221) #10
  store ptr %222, ptr %26, align 8
  %223 = load ptr, ptr %4, align 8, !tbaa !5
  %224 = getelementptr inbounds %"class.urdf::Joint", ptr %223, i32 0, i32 2
  invoke void @_ZN4urdf7Vector35clearEv(ptr noundef nonnull align 8 dereferenceable(24) %224)
          to label %225 unwind label %226

225:                                              ; preds = %220
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %230 unwind label %231

226:                                              ; preds = %220
  %227 = landingpad { ptr, i32 }
          cleanup
  %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
  invoke void @__cxa_end_catch()
          to label %235 unwind label %438

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

231:                                              ; preds = %225
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %13, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %14, align 4
  br label %236

235:                                              ; preds = %226
  br label %236

236:                                              ; preds = %235, %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %243

237:                                              ; preds = %201
  br label %238

238:                                              ; preds = %237, %192
  br label %239

239:                                              ; preds = %238, %178
  store i32 0, ptr %7, align 4
  br label %240

240:                                              ; preds = %239, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  %241 = load i32, ptr %7, align 4
  switch i32 %241, label %424 [
    i32 0, label %242
  ]

242:                                              ; preds = %240
  br label %244

243:                                              ; preds = %236, %216, %185, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %425

244:                                              ; preds = %242, %166, %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %245 = load ptr, ptr %5, align 8, !tbaa !5
  %246 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %245, ptr noundef @.str.29)
          to label %247 unwind label %266

247:                                              ; preds = %244
  store ptr %246, ptr %27, align 8, !tbaa !5
  %248 = load ptr, ptr %27, align 8, !tbaa !5
  %249 = icmp ne ptr %248, null
  br i1 %249, label %250, label %275

250:                                              ; preds = %247
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.urdf::Joint", ptr %251, i32 0, i32 8
  %253 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #11
          to label %254 unwind label %266

254:                                              ; preds = %250
  invoke void @_ZN4urdf11JointLimitsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253)
          to label %255 unwind label %270

255:                                              ; preds = %254
  invoke void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %252, ptr noundef %253)
          to label %256 unwind label %266

256:                                              ; preds = %255
  %257 = load ptr, ptr %4, align 8, !tbaa !5
  %258 = getelementptr inbounds %"class.urdf::Joint", ptr %257, i32 0, i32 8
  %259 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt19__shared_ptr_accessIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %258) #10
  %260 = load ptr, ptr %27, align 8, !tbaa !5
  %261 = invoke noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %259, ptr noundef %260)
          to label %262 unwind label %266

262:                                              ; preds = %256
  br i1 %261, label %274, label %263

263:                                              ; preds = %262
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"class.urdf::Joint", ptr %264, i32 0, i32 8
  call void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %265) #10
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %422

266:                                              ; preds = %256, %255, %250, %244
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %13, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %14, align 4
  br label %423

270:                                              ; preds = %254
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %13, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %253, i64 noundef 32) #12
  br label %423

274:                                              ; preds = %262
  br label %289

275:                                              ; preds = %247
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = getelementptr inbounds %"class.urdf::Joint", ptr %276, i32 0, i32 1
  %278 = load i32, ptr %277, align 8, !tbaa !9
  %279 = icmp eq i32 %278, 1
  br i1 %279, label %280, label %281

280:                                              ; preds = %275
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %422

281:                                              ; preds = %275
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %"class.urdf::Joint", ptr %282, i32 0, i32 1
  %284 = load i32, ptr %283, align 8, !tbaa !9
  %285 = icmp eq i32 %284, 3
  br i1 %285, label %286, label %287

286:                                              ; preds = %281
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %422

287:                                              ; preds = %281
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288, %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %290, ptr noundef @.str.30)
          to label %292 unwind label %311

292:                                              ; preds = %289
  store ptr %291, ptr %28, align 8, !tbaa !5
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  %294 = icmp ne ptr %293, null
  br i1 %294, label %295, label %320

295:                                              ; preds = %292
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %"class.urdf::Joint", ptr %296, i32 0, i32 9
  %298 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #11
          to label %299 unwind label %311

299:                                              ; preds = %295
  invoke void @_ZN4urdf11JointSafetyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %298)
          to label %300 unwind label %315

300:                                              ; preds = %299
  invoke void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %297, ptr noundef %298)
          to label %301 unwind label %311

301:                                              ; preds = %300
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = getelementptr inbounds %"class.urdf::Joint", ptr %302, i32 0, i32 9
  %304 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt19__shared_ptr_accessIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %303) #10
  %305 = load ptr, ptr %28, align 8, !tbaa !5
  %306 = invoke noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %304, ptr noundef %305)
          to label %307 unwind label %311

307:                                              ; preds = %301
  br i1 %306, label %319, label %308

308:                                              ; preds = %307
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = getelementptr inbounds %"class.urdf::Joint", ptr %309, i32 0, i32 9
  call void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %310) #10
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %420

311:                                              ; preds = %301, %300, %295, %289
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %13, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %14, align 4
  br label %421

315:                                              ; preds = %299
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %13, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %298, i64 noundef 32) #12
  br label %421

319:                                              ; preds = %307
  br label %320

320:                                              ; preds = %319, %292
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %321, ptr noundef @.str.31)
          to label %323 unwind label %342

323:                                              ; preds = %320
  store ptr %322, ptr %29, align 8, !tbaa !5
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = icmp ne ptr %324, null
  br i1 %325, label %326, label %351

326:                                              ; preds = %323
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  %328 = getelementptr inbounds %"class.urdf::Joint", ptr %327, i32 0, i32 10
  %329 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #11
          to label %330 unwind label %342

330:                                              ; preds = %326
  invoke void @_ZN4urdf16JointCalibrationC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %329)
          to label %331 unwind label %346

331:                                              ; preds = %330
  invoke void @_ZNSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %328, ptr noundef %329)
          to label %332 unwind label %342

332:                                              ; preds = %331
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %"class.urdf::Joint", ptr %333, i32 0, i32 10
  %335 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %334) #10
  %336 = load ptr, ptr %29, align 8, !tbaa !5
  %337 = invoke noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40) %335, ptr noundef %336)
          to label %338 unwind label %342

338:                                              ; preds = %332
  br i1 %337, label %350, label %339

339:                                              ; preds = %338
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds %"class.urdf::Joint", ptr %340, i32 0, i32 10
  call void @_ZNSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %341) #10
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %418

342:                                              ; preds = %332, %331, %326, %320
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %13, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %14, align 4
  br label %419

346:                                              ; preds = %330
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %13, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %329, i64 noundef 40) #12
  br label %419

350:                                              ; preds = %338
  br label %351

351:                                              ; preds = %350, %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %352 = load ptr, ptr %5, align 8, !tbaa !5
  %353 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %352, ptr noundef @.str.32)
          to label %354 unwind label %373

354:                                              ; preds = %351
  store ptr %353, ptr %30, align 8, !tbaa !5
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = icmp ne ptr %355, null
  br i1 %356, label %357, label %382

357:                                              ; preds = %354
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  %359 = getelementptr inbounds %"class.urdf::Joint", ptr %358, i32 0, i32 11
  %360 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #11
          to label %361 unwind label %373

361:                                              ; preds = %357
  invoke void @_ZN4urdf10JointMimicC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %360)
          to label %362 unwind label %377

362:                                              ; preds = %361
  invoke void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %359, ptr noundef %360)
          to label %363 unwind label %373

363:                                              ; preds = %362
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = getelementptr inbounds %"class.urdf::Joint", ptr %364, i32 0, i32 11
  %366 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt19__shared_ptr_accessIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %365) #10
  %367 = load ptr, ptr %30, align 8, !tbaa !5
  %368 = invoke noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48) %366, ptr noundef %367)
          to label %369 unwind label %373

369:                                              ; preds = %363
  br i1 %368, label %381, label %370

370:                                              ; preds = %369
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = getelementptr inbounds %"class.urdf::Joint", ptr %371, i32 0, i32 11
  call void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %372) #10
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %416

373:                                              ; preds = %363, %362, %357, %351
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %13, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %14, align 4
  br label %417

377:                                              ; preds = %361
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %13, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %360, i64 noundef 48) #12
  br label %417

381:                                              ; preds = %369
  br label %382

382:                                              ; preds = %381, %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %383, ptr noundef @.str.33)
          to label %385 unwind label %404

385:                                              ; preds = %382
  store ptr %384, ptr %31, align 8, !tbaa !5
  %386 = load ptr, ptr %31, align 8, !tbaa !5
  %387 = icmp ne ptr %386, null
  br i1 %387, label %388, label %413

388:                                              ; preds = %385
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"class.urdf::Joint", ptr %389, i32 0, i32 7
  %391 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #11
          to label %392 unwind label %404

392:                                              ; preds = %388
  invoke void @_ZN4urdf13JointDynamicsC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %391)
          to label %393 unwind label %408

393:                                              ; preds = %392
  invoke void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %390, ptr noundef %391)
          to label %394 unwind label %404

394:                                              ; preds = %393
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %"class.urdf::Joint", ptr %395, i32 0, i32 7
  %397 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt19__shared_ptr_accessIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %396) #10
  %398 = load ptr, ptr %31, align 8, !tbaa !5
  %399 = invoke noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16) %397, ptr noundef %398)
          to label %400 unwind label %404

400:                                              ; preds = %394
  br i1 %399, label %412, label %401

401:                                              ; preds = %400
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.urdf::Joint", ptr %402, i32 0, i32 7
  call void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %403) #10
  store i1 false, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %414

404:                                              ; preds = %394, %393, %388, %382
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %13, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %14, align 4
  br label %415

408:                                              ; preds = %392
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %13, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %391, i64 noundef 16) #12
  br label %415

412:                                              ; preds = %400
  br label %413

413:                                              ; preds = %412, %385
  store i1 true, ptr %3, align 1
  store i32 1, ptr %7, align 4
  br label %414

414:                                              ; preds = %413, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %416

415:                                              ; preds = %408, %404
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %417

416:                                              ; preds = %414, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %418

417:                                              ; preds = %415, %377, %373
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %419

418:                                              ; preds = %416, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %420

419:                                              ; preds = %417, %346, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %421

420:                                              ; preds = %418, %308
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %422

421:                                              ; preds = %419, %315, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %423

422:                                              ; preds = %420, %286, %280, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %424

423:                                              ; preds = %421, %270, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %425

424:                                              ; preds = %422, %240, %155
  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 %427

425:                                              ; preds = %423, %243, %121
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  br label %426

426:                                              ; preds = %425, %117
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %428

427:                                              ; preds = %424, %108
  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 %430

428:                                              ; preds = %426, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %429

429:                                              ; preds = %428, %76
  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 %433

430:                                              ; preds = %427, %55
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %431

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

433:                                              ; preds = %429
  %434 = load ptr, ptr %13, align 8
  %435 = load i32, ptr %14, align 4
  %436 = insertvalue { ptr, i32 } poison, ptr %434, 0
  %437 = insertvalue { ptr, i32 } %436, i32 %435, 1
  resume { ptr, i32 } %437

438:                                              ; preds = %226
  %439 = landingpad { ptr, i32 }
          catch ptr null
  %440 = extractvalue { ptr, i32 } %439, 0
  call void @__clang_call_terminate(ptr %440) #13
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) #0 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

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

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

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

; 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 #6 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) #8

; 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)) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16)) #6 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 = { 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 #5 = { 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 #6 = { 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 #7 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { 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 #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, !17, i64 64, !11, i64 72, !11, i64 104, !18, i64 136, !20, i64 192, !23, i64 208, !25, i64 224, !27, i64 240, !29, i64 256, !31, i64 272}
!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 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSN4urdf4PoseE", !15, i64 0, !19, i64 24}
!19 = !{!"_ZTSN4urdf8RotationE", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!20 = !{!"_ZTSSt10shared_ptrIN4urdf13JointDynamicsEE", !21, i64 0}
!21 = !{!"_ZTSSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!22 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!23 = !{!"_ZTSSt10shared_ptrIN4urdf11JointLimitsEE", !24, i64 0}
!24 = !{!"_ZTSSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!25 = !{!"_ZTSSt10shared_ptrIN4urdf11JointSafetyEE", !26, i64 0}
!26 = !{!"_ZTSSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!27 = !{!"_ZTSSt10shared_ptrIN4urdf16JointCalibrationEE", !28, i64 0}
!28 = !{!"_ZTSSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!29 = !{!"_ZTSSt10shared_ptrIN4urdf10JointMimicEE", !30, i64 0}
!30 = !{!"_ZTSSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !22, i64 8}
!31 = !{!"_ZTSSt8weak_ptrIN4urdf4LinkEE", !32, i64 0}
!32 = !{!"_ZTSSt10__weak_ptrIN4urdf4LinkELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !33, i64 8}
!33 = !{!"_ZTSSt12__weak_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!34 = !{i64 0, i64 8, !35, i64 8, i64 8, !35, i64 16, i64 8, !35}
!35 = !{!16, !16, 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.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.29 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 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(216), 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 @__cxa_end_catch() local_unnamed_addr

; 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 #4

; 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(288) %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(288) %0)
  %12 = tail call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %1, ptr noundef nonnull @.str.15)
  %.not = icmp eq ptr %12, null
  br i1 %.not, label %180, label %13

13:                                               ; preds = %2
  %14 = 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)
  %15 = tail call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.16)
  %.not114 = icmp eq ptr %15, null
  %16 = getelementptr inbounds i8, ptr %0, i64 136
  br i1 %.not114, label %17, label %18

17:                                               ; preds = %13
  tail call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %16)
  br label %21

18:                                               ; preds = %13
  %19 = tail call noundef zeroext i1 @_ZN4urdf9parsePoseERNS_4PoseEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull %15)
  br i1 %19, label %21, label %20

20:                                               ; preds = %18
  tail call void @_ZN4urdf4Pose5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %16)
  br label %180

21:                                               ; preds = %18, %17
  %22 = tail call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.17)
  %.not115 = icmp eq ptr %22, null
  br i1 %.not115, label %33, label %23

23:                                               ; preds = %21
  %24 = tail call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %22, ptr noundef nonnull @.str.18)
  %.not116 = icmp eq ptr %24, null
  br i1 %.not116, label %33, label %25

25:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %24, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %26 unwind label %29

26:                                               ; preds = %25
  %27 = getelementptr inbounds i8, ptr %0, i64 104
  %28 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  br label %33

29:                                               ; preds = %25
  %30 = landingpad { ptr, i32 }
          cleanup
  %31 = extractvalue { ptr, i32 } %30, 0
  %32 = extractvalue { ptr, i32 } %30, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  br label %177

33:                                               ; preds = %26, %23, %21
  %34 = call noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.19)
  %.not117 = icmp eq ptr %34, null
  br i1 %.not117, label %45, label %35

35:                                               ; preds = %33
  %36 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %34, ptr noundef nonnull @.str.18)
  %.not118 = icmp eq ptr %36, null
  br i1 %.not118, label %45, label %37

37:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %36, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %38 unwind label %41

38:                                               ; preds = %37
  %39 = getelementptr inbounds i8, ptr %0, i64 72
  %40 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br label %45

41:                                               ; preds = %37
  %42 = landingpad { ptr, i32 }
          cleanup
  %43 = extractvalue { ptr, i32 } %42, 0
  %44 = extractvalue { ptr, i32 } %42, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br label %177

45:                                               ; preds = %38, %35, %33
  %46 = call noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %1, ptr noundef nonnull @.str.20)
  %.not119 = icmp eq ptr %46, null
  br i1 %.not119, label %180, label %47

47:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %46, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %48 unwind label %50

48:                                               ; preds = %47
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  %49 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.21)
  br i1 %49, label %66, label %54

50:                                               ; preds = %47
  %51 = landingpad { ptr, i32 }
          cleanup
  %52 = extractvalue { ptr, i32 } %51, 0
  %53 = extractvalue { ptr, i32 } %51, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  br label %176

54:                                               ; preds = %48
  %55 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.22)
  br i1 %55, label %64, label %56

56:                                               ; preds = %54
  %57 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.23)
  br i1 %57, label %66, label %58

58:                                               ; preds = %56
  %59 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.24)
  br i1 %59, label %66, label %60

60:                                               ; preds = %58
  %61 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.25)
  br i1 %61, label %66, label %62

62:                                               ; preds = %60
  %63 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.26)
  br i1 %63, label %64, label %.critedge

64:                                               ; preds = %62, %54
  %.sink = phi i32 [ 4, %54 ], [ 6, %62 ]
  %65 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %.sink, ptr %65, align 8, !tbaa !5
  br label %101

66:                                               ; preds = %60, %58, %56, %48
  %.sink137 = phi i32 [ 5, %48 ], [ 1, %56 ], [ 2, %58 ], [ 3, %60 ]
  %67 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %.sink137, ptr %67, align 8, !tbaa !5
  %68 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.27)
          to label %69 unwind label %72

69:                                               ; preds = %66
  %.not122 = icmp eq ptr %68, null
  br i1 %.not122, label %70, label %76

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  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)
  %71 = getelementptr inbounds i8, ptr %0, i64 40
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !tbaa.struct !33
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %101

72:                                               ; preds = %76, %66
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  %75 = extractvalue { ptr, i32 } %73, 1
  br label %175

76:                                               ; preds = %69
  %77 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %68, ptr noundef nonnull @.str.28)
          to label %78 unwind label %72

78:                                               ; preds = %76
  %.not123 = icmp eq ptr %77, null
  br i1 %.not123, label %101, label %79

79:                                               ; preds = %78
  %80 = getelementptr inbounds i8, ptr %0, i64 40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  %81 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(216) %68, ptr noundef nonnull @.str.28)
          to label %82 unwind label %85

82:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %81, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %83 unwind label %87

83:                                               ; preds = %82
  invoke void @_ZN4urdf7Vector34initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %84 unwind label %89

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

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

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

89:                                               ; preds = %83
  %90 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %91

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

92:                                               ; preds = %91, %85
  %.pn.pn = phi { ptr, i32 } [ %.pn, %91 ], [ %86, %85 ]
  %.180 = extractvalue { ptr, i32 } %.pn.pn, 0
  %.190 = extractvalue { ptr, i32 } %.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  %93 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #8
  %94 = icmp eq i32 %.190, %93
  br i1 %94, label %95, label %175

95:                                               ; preds = %92
  %96 = call ptr @__cxa_begin_catch(ptr %.180) #8
  call void @_ZN4urdf7Vector35clearEv(ptr noundef nonnull align 8 dereferenceable(24) %80)
  invoke void @__cxa_end_catch()
          to label %.critedge unwind label %97

97:                                               ; preds = %95
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  %100 = extractvalue { ptr, i32 } %98, 1
  br label %175

101:                                              ; preds = %64, %78, %84, %70
  %102 = getelementptr inbounds i8, ptr %0, i64 32
  %103 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.29)
          to label %104 unwind label %114

104:                                              ; preds = %101
  %.not126 = icmp eq ptr %103, null
  br i1 %.not126, label %116, label %105

105:                                              ; preds = %104
  %106 = getelementptr inbounds i8, ptr %0, i64 208
  %107 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %108 unwind label %114

108:                                              ; preds = %105
  call void @_ZN4urdf11JointLimitsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107)
  invoke void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef nonnull %107)
          to label %109 unwind label %114

109:                                              ; preds = %108
  %110 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt19__shared_ptr_accessIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %106) #8
  %111 = invoke noundef zeroext i1 @_ZN4urdf16parseJointLimitsERNS_11JointLimitsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull %103)
          to label %112 unwind label %114

112:                                              ; preds = %109
  br i1 %111, label %118, label %113

113:                                              ; preds = %112
  call void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  br label %.critedge

114:                                              ; preds = %109, %108, %105, %101
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %174

116:                                              ; preds = %104
  %117 = load i32, ptr %102, align 8, !tbaa !5
  switch i32 %117, label %118 [
    i32 1, label %.critedge
    i32 3, label %.critedge
  ]

118:                                              ; preds = %116, %112
  %119 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.30)
          to label %120 unwind label %130

120:                                              ; preds = %118
  %.not127 = icmp eq ptr %119, null
  br i1 %.not127, label %132, label %121

121:                                              ; preds = %120
  %122 = getelementptr inbounds i8, ptr %0, i64 224
  %123 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #9
          to label %124 unwind label %130

124:                                              ; preds = %121
  call void @_ZN4urdf11JointSafetyC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123)
  invoke void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %122, ptr noundef nonnull %123)
          to label %125 unwind label %130

125:                                              ; preds = %124
  %126 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt19__shared_ptr_accessIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %122) #8
  %127 = invoke noundef zeroext i1 @_ZN4urdf16parseJointSafetyERNS_11JointSafetyEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull %119)
          to label %128 unwind label %130

128:                                              ; preds = %125
  br i1 %127, label %132, label %129

129:                                              ; preds = %128
  call void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %122) #8
  br label %.critedge

130:                                              ; preds = %125, %124, %121, %118
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %174

132:                                              ; preds = %128, %120
  %133 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.31)
          to label %134 unwind label %144

134:                                              ; preds = %132
  %.not128 = icmp eq ptr %133, null
  br i1 %.not128, label %146, label %135

135:                                              ; preds = %134
  %136 = getelementptr inbounds i8, ptr %0, i64 240
  %137 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #9
          to label %138 unwind label %144

138:                                              ; preds = %135
  call void @_ZN4urdf16JointCalibrationC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %137)
  invoke void @_ZNSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef nonnull %137)
          to label %139 unwind label %144

139:                                              ; preds = %138
  %140 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt19__shared_ptr_accessIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %136) #8
  %141 = invoke noundef zeroext i1 @_ZN4urdf21parseJointCalibrationERNS_16JointCalibrationEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(40) %140, ptr noundef nonnull %133)
          to label %142 unwind label %144

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

143:                                              ; preds = %142
  call void @_ZNSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %136) #8
  br label %.critedge

144:                                              ; preds = %139, %138, %135, %132
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %174

146:                                              ; preds = %142, %134
  %147 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.32)
          to label %148 unwind label %158

148:                                              ; preds = %146
  %.not129 = icmp eq ptr %147, null
  br i1 %.not129, label %160, label %149

149:                                              ; preds = %148
  %150 = getelementptr inbounds i8, ptr %0, i64 256
  %151 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
          to label %152 unwind label %158

152:                                              ; preds = %149
  call void @_ZN4urdf10JointMimicC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %151)
  invoke void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull %151)
          to label %153 unwind label %158

153:                                              ; preds = %152
  %154 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt19__shared_ptr_accessIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %150) #8
  %155 = invoke noundef zeroext i1 @_ZN4urdf15parseJointMimicERNS_10JointMimicEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(48) %154, ptr noundef nonnull %147)
          to label %156 unwind label %158

156:                                              ; preds = %153
  br i1 %155, label %160, label %157

157:                                              ; preds = %156
  call void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  br label %.critedge

158:                                              ; preds = %153, %152, %149, %146
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %174

160:                                              ; preds = %156, %148
  %161 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull @.str.33)
          to label %162 unwind label %172

162:                                              ; preds = %160
  %.not130 = icmp eq ptr %161, null
  br i1 %.not130, label %.critedge, label %163

163:                                              ; preds = %162
  %164 = getelementptr inbounds i8, ptr %0, i64 192
  %165 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #9
          to label %166 unwind label %172

166:                                              ; preds = %163
  call void @_ZN4urdf13JointDynamicsC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %165)
  invoke void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull %165)
          to label %167 unwind label %172

167:                                              ; preds = %166
  %168 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt19__shared_ptr_accessIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %164) #8
  %169 = invoke noundef zeroext i1 @_ZN4urdf18parseJointDynamicsERNS_13JointDynamicsEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(16) %168, ptr noundef nonnull %161)
          to label %170 unwind label %172

170:                                              ; preds = %167
  br i1 %169, label %.critedge, label %171

171:                                              ; preds = %170
  call void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %164) #8
  br label %.critedge

172:                                              ; preds = %167, %166, %163, %160
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %174

174:                                              ; preds = %130, %158, %172, %144, %114
  %.pn131.pn.pn.pn = phi { ptr, i32 } [ %115, %114 ], [ %131, %130 ], [ %145, %144 ], [ %173, %172 ], [ %159, %158 ]
  %.685 = extractvalue { ptr, i32 } %.pn131.pn.pn.pn, 0
  %.695 = extractvalue { ptr, i32 } %.pn131.pn.pn.pn, 1
  br label %175

.critedge:                                        ; preds = %95, %113, %116, %116, %143, %171, %170, %162, %157, %129, %62
  %.6 = phi i1 [ false, %62 ], [ false, %113 ], [ false, %116 ], [ false, %116 ], [ false, %129 ], [ false, %143 ], [ false, %157 ], [ false, %171 ], [ true, %170 ], [ true, %162 ], [ false, %95 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %180

175:                                              ; preds = %72, %92, %97, %174
  %.796 = phi i32 [ %.695, %174 ], [ %100, %97 ], [ %.190, %92 ], [ %75, %72 ]
  %.786 = phi ptr [ %.685, %174 ], [ %99, %97 ], [ %.180, %92 ], [ %74, %72 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %176

176:                                              ; preds = %175, %50
  %.897 = phi i32 [ %.796, %175 ], [ %53, %50 ]
  %.887 = phi ptr [ %.786, %175 ], [ %52, %50 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %177

177:                                              ; preds = %41, %176, %29
  %.1099 = phi i32 [ %32, %29 ], [ %.897, %176 ], [ %44, %41 ]
  %.10 = phi ptr [ %31, %29 ], [ %.887, %176 ], [ %43, %41 ]
  %178 = insertvalue { ptr, i32 } poison, ptr %.10, 0
  %179 = insertvalue { ptr, i32 } %178, i32 %.1099, 1
  resume { ptr, i32 } %179

180:                                              ; preds = %20, %45, %.critedge, %2
  %.9 = phi i1 [ false, %2 ], [ false, %20 ], [ %.6, %.critedge ], [ false, %45 ]
  ret i1 %.9
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) local_unnamed_addr #0 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

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

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

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

; 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 #5 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) #7

; 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 #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #5 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetIS1_EENSt9enable_ifIXsr21__sp_is_constructibleIS1_T_EE5valueEvE4typeEPS7_(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 #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 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 = { 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 #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }

!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, !16, i64 64, !7, i64 72, !7, i64 104, !17, i64 136, !19, i64 192, !22, i64 208, !24, i64 224, !26, i64 240, !28, i64 256, !30, i64 272}
!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 = !{!"int", !10, i64 0}
!17 = !{!"_ZTSN4urdf4PoseE", !14, i64 0, !18, i64 24}
!18 = !{!"_ZTSN4urdf8RotationE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!19 = !{!"_ZTSSt10shared_ptrIN4urdf13JointDynamicsEE", !20, i64 0}
!20 = !{!"_ZTSSt12__shared_ptrIN4urdf13JointDynamicsELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !21, i64 8}
!21 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0}
!22 = !{!"_ZTSSt10shared_ptrIN4urdf11JointLimitsEE", !23, i64 0}
!23 = !{!"_ZTSSt12__shared_ptrIN4urdf11JointLimitsELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !21, i64 8}
!24 = !{!"_ZTSSt10shared_ptrIN4urdf11JointSafetyEE", !25, i64 0}
!25 = !{!"_ZTSSt12__shared_ptrIN4urdf11JointSafetyELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !21, i64 8}
!26 = !{!"_ZTSSt10shared_ptrIN4urdf16JointCalibrationEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN4urdf16JointCalibrationELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !21, i64 8}
!28 = !{!"_ZTSSt10shared_ptrIN4urdf10JointMimicEE", !29, i64 0}
!29 = !{!"_ZTSSt12__shared_ptrIN4urdf10JointMimicELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !21, i64 8}
!30 = !{!"_ZTSSt8weak_ptrIN4urdf4LinkEE", !31, i64 0}
!31 = !{!"_ZTSSt10__weak_ptrIN4urdf4LinkELN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0, !32, i64 8}
!32 = !{!"_ZTSSt12__weak_countILN9__gnu_cxx12_Lock_policyE2EE", !9, i64 0}
!33 = !{i64 0, i64 8, !34, i64 8, i64 8, !34, i64 16, i64 8, !34}
!34 = !{!15, !15, i64 0}


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