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

; 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.my_shared_ptr = type { ptr, ptr }
%class.TiXmlDocument = type <{ %class.TiXmlNode, i8, [3 x i8], i32, %class.TiXmlString, i32, %struct.TiXmlCursor, i8, [3 x i8] }>
%class.TiXmlNode = type { %class.TiXmlBase, ptr, i32, ptr, ptr, %class.TiXmlString, ptr, ptr }
%class.TiXmlBase = type { ptr, %struct.TiXmlCursor, ptr }
%class.TiXmlString = type { ptr }
%struct.TiXmlCursor = type { i32, i32 }
%"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.10" = type { i8 }
%class.my_shared_ptr.14 = type { ptr, ptr }
%"struct.std::pair.15" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.14 }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%class.my_shared_ptr.13 = type { ptr, ptr }
%class.my_shared_ptr.39 = type { ptr, ptr }
%"struct.std::pair.45" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.13 }
%"struct.std::pair.41" = type <{ %"struct.std::_Rb_tree_iterator.43", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.43" = type { ptr }
%class.my_shared_ptr.28 = type { ptr, ptr }
%class.my_shared_ptr.52 = type { ptr, ptr }
%"struct.std::pair.57" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.28 }
%"struct.std::pair.53" = type <{ %"struct.std::_Rb_tree_iterator.55", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.55" = type { ptr }
%"class.std::map.59" = type { %"class.std::_Rb_tree.60" }
%"class.std::_Rb_tree.60" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.urdf::ModelInterface" = type { %"class.std::map", %"class.std::map.0", %"class.std::map.5", %"class.std::__cxx11::basic_string", %class.my_shared_ptr.13, i32, i32 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Link>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Link>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Link>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Link>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.0" = type { %"class.std::_Rb_tree.1" }
%"class.std::_Rb_tree.1" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Joint>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Joint>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Joint>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Joint>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.5" = type { %"class.std::_Rb_tree.6" }
%"class.std::_Rb_tree.6" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Material>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Material>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Material>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, my_shared_ptr<urdf::Material>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.urdf::Material" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.urdf::Color" }
%"class.urdf::Color" = type { float, float, float, float }
%"class.urdf::Link" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.17, %class.my_shared_ptr.18, %class.my_shared_ptr.19, %"class.std::vector", %"class.std::vector.23", %class.my_shared_ptr.28, %"class.std::vector.29", %"class.std::vector.34", i32, ptr }
%class.my_shared_ptr.17 = type { ptr, ptr }
%class.my_shared_ptr.18 = type { ptr, ptr }
%class.my_shared_ptr.19 = type { ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Collision>, std::allocator<my_shared_ptr<urdf::Collision>>>::_Vector_impl" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Collision>, std::allocator<my_shared_ptr<urdf::Collision>>>::_Vector_impl" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Collision>, std::allocator<my_shared_ptr<urdf::Collision>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Collision>, std::allocator<my_shared_ptr<urdf::Collision>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Visual>, std::allocator<my_shared_ptr<urdf::Visual>>>::_Vector_impl" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Visual>, std::allocator<my_shared_ptr<urdf::Visual>>>::_Vector_impl" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Visual>, std::allocator<my_shared_ptr<urdf::Visual>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Visual>, std::allocator<my_shared_ptr<urdf::Visual>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Joint>, std::allocator<my_shared_ptr<urdf::Joint>>>::_Vector_impl" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Joint>, std::allocator<my_shared_ptr<urdf::Joint>>>::_Vector_impl" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Joint>, std::allocator<my_shared_ptr<urdf::Joint>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Joint>, std::allocator<my_shared_ptr<urdf::Joint>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Link>, std::allocator<my_shared_ptr<urdf::Link>>>::_Vector_impl" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Link>, std::allocator<my_shared_ptr<urdf::Link>>>::_Vector_impl" = type { %"struct.std::_Vector_base<my_shared_ptr<urdf::Link>, std::allocator<my_shared_ptr<urdf::Link>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<my_shared_ptr<urdf::Link>, std::allocator<my_shared_ptr<urdf::Link>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.urdf::Visual" = type { %"class.urdf::Pose", %class.my_shared_ptr.40, %"class.std::__cxx11::basic_string", %class.my_shared_ptr.14, %"class.std::__cxx11::basic_string" }
%"class.urdf::Pose" = type { %"class.urdf::Vector3", %"class.urdf::Rotation" }
%"class.urdf::Vector3" = type { double, double, double }
%"class.urdf::Rotation" = type { double, double, double, double }
%class.my_shared_ptr.40 = type { ptr, ptr }
%"class.urdf::Joint" = type { %"class.std::__cxx11::basic_string", i32, %"class.urdf::Vector3", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.urdf::Pose", %class.my_shared_ptr.47, %class.my_shared_ptr.48, %class.my_shared_ptr.49, %class.my_shared_ptr.50, %class.my_shared_ptr.51 }
%class.my_shared_ptr.47 = type { ptr, ptr }
%class.my_shared_ptr.48 = type { ptr, ptr }
%class.my_shared_ptr.49 = type { ptr, ptr }
%class.my_shared_ptr.50 = type { ptr, ptr }
%class.my_shared_ptr.51 = type { ptr, ptr }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.6 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4urdf9parseURDFERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr) align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %class.TiXmlDocument, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.10", align 1
  %14 = alloca ptr, align 8
  %15 = alloca %class.my_shared_ptr.14, align 8
  %16 = alloca %class.my_shared_ptr.14, align 8
  %17 = alloca %"struct.std::pair.15", align 8
  %18 = alloca %"struct.std::pair", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %class.my_shared_ptr.13, align 8
  %22 = alloca %class.my_shared_ptr.39, align 8
  %23 = alloca %class.my_shared_ptr.14, align 8
  %24 = alloca %class.my_shared_ptr.14, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.10", align 1
  %27 = alloca %"struct.std::pair.15", align 8
  %28 = alloca %"struct.std::pair", align 8
  %29 = alloca %"struct.std::pair.45", align 8
  %30 = alloca %"struct.std::pair.41", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %class.my_shared_ptr.28, align 8
  %34 = alloca %class.my_shared_ptr.52, align 8
  %35 = alloca %"struct.std::pair.57", align 8
  %36 = alloca %"struct.std::pair.53", align 8
  %37 = alloca %"class.std::map.59", align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  store i1 false, ptr %5, align 1
  %40 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #10
  invoke void @_ZN4urdf14ModelInterfaceC2Ev(ptr noundef nonnull align 8 dereferenceable(200) %40)
          to label %41 unwind label %58

41:                                               ; preds = %2
  call void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %40)
  %42 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %43 unwind label %62

43:                                               ; preds = %41
  invoke void @_ZN4urdf14ModelInterface5clearEv(ptr noundef nonnull align 8 dereferenceable(200) %42)
          to label %44 unwind label %62

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 112, ptr %8) #11
  invoke void @_ZN13TiXmlDocumentC1Ev(ptr noundef nonnull align 8 dereferenceable(109) %8)
          to label %45 unwind label %66

45:                                               ; preds = %44
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %46) #11
  %48 = invoke noundef ptr @_ZN13TiXmlDocument5ParseEPKcP16TiXmlParsingData13TiXmlEncoding(ptr noundef nonnull align 8 dereferenceable(109) %8, ptr noundef %47, ptr noundef null, i32 noundef 0)
          to label %49 unwind label %70

49:                                               ; preds = %45
  %50 = invoke noundef zeroext i1 @_ZNK13TiXmlDocument5ErrorEv(ptr noundef nonnull align 8 dereferenceable(109) %8)
          to label %51 unwind label %70

51:                                               ; preds = %49
  br i1 %50, label %52, label %74

52:                                               ; preds = %51
  %53 = invoke noundef ptr @_ZNK13TiXmlDocument9ErrorDescEv(ptr noundef nonnull align 8 dereferenceable(109) %8)
          to label %54 unwind label %70

54:                                               ; preds = %52
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef %53, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %55 unwind label %70

55:                                               ; preds = %54
  invoke void @_ZN13TiXmlDocument10ClearErrorEv(ptr noundef nonnull align 8 dereferenceable(109) %8)
          to label %56 unwind label %70

56:                                               ; preds = %55
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %57 unwind label %70

57:                                               ; preds = %56
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %731

58:                                               ; preds = %2
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %6, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %40, i64 noundef 200) #12
  br label %738

62:                                               ; preds = %43, %41
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %6, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %7, align 4
  br label %737

66:                                               ; preds = %44
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %6, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %7, align 4
  br label %734

70:                                               ; preds = %56, %55, %54, %52, %49, %45
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %6, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %7, align 4
  br label %733

74:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #11
  %75 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef @.str.1)
          to label %76 unwind label %82

76:                                               ; preds = %74
  store ptr %75, ptr %10, align 8, !tbaa !5
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = icmp ne ptr %77, null
  br i1 %78, label %86, label %79

79:                                               ; preds = %76
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %80 unwind label %82

80:                                               ; preds = %79
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %81 unwind label %82

81:                                               ; preds = %80
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %729

82:                                               ; preds = %80, %79, %74
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %6, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %7, align 4
  br label %730

86:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %87, ptr noundef @.str.3)
          to label %89 unwind label %95

89:                                               ; preds = %86
  store ptr %88, ptr %11, align 8, !tbaa !5
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = icmp ne ptr %90, null
  br i1 %91, label %99, label %92

92:                                               ; preds = %89
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %93 unwind label %95

93:                                               ; preds = %92
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %94 unwind label %95

94:                                               ; preds = %93
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %727

95:                                               ; preds = %546, %545, %540, %93, %92, %86
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %6, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %7, align 4
  br label %728

99:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #11
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %100, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %101 unwind label %113

101:                                              ; preds = %99
  %102 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %103 unwind label %117

103:                                              ; preds = %101
  %104 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %102, i32 0, i32 3
  %105 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %106 = load ptr, ptr %10, align 8, !tbaa !5
  %107 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %106, ptr noundef @.str.5)
          to label %108 unwind label %122

108:                                              ; preds = %103
  store ptr %107, ptr %14, align 8, !tbaa !5
  br label %109

109:                                              ; preds = %235, %108
  %110 = load ptr, ptr %14, align 8, !tbaa !5
  %111 = icmp ne ptr %110, null
  br i1 %111, label %126, label %112

112:                                              ; preds = %109
  store i32 2, ptr %9, align 4
  br label %238

113:                                              ; preds = %99
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %6, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %7, align 4
  br label %121

117:                                              ; preds = %101
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %6, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  br label %121

121:                                              ; preds = %117, %113
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #11
  br label %728

122:                                              ; preds = %232, %103
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %6, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %7, align 4
  br label %240

126:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #11
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %127 unwind label %153

127:                                              ; preds = %126
  %128 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #10
          to label %129 unwind label %157

129:                                              ; preds = %127
  invoke void @_ZN4urdf8MaterialC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %128)
          to label %130 unwind label %161

130:                                              ; preds = %129
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %128)
          to label %131 unwind label %157

131:                                              ; preds = %130
  %132 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK13my_shared_ptrIN4urdf8MaterialEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %133 unwind label %165

133:                                              ; preds = %131
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = invoke noundef zeroext i1 @_ZN4urdf13parseMaterialERNS_8MaterialEP12TiXmlElementb(ptr noundef nonnull align 8 dereferenceable(80) %132, ptr noundef %134, i1 noundef zeroext false)
          to label %136 unwind label %165

136:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #11
  %137 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %138 unwind label %169

138:                                              ; preds = %136
  %139 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %140 unwind label %169

140:                                              ; preds = %138
  %141 = getelementptr inbounds %"class.urdf::Material", ptr %139, i32 0, i32 0
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.my_shared_ptr.14) align 8 %16, ptr noundef nonnull align 8 dereferenceable(200) %137, ptr noundef nonnull align 8 dereferenceable(32) %141)
          to label %142 unwind label %169

142:                                              ; preds = %140
  %143 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %144 unwind label %173

144:                                              ; preds = %142
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  br i1 %143, label %145, label %178

145:                                              ; preds = %144
  %146 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %147 unwind label %165

147:                                              ; preds = %145
  %148 = getelementptr inbounds %"class.urdf::Material", ptr %146, i32 0, i32 0
  %149 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %148) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.6, ptr noundef %149, ptr noundef @.str, ptr noundef @.str)
          to label %150 unwind label %165

150:                                              ; preds = %147
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef null)
          to label %151 unwind label %165

151:                                              ; preds = %150
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %152 unwind label %165

152:                                              ; preds = %151
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %229

153:                                              ; preds = %126
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %6, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %7, align 4
  br label %237

157:                                              ; preds = %130, %127
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %6, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %7, align 4
  br label %236

161:                                              ; preds = %129
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %6, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %128, i64 noundef 80) #12
  br label %236

165:                                              ; preds = %193, %187, %178, %151, %150, %147, %145, %133, %131
  %166 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %6, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %7, align 4
  br label %206

169:                                              ; preds = %140, %138, %136
  %170 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %6, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %7, align 4
  br label %177

173:                                              ; preds = %142
  %174 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %6, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %7, align 4
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #11
  br label %177

177:                                              ; preds = %173, %169
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  br label %206

178:                                              ; preds = %144
  %179 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %180 unwind label %165

180:                                              ; preds = %178
  %181 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %179, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 48, ptr %17) #11
  %182 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %183 unwind label %197

183:                                              ; preds = %180
  %184 = getelementptr inbounds %"class.urdf::Material", ptr %182, i32 0, i32 0
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind writable sret(%"struct.std::pair.15") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %184, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %185 unwind label %197

185:                                              ; preds = %183
  %186 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %181, ptr noundef nonnull align 8 dereferenceable(48) %17)
          to label %187 unwind label %201

187:                                              ; preds = %185
  %188 = getelementptr inbounds { ptr, i8 }, ptr %18, i32 0, i32 0
  %189 = extractvalue { ptr, i8 } %186, 0
  store ptr %189, ptr %188, align 8
  %190 = getelementptr inbounds { ptr, i8 }, ptr %18, i32 0, i32 1
  %191 = extractvalue { ptr, i8 } %186, 1
  store i8 %191, ptr %190, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %17) #11
  %192 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %193 unwind label %165

193:                                              ; preds = %187
  %194 = getelementptr inbounds %"class.urdf::Material", ptr %192, i32 0, i32 0
  %195 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %194) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.7, ptr noundef %195, ptr noundef @.str)
          to label %196 unwind label %165

196:                                              ; preds = %193
  br label %216

197:                                              ; preds = %183, %180
  %198 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %6, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %7, align 4
  br label %205

201:                                              ; preds = %185
  %202 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %6, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %7, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #11
  br label %205

205:                                              ; preds = %201, %197
  call void @llvm.lifetime.end.p0(i64 48, ptr %17) #11
  br label %206

206:                                              ; preds = %205, %177, %165
  %207 = load i32, ptr %7, align 4
  %208 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #11
  %209 = icmp eq i32 %207, %208
  br i1 %209, label %210, label %236

210:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %211 = load ptr, ptr %6, align 8
  %212 = call ptr @__cxa_begin_catch(ptr %211) #11
  store ptr %212, ptr %19, align 8
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.8, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %213 unwind label %217

213:                                              ; preds = %210
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef null)
          to label %214 unwind label %217

214:                                              ; preds = %213
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %215 unwind label %217

215:                                              ; preds = %214
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  invoke void @__cxa_end_catch()
          to label %221 unwind label %222

216:                                              ; preds = %196
  br label %228

217:                                              ; preds = %214, %213, %210
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %6, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %226 unwind label %743

221:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %229

222:                                              ; preds = %215
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %6, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %7, align 4
  br label %227

226:                                              ; preds = %217
  br label %227

227:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %236

228:                                              ; preds = %216
  store i32 0, ptr %9, align 4
  br label %229

229:                                              ; preds = %228, %221, %152
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #11
  %230 = load i32, ptr %9, align 4
  switch i32 %230, label %238 [
    i32 0, label %231
  ]

231:                                              ; preds = %229
  br label %232

232:                                              ; preds = %231
  %233 = load ptr, ptr %14, align 8, !tbaa !5
  %234 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %233, ptr noundef @.str.5)
          to label %235 unwind label %122

235:                                              ; preds = %232
  store ptr %234, ptr %14, align 8, !tbaa !5
  br label %109, !llvm.loop !9

236:                                              ; preds = %227, %206, %161, %157
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #11
  br label %237

237:                                              ; preds = %236, %153
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #11
  br label %240

238:                                              ; preds = %229, %112
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  %239 = load i32, ptr %9, align 4
  switch i32 %239, label %727 [
    i32 2, label %241
  ]

240:                                              ; preds = %237, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  br label %728

241:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  %242 = load ptr, ptr %10, align 8, !tbaa !5
  %243 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %242, ptr noundef @.str.9)
          to label %244 unwind label %249

244:                                              ; preds = %241
  store ptr %243, ptr %20, align 8, !tbaa !5
  br label %245

245:                                              ; preds = %534, %244
  %246 = load ptr, ptr %20, align 8, !tbaa !5
  %247 = icmp ne ptr %246, null
  br i1 %247, label %253, label %248

248:                                              ; preds = %245
  store i32 5, ptr %9, align 4
  br label %537

249:                                              ; preds = %531, %241
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %6, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %7, align 4
  br label %539

253:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #11
  invoke void @_ZN13my_shared_ptrIN4urdf4LinkEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %254 unwind label %284

254:                                              ; preds = %253
  %255 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 208) #10
          to label %256 unwind label %288

256:                                              ; preds = %254
  invoke void @_ZN4urdf4LinkC2Ev(ptr noundef nonnull align 8 dereferenceable(208) %255)
          to label %257 unwind label %292

257:                                              ; preds = %256
  invoke void @_ZN13my_shared_ptrIN4urdf4LinkEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef %255)
          to label %258 unwind label %288

258:                                              ; preds = %257
  %259 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %260 unwind label %288

260:                                              ; preds = %258
  %261 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %259, i32 0, i32 5
  %262 = load i32, ptr %261, align 8, !tbaa !11
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %261, align 8, !tbaa !11
  %264 = invoke noundef nonnull align 8 dereferenceable(208) ptr @_ZNK13my_shared_ptrIN4urdf4LinkEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %265 unwind label %296

265:                                              ; preds = %260
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  %267 = invoke noundef zeroext i1 @_ZN4urdf9parseLinkERNS_4LinkEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(208) %264, ptr noundef %266)
          to label %268 unwind label %296

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #11
  %269 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %270 unwind label %300

270:                                              ; preds = %268
  %271 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %272 unwind label %300

272:                                              ; preds = %270
  %273 = getelementptr inbounds %"class.urdf::Link", ptr %271, i32 0, i32 0
  invoke void @_ZNK4urdf14ModelInterface7getLinkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.my_shared_ptr.39) align 8 %22, ptr noundef nonnull align 8 dereferenceable(200) %269, ptr noundef nonnull align 8 dereferenceable(32) %273)
          to label %274 unwind label %300

274:                                              ; preds = %272
  %275 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf4LinkEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %276 unwind label %304

276:                                              ; preds = %274
  call void @_ZN13my_shared_ptrIKN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  br i1 %275, label %277, label %309

277:                                              ; preds = %276
  %278 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %279 unwind label %296

279:                                              ; preds = %277
  %280 = getelementptr inbounds %"class.urdf::Link", ptr %278, i32 0, i32 0
  %281 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %280) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.10, ptr noundef %281, ptr noundef @.str, ptr noundef @.str)
          to label %282 unwind label %296

282:                                              ; preds = %279
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %283 unwind label %296

283:                                              ; preds = %282
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %528

284:                                              ; preds = %253
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %6, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %7, align 4
  br label %536

288:                                              ; preds = %258, %257, %254
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %6, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %7, align 4
  br label %535

292:                                              ; preds = %256
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %6, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %255, i64 noundef 208) #12
  br label %535

296:                                              ; preds = %493, %487, %478, %473, %470, %467, %463, %461, %426, %423, %420, %416, %414, %410, %407, %405, %349, %346, %342, %340, %322, %320, %316, %314, %311, %309, %282, %279, %277, %265, %260
  %297 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %6, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %7, align 4
  br label %506

300:                                              ; preds = %272, %270, %268
  %301 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %6, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %7, align 4
  br label %308

304:                                              ; preds = %274
  %305 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %6, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %7, align 4
  call void @_ZN13my_shared_ptrIKN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #11
  br label %308

308:                                              ; preds = %304, %300
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  br label %506

309:                                              ; preds = %276
  %310 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %311 unwind label %296

311:                                              ; preds = %309
  %312 = getelementptr inbounds %"class.urdf::Link", ptr %310, i32 0, i32 0
  %313 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %312) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.11, ptr noundef %313, ptr noundef @.str)
          to label %314 unwind label %296

314:                                              ; preds = %311
  %315 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %316 unwind label %296

316:                                              ; preds = %314
  %317 = getelementptr inbounds %"class.urdf::Link", ptr %315, i32 0, i32 2
  %318 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf6VisualEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %317)
          to label %319 unwind label %296

319:                                              ; preds = %316
  br i1 %318, label %320, label %478

320:                                              ; preds = %319
  %321 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %322 unwind label %296

322:                                              ; preds = %320
  %323 = getelementptr inbounds %"class.urdf::Link", ptr %321, i32 0, i32 2
  %324 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %323)
          to label %325 unwind label %296

325:                                              ; preds = %322
  %326 = getelementptr inbounds %"class.urdf::Visual", ptr %324, i32 0, i32 2
  %327 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %326) #11
  br i1 %327, label %477, label %328

328:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #11
  %329 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %330 unwind label %372

330:                                              ; preds = %328
  %331 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %332 unwind label %372

332:                                              ; preds = %330
  %333 = getelementptr inbounds %"class.urdf::Link", ptr %331, i32 0, i32 2
  %334 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %333)
          to label %335 unwind label %372

335:                                              ; preds = %332
  %336 = getelementptr inbounds %"class.urdf::Visual", ptr %334, i32 0, i32 2
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.my_shared_ptr.14) align 8 %23, ptr noundef nonnull align 8 dereferenceable(200) %329, ptr noundef nonnull align 8 dereferenceable(32) %336)
          to label %337 unwind label %372

337:                                              ; preds = %335
  %338 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %339 unwind label %376

339:                                              ; preds = %337
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #11
  br i1 %338, label %340, label %405

340:                                              ; preds = %339
  %341 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %342 unwind label %296

342:                                              ; preds = %340
  %343 = getelementptr inbounds %"class.urdf::Link", ptr %341, i32 0, i32 0
  %344 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %343) #11
  %345 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %346 unwind label %296

346:                                              ; preds = %342
  %347 = getelementptr inbounds %"class.urdf::Link", ptr %345, i32 0, i32 2
  %348 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
          to label %349 unwind label %296

349:                                              ; preds = %346
  %350 = getelementptr inbounds %"class.urdf::Visual", ptr %348, i32 0, i32 2
  %351 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %350) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.12, ptr noundef %344, ptr noundef %351)
          to label %352 unwind label %296

352:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #11
  %353 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %354 unwind label %381

354:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #11
  %355 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %356 unwind label %385

356:                                              ; preds = %354
  %357 = getelementptr inbounds %"class.urdf::Link", ptr %355, i32 0, i32 2
  %358 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %357)
          to label %359 unwind label %385

359:                                              ; preds = %356
  %360 = getelementptr inbounds %"class.urdf::Visual", ptr %358, i32 0, i32 2
  %361 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %360) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %361, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %362 unwind label %389

362:                                              ; preds = %359
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.my_shared_ptr.14) align 8 %24, ptr noundef nonnull align 8 dereferenceable(200) %353, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %363 unwind label %393

363:                                              ; preds = %362
  %364 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %365 unwind label %397

365:                                              ; preds = %363
  %366 = getelementptr inbounds %"class.urdf::Link", ptr %364, i32 0, i32 2
  %367 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %366)
          to label %368 unwind label %397

368:                                              ; preds = %365
  %369 = getelementptr inbounds %"class.urdf::Visual", ptr %367, i32 0, i32 3
  %370 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %371 unwind label %397

371:                                              ; preds = %368
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  br label %476

372:                                              ; preds = %335, %332, %330, %328
  %373 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %6, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %7, align 4
  br label %380

376:                                              ; preds = %337
  %377 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %6, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %7, align 4
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #11
  br label %380

380:                                              ; preds = %376, %372
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #11
  br label %506

381:                                              ; preds = %352
  %382 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %6, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %7, align 4
  br label %404

385:                                              ; preds = %356, %354
  %386 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %6, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %7, align 4
  br label %403

389:                                              ; preds = %359
  %390 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %6, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %7, align 4
  br label %402

393:                                              ; preds = %362
  %394 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %6, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %7, align 4
  br label %401

397:                                              ; preds = %368, %365, %363
  %398 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %6, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %7, align 4
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #11
  br label %401

401:                                              ; preds = %397, %393
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  br label %402

402:                                              ; preds = %401, %389
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #11
  br label %403

403:                                              ; preds = %402, %385
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #11
  br label %404

404:                                              ; preds = %403, %381
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  br label %506

405:                                              ; preds = %339
  %406 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %407 unwind label %296

407:                                              ; preds = %405
  %408 = getelementptr inbounds %"class.urdf::Link", ptr %406, i32 0, i32 2
  %409 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %408)
          to label %410 unwind label %296

410:                                              ; preds = %407
  %411 = getelementptr inbounds %"class.urdf::Visual", ptr %409, i32 0, i32 3
  %412 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %411)
          to label %413 unwind label %296

413:                                              ; preds = %410
  br i1 %412, label %414, label %461

414:                                              ; preds = %413
  %415 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %416 unwind label %296

416:                                              ; preds = %414
  %417 = getelementptr inbounds %"class.urdf::Link", ptr %415, i32 0, i32 0
  %418 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %417) #11
  %419 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %420 unwind label %296

420:                                              ; preds = %416
  %421 = getelementptr inbounds %"class.urdf::Link", ptr %419, i32 0, i32 2
  %422 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %421)
          to label %423 unwind label %296

423:                                              ; preds = %420
  %424 = getelementptr inbounds %"class.urdf::Visual", ptr %422, i32 0, i32 2
  %425 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %424) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.13, ptr noundef %418, ptr noundef %425)
          to label %426 unwind label %296

426:                                              ; preds = %423
  %427 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %428 unwind label %296

428:                                              ; preds = %426
  %429 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %427, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #11
  %430 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %431 unwind label %452

431:                                              ; preds = %428
  %432 = getelementptr inbounds %"class.urdf::Link", ptr %430, i32 0, i32 2
  %433 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %432)
          to label %434 unwind label %452

434:                                              ; preds = %431
  %435 = getelementptr inbounds %"class.urdf::Visual", ptr %433, i32 0, i32 3
  %436 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %435)
          to label %437 unwind label %452

437:                                              ; preds = %434
  %438 = getelementptr inbounds %"class.urdf::Material", ptr %436, i32 0, i32 0
  %439 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %440 unwind label %452

440:                                              ; preds = %437
  %441 = getelementptr inbounds %"class.urdf::Link", ptr %439, i32 0, i32 2
  %442 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %441)
          to label %443 unwind label %452

443:                                              ; preds = %440
  %444 = getelementptr inbounds %"class.urdf::Visual", ptr %442, i32 0, i32 3
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind writable sret(%"struct.std::pair.15") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %438, ptr noundef nonnull align 8 dereferenceable(16) %444)
          to label %445 unwind label %452

445:                                              ; preds = %443
  %446 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %429, ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %447 unwind label %456

447:                                              ; preds = %445
  %448 = getelementptr inbounds { ptr, i8 }, ptr %28, i32 0, i32 0
  %449 = extractvalue { ptr, i8 } %446, 0
  store ptr %449, ptr %448, align 8
  %450 = getelementptr inbounds { ptr, i8 }, ptr %28, i32 0, i32 1
  %451 = extractvalue { ptr, i8 } %446, 1
  store i8 %451, ptr %450, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #11
  br label %475

452:                                              ; preds = %443, %440, %437, %434, %431, %428
  %453 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %6, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %7, align 4
  br label %460

456:                                              ; preds = %445
  %457 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %6, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %7, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #11
  br label %460

460:                                              ; preds = %456, %452
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #11
  br label %506

461:                                              ; preds = %413
  %462 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %463 unwind label %296

463:                                              ; preds = %461
  %464 = getelementptr inbounds %"class.urdf::Link", ptr %462, i32 0, i32 0
  %465 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %464) #11
  %466 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %467 unwind label %296

467:                                              ; preds = %463
  %468 = getelementptr inbounds %"class.urdf::Link", ptr %466, i32 0, i32 2
  %469 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %468)
          to label %470 unwind label %296

470:                                              ; preds = %467
  %471 = getelementptr inbounds %"class.urdf::Visual", ptr %469, i32 0, i32 2
  %472 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %471) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.14, ptr noundef %465, ptr noundef %472, ptr noundef @.str)
          to label %473 unwind label %296

473:                                              ; preds = %470
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %474 unwind label %296

474:                                              ; preds = %473
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %528

475:                                              ; preds = %447
  br label %476

476:                                              ; preds = %475, %371
  br label %477

477:                                              ; preds = %476, %325
  br label %478

478:                                              ; preds = %477, %319
  %479 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %480 unwind label %296

480:                                              ; preds = %478
  %481 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %479, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #11
  %482 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %483 unwind label %497

483:                                              ; preds = %480
  %484 = getelementptr inbounds %"class.urdf::Link", ptr %482, i32 0, i32 0
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf4LinkEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind writable sret(%"struct.std::pair.45") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %484, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %485 unwind label %497

485:                                              ; preds = %483
  %486 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %481, ptr noundef nonnull align 8 dereferenceable(48) %29)
          to label %487 unwind label %501

487:                                              ; preds = %485
  %488 = getelementptr inbounds { ptr, i8 }, ptr %30, i32 0, i32 0
  %489 = extractvalue { ptr, i8 } %486, 0
  store ptr %489, ptr %488, align 8
  %490 = getelementptr inbounds { ptr, i8 }, ptr %30, i32 0, i32 1
  %491 = extractvalue { ptr, i8 } %486, 1
  store i8 %491, ptr %490, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #11
  %492 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %493 unwind label %296

493:                                              ; preds = %487
  %494 = getelementptr inbounds %"class.urdf::Link", ptr %492, i32 0, i32 0
  %495 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %494) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.15, ptr noundef %495, ptr noundef @.str)
          to label %496 unwind label %296

496:                                              ; preds = %493
  br label %515

497:                                              ; preds = %483, %480
  %498 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %6, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %7, align 4
  br label %505

501:                                              ; preds = %485
  %502 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %6, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %7, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %29) #11
  br label %505

505:                                              ; preds = %501, %497
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #11
  br label %506

506:                                              ; preds = %505, %460, %404, %380, %308, %296
  %507 = load i32, ptr %7, align 4
  %508 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #11
  %509 = icmp eq i32 %507, %508
  br i1 %509, label %510, label %535

510:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  %511 = load ptr, ptr %6, align 8
  %512 = call ptr @__cxa_begin_catch(ptr %511) #11
  store ptr %512, ptr %31, align 8
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.16, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %513 unwind label %516

513:                                              ; preds = %510
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %514 unwind label %516

514:                                              ; preds = %513
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  invoke void @__cxa_end_catch()
          to label %520 unwind label %521

515:                                              ; preds = %496
  br label %527

516:                                              ; preds = %513, %510
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %6, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %525 unwind label %743

520:                                              ; preds = %514
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %528

521:                                              ; preds = %514
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %6, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %7, align 4
  br label %526

525:                                              ; preds = %516
  br label %526

526:                                              ; preds = %525, %521
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %535

527:                                              ; preds = %515
  store i32 0, ptr %9, align 4
  br label %528

528:                                              ; preds = %527, %520, %474, %283
  call void @_ZN13my_shared_ptrIN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  %529 = load i32, ptr %9, align 4
  switch i32 %529, label %537 [
    i32 0, label %530
  ]

530:                                              ; preds = %528
  br label %531

531:                                              ; preds = %530
  %532 = load ptr, ptr %20, align 8, !tbaa !5
  %533 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %532, ptr noundef @.str.9)
          to label %534 unwind label %249

534:                                              ; preds = %531
  store ptr %533, ptr %20, align 8, !tbaa !5
  br label %245, !llvm.loop !32

535:                                              ; preds = %526, %506, %292, %288
  call void @_ZN13my_shared_ptrIN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #11
  br label %536

536:                                              ; preds = %535, %284
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  br label %539

537:                                              ; preds = %528, %248
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  %538 = load i32, ptr %9, align 4
  switch i32 %538, label %727 [
    i32 5, label %540
  ]

539:                                              ; preds = %536, %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  br label %728

540:                                              ; preds = %537
  %541 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %542 unwind label %95

542:                                              ; preds = %540
  %543 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %541, i32 0, i32 0
  %544 = call noundef zeroext i1 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %543) #11
  br i1 %544, label %545, label %548

545:                                              ; preds = %542
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.17, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %546 unwind label %95

546:                                              ; preds = %545
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %547 unwind label %95

547:                                              ; preds = %546
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %727

548:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %549 = load ptr, ptr %10, align 8, !tbaa !5
  %550 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %549, ptr noundef @.str.18)
          to label %551 unwind label %556

551:                                              ; preds = %548
  store ptr %550, ptr %32, align 8, !tbaa !5
  br label %552

552:                                              ; preds = %652, %551
  %553 = load ptr, ptr %32, align 8, !tbaa !5
  %554 = icmp ne ptr %553, null
  br i1 %554, label %560, label %555

555:                                              ; preds = %552
  store i32 8, ptr %9, align 4
  br label %655

556:                                              ; preds = %649, %548
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %6, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %7, align 4
  br label %657

560:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #11
  invoke void @_ZN13my_shared_ptrIN4urdf5JointEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %561 unwind label %592

561:                                              ; preds = %560
  %562 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 264) #10
          to label %563 unwind label %596

563:                                              ; preds = %561
  invoke void @_ZN4urdf5JointC2Ev(ptr noundef nonnull align 8 dereferenceable(264) %562)
          to label %564 unwind label %600

564:                                              ; preds = %563
  invoke void @_ZN13my_shared_ptrIN4urdf5JointEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef %562)
          to label %565 unwind label %596

565:                                              ; preds = %564
  %566 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %567 unwind label %596

567:                                              ; preds = %565
  %568 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %566, i32 0, i32 6
  %569 = load i32, ptr %568, align 4, !tbaa !33
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %568, align 4, !tbaa !33
  %571 = invoke noundef nonnull align 8 dereferenceable(264) ptr @_ZNK13my_shared_ptrIN4urdf5JointEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %572 unwind label %596

572:                                              ; preds = %567
  %573 = load ptr, ptr %32, align 8, !tbaa !5
  %574 = invoke noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264) %571, ptr noundef %573)
          to label %575 unwind label %596

575:                                              ; preds = %572
  br i1 %574, label %576, label %642

576:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #11
  %577 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %578 unwind label %604

578:                                              ; preds = %576
  %579 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %580 unwind label %604

580:                                              ; preds = %578
  %581 = getelementptr inbounds %"class.urdf::Joint", ptr %579, i32 0, i32 0
  invoke void @_ZNK4urdf14ModelInterface8getJointERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.my_shared_ptr.52) align 8 %34, ptr noundef nonnull align 8 dereferenceable(200) %577, ptr noundef nonnull align 8 dereferenceable(32) %581)
          to label %582 unwind label %604

582:                                              ; preds = %580
  %583 = invoke noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf5JointEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %584 unwind label %608

584:                                              ; preds = %582
  call void @_ZN13my_shared_ptrIKN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #11
  br i1 %583, label %585, label %613

585:                                              ; preds = %584
  %586 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %587 unwind label %596

587:                                              ; preds = %585
  %588 = getelementptr inbounds %"class.urdf::Joint", ptr %586, i32 0, i32 0
  %589 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %588) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.19, ptr noundef %589, ptr noundef @.str, ptr noundef @.str)
          to label %590 unwind label %596

590:                                              ; preds = %587
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %591 unwind label %596

591:                                              ; preds = %590
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %646

592:                                              ; preds = %560
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %6, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %7, align 4
  br label %654

596:                                              ; preds = %643, %642, %628, %622, %613, %590, %587, %585, %572, %567, %565, %564, %561
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %6, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %7, align 4
  br label %653

600:                                              ; preds = %563
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %6, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %562, i64 noundef 264) #12
  br label %653

604:                                              ; preds = %580, %578, %576
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %6, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %7, align 4
  br label %612

608:                                              ; preds = %582
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %6, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %7, align 4
  call void @_ZN13my_shared_ptrIKN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #11
  br label %612

612:                                              ; preds = %608, %604
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #11
  br label %653

613:                                              ; preds = %584
  %614 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %615 unwind label %596

615:                                              ; preds = %613
  %616 = getelementptr inbounds %"class.urdf::ModelInterface", ptr %614, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #11
  %617 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %618 unwind label %632

618:                                              ; preds = %615
  %619 = getelementptr inbounds %"class.urdf::Joint", ptr %617, i32 0, i32 0
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf5JointEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind writable sret(%"struct.std::pair.57") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %619, ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %620 unwind label %632

620:                                              ; preds = %618
  %621 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %616, ptr noundef nonnull align 8 dereferenceable(48) %35)
          to label %622 unwind label %636

622:                                              ; preds = %620
  %623 = getelementptr inbounds { ptr, i8 }, ptr %36, i32 0, i32 0
  %624 = extractvalue { ptr, i8 } %621, 0
  store ptr %624, ptr %623, align 8
  %625 = getelementptr inbounds { ptr, i8 }, ptr %36, i32 0, i32 1
  %626 = extractvalue { ptr, i8 } %621, 1
  store i8 %626, ptr %625, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #11
  %627 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %628 unwind label %596

628:                                              ; preds = %622
  %629 = getelementptr inbounds %"class.urdf::Joint", ptr %627, i32 0, i32 0
  %630 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %629) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef @.str.20, ptr noundef %630, ptr noundef @.str)
          to label %631 unwind label %596

631:                                              ; preds = %628
  br label %641

632:                                              ; preds = %618, %615
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %6, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %7, align 4
  br label %640

636:                                              ; preds = %620
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %6, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %7, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #11
  br label %640

640:                                              ; preds = %636, %632
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #11
  br label %653

641:                                              ; preds = %631
  br label %645

642:                                              ; preds = %575
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.21, ptr noundef @.str, ptr noundef @.str, ptr noundef @.str)
          to label %643 unwind label %596

643:                                              ; preds = %642
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %644 unwind label %596

644:                                              ; preds = %643
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %646

645:                                              ; preds = %641
  store i32 0, ptr %9, align 4
  br label %646

646:                                              ; preds = %645, %644, %591
  call void @_ZN13my_shared_ptrIN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  %647 = load i32, ptr %9, align 4
  switch i32 %647, label %655 [
    i32 0, label %648
  ]

648:                                              ; preds = %646
  br label %649

649:                                              ; preds = %648
  %650 = load ptr, ptr %32, align 8, !tbaa !5
  %651 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %650, ptr noundef @.str.18)
          to label %652 unwind label %556

652:                                              ; preds = %649
  store ptr %651, ptr %32, align 8, !tbaa !5
  br label %552, !llvm.loop !34

653:                                              ; preds = %640, %612, %600, %596
  call void @_ZN13my_shared_ptrIN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #11
  br label %654

654:                                              ; preds = %653, %592
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  br label %657

655:                                              ; preds = %646, %555
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  %656 = load i32, ptr %9, align 4
  switch i32 %656, label %727 [
    i32 8, label %658
  ]

657:                                              ; preds = %654, %556
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  br label %728

658:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 48, ptr %37) #11
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  %659 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %660 unwind label %662

660:                                              ; preds = %658
  invoke void @_ZN4urdf14ModelInterface8initTreeERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_St4lessIS7_ESaISt4pairIKS7_S7_EEE(ptr noundef nonnull align 8 dereferenceable(200) %659, ptr noundef nonnull align 8 dereferenceable(48) %37)
          to label %661 unwind label %662

661:                                              ; preds = %660
  br label %691

662:                                              ; preds = %660, %658
  %663 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %6, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %7, align 4
  br label %666

666:                                              ; preds = %662
  %667 = load i32, ptr %7, align 4
  %668 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #11
  %669 = icmp eq i32 %667, %668
  br i1 %669, label %670, label %726

670:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %671 = load ptr, ptr %6, align 8
  %672 = call ptr @__cxa_begin_catch(ptr %671) #11
  store ptr %672, ptr %38, align 8
  %673 = load ptr, ptr %38, align 8, !tbaa !5
  %674 = load ptr, ptr %673, align 8, !tbaa !35
  %675 = getelementptr inbounds ptr, ptr %674, i64 2
  %676 = load ptr, ptr %675, align 8
  %677 = call noundef ptr %676(ptr noundef nonnull align 8 dereferenceable(16) %673) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.22, ptr noundef %677, ptr noundef @.str, ptr noundef @.str)
          to label %678 unwind label %680

678:                                              ; preds = %670
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %679 unwind label %680

679:                                              ; preds = %678
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  invoke void @__cxa_end_catch()
          to label %684 unwind label %685

680:                                              ; preds = %678, %670
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %6, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %689 unwind label %743

684:                                              ; preds = %679
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %725

685:                                              ; preds = %679
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %6, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %7, align 4
  br label %690

689:                                              ; preds = %680
  br label %690

690:                                              ; preds = %689, %685
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %726

691:                                              ; preds = %661
  %692 = invoke noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %693 unwind label %695

693:                                              ; preds = %691
  invoke void @_ZN4urdf14ModelInterface8initRootERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_St4lessIS7_ESaISt4pairIKS7_S7_EEE(ptr noundef nonnull align 8 dereferenceable(200) %692, ptr noundef nonnull align 8 dereferenceable(48) %37)
          to label %694 unwind label %695

694:                                              ; preds = %693
  br label %724

695:                                              ; preds = %693, %691
  %696 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %6, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %7, align 4
  br label %699

699:                                              ; preds = %695
  %700 = load i32, ptr %7, align 4
  %701 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTIN4urdf10ParseErrorE) #11
  %702 = icmp eq i32 %700, %701
  br i1 %702, label %703, label %726

703:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %704 = load ptr, ptr %6, align 8
  %705 = call ptr @__cxa_begin_catch(ptr %704) #11
  store ptr %705, ptr %39, align 8
  %706 = load ptr, ptr %39, align 8, !tbaa !5
  %707 = load ptr, ptr %706, align 8, !tbaa !35
  %708 = getelementptr inbounds ptr, ptr %707, i64 2
  %709 = load ptr, ptr %708, align 8
  %710 = call noundef ptr %709(ptr noundef nonnull align 8 dereferenceable(16) %706) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef @.str.23, ptr noundef %710, ptr noundef @.str, ptr noundef @.str)
          to label %711 unwind label %713

711:                                              ; preds = %703
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %712 unwind label %713

712:                                              ; preds = %711
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  invoke void @__cxa_end_catch()
          to label %717 unwind label %718

713:                                              ; preds = %711, %703
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %6, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %7, align 4
  invoke void @__cxa_end_catch()
          to label %722 unwind label %743

717:                                              ; preds = %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %725

718:                                              ; preds = %712
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %6, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %7, align 4
  br label %723

722:                                              ; preds = %713
  br label %723

723:                                              ; preds = %722, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %726

724:                                              ; preds = %694
  store i1 true, ptr %5, align 1
  store i32 1, ptr %9, align 4
  br label %725

725:                                              ; preds = %724, %717, %684
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %37) #11
  br label %727

726:                                              ; preds = %723, %699, %690, %666
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %37) #11
  br label %728

727:                                              ; preds = %725, %655, %547, %537, %238, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  br label %729

728:                                              ; preds = %726, %657, %539, %240, %121, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  br label %730

729:                                              ; preds = %727, %81
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  br label %731

730:                                              ; preds = %728, %82
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  br label %733

731:                                              ; preds = %729, %57
  call void @_ZN13TiXmlDocumentD2Ev(ptr noundef nonnull align 8 dereferenceable(109) %8) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr %8) #11
  %732 = load i1, ptr %5, align 1
  br i1 %732, label %736, label %735

733:                                              ; preds = %730, %70
  call void @_ZN13TiXmlDocumentD2Ev(ptr noundef nonnull align 8 dereferenceable(109) %8) #11
  br label %734

734:                                              ; preds = %733, %66
  call void @llvm.lifetime.end.p0(i64 112, ptr %8) #11
  br label %737

735:                                              ; preds = %731
  call void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #11
  br label %736

736:                                              ; preds = %735, %731
  ret void

737:                                              ; preds = %734, %62
  call void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #11
  br label %738

738:                                              ; preds = %737, %58
  %739 = load ptr, ptr %6, align 8
  %740 = load i32, ptr %7, align 4
  %741 = insertvalue { ptr, i32 } poison, ptr %739, 0
  %742 = insertvalue { ptr, i32 } %741, i32 %740, 1
  resume { ptr, i32 } %742

743:                                              ; preds = %713, %680, %516, %217
  %744 = landingpad { ptr, i32 }
          catch ptr null
  %745 = extractvalue { ptr, i32 } %744, 0
  call void @__clang_call_terminate(ptr %745) #13
  unreachable
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare void @_ZN13TiXmlDocumentC1Ev(ptr noundef nonnull align 8 dereferenceable(109)) unnamed_addr #6

declare noundef ptr @_ZN13TiXmlDocument5ParseEPKcP16TiXmlParsingData13TiXmlEncoding(ptr noundef nonnull align 8 dereferenceable(109), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf13parseMaterialERNS_8MaterialEP12TiXmlElementb(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i1 noundef zeroext) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.14) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.15") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) #0

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

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

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

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf9parseLinkERNS_4LinkEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(208), ptr noundef) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface7getLinkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.39) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf4LinkEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.45") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) #0

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface8getJointERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.52) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf5JointEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.57") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) #0

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 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 = { 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 #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "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 = { nounwind memory(none) }
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 = { builtin allocsize(0) }
attributes #11 = { nounwind }
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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !31, i64 192}
!12 = !{!"_ZTSN4urdf14ModelInterfaceE", !13, i64 0, !22, i64 48, !25, i64 96, !28, i64 144, !30, i64 176, !31, i64 192, !31, i64 196}
!13 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf4LinkEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf4LinkEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !21, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf5JointEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf5JointEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !16, i64 0, !18, i64 8}
!25 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf8MaterialEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf8MaterialEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !16, i64 0, !18, i64 8}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !29, i64 0, !21, i64 8, !7, i64 16}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!30 = !{!"_ZTS13my_shared_ptrIN4urdf4LinkEE", !6, i64 0, !6, i64 8}
!31 = !{!"int", !7, i64 0}
!32 = distinct !{!32, !10}
!33 = !{!12, !31, i64 196}
!34 = distinct !{!34, !10}
!35 = !{!36, !36, i64 0}
!36 = !{!"vtable pointer", !8, i64 0}


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

%class.my_shared_ptr = type { ptr, ptr }
%class.TiXmlDocument = type <{ %class.TiXmlNode, i8, [3 x i8], i32, %class.TiXmlString, i32, %struct.TiXmlCursor, i8, [3 x i8] }>
%class.TiXmlNode = type { %class.TiXmlBase, ptr, i32, ptr, ptr, %class.TiXmlString, ptr, ptr }
%class.TiXmlBase = type { ptr, %struct.TiXmlCursor, ptr }
%class.TiXmlString = type { ptr }
%struct.TiXmlCursor = type { i32, i32 }
%"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.10" = type { i8 }
%class.my_shared_ptr.14 = type { ptr, ptr }
%"struct.std::pair.15" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.14 }
%class.my_shared_ptr.13 = type { ptr, ptr }
%class.my_shared_ptr.39 = type { ptr, ptr }
%"struct.std::pair.45" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.13 }
%class.my_shared_ptr.28 = type { ptr, ptr }
%class.my_shared_ptr.52 = type { ptr, ptr }
%"struct.std::pair.57" = type { %"class.std::__cxx11::basic_string", %class.my_shared_ptr.28 }
%"class.std::map.59" = type { %"class.std::_Rb_tree.60" }
%"class.std::_Rb_tree.60" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@_ZTIN4urdf10ParseErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.6 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4urdf9parseURDFERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr) align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.TiXmlDocument, align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.10", align 1
  %6 = alloca %class.my_shared_ptr.14, align 8
  %7 = alloca %class.my_shared_ptr.14, align 8
  %8 = alloca %"struct.std::pair.15", align 8
  %9 = alloca %class.my_shared_ptr.13, align 8
  %10 = alloca %class.my_shared_ptr.39, align 8
  %11 = alloca %class.my_shared_ptr.14, align 8
  %12 = alloca %class.my_shared_ptr.14, align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.10", align 1
  %15 = alloca %"struct.std::pair.15", align 8
  %16 = alloca %"struct.std::pair.45", align 8
  %17 = alloca %class.my_shared_ptr.28, align 8
  %18 = alloca %class.my_shared_ptr.52, align 8
  %19 = alloca %"struct.std::pair.57", align 8
  %20 = alloca %"class.std::map.59", align 8
  %21 = tail call noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #10
  invoke void @_ZN4urdf14ModelInterfaceC2Ev(ptr noundef nonnull align 8 dereferenceable(200) %21)
          to label %22 unwind label %35

22:                                               ; preds = %2
  tail call void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull %21)
  %23 = tail call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  invoke void @_ZN4urdf14ModelInterface5clearEv(ptr noundef nonnull align 8 dereferenceable(200) %23)
          to label %24 unwind label %39

24:                                               ; preds = %22
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %3) #11
  invoke void @_ZN13TiXmlDocumentC1Ev(ptr noundef nonnull align 8 dereferenceable(109) %3)
          to label %25 unwind label %43

25:                                               ; preds = %24
  %26 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #11
  %27 = invoke noundef ptr @_ZN13TiXmlDocument5ParseEPKcP16TiXmlParsingData13TiXmlEncoding(ptr noundef nonnull align 8 dereferenceable(109) %3, ptr noundef %26, ptr noundef null, i32 noundef 0)
          to label %28 unwind label %47

28:                                               ; preds = %25
  %29 = call noundef zeroext i1 @_ZNK13TiXmlDocument5ErrorEv(ptr noundef nonnull align 8 dereferenceable(109) %3)
  br i1 %29, label %30, label %51

30:                                               ; preds = %28
  %31 = invoke noundef ptr @_ZNK13TiXmlDocument9ErrorDescEv(ptr noundef nonnull align 8 dereferenceable(109) %3)
          to label %32 unwind label %47

32:                                               ; preds = %30
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef %31, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %33 unwind label %47

33:                                               ; preds = %32
  invoke void @_ZN13TiXmlDocument10ClearErrorEv(ptr noundef nonnull align 8 dereferenceable(109) %3)
          to label %34 unwind label %47

34:                                               ; preds = %33
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %.critedge unwind label %47

35:                                               ; preds = %2
  %36 = landingpad { ptr, i32 }
          cleanup
  %37 = extractvalue { ptr, i32 } %36, 0
  %38 = extractvalue { ptr, i32 } %36, 1
  tail call void @_ZdlPvm(ptr noundef nonnull %21, i64 noundef 200) #12
  br label %382

39:                                               ; preds = %22
  %40 = landingpad { ptr, i32 }
          cleanup
  %41 = extractvalue { ptr, i32 } %40, 0
  %42 = extractvalue { ptr, i32 } %40, 1
  br label %381

43:                                               ; preds = %24
  %44 = landingpad { ptr, i32 }
          cleanup
  %45 = extractvalue { ptr, i32 } %44, 0
  %46 = extractvalue { ptr, i32 } %44, 1
  br label %379

47:                                               ; preds = %34, %33, %32, %30, %25
  %48 = landingpad { ptr, i32 }
          cleanup
  %49 = extractvalue { ptr, i32 } %48, 0
  %50 = extractvalue { ptr, i32 } %48, 1
  br label %378

51:                                               ; preds = %28
  %52 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %3, ptr noundef nonnull @.str.1)
          to label %53 unwind label %56

53:                                               ; preds = %51
  %.not = icmp eq ptr %52, null
  br i1 %.not, label %54, label %60

54:                                               ; preds = %53
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %55 unwind label %56

55:                                               ; preds = %54
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %.critedge unwind label %56

56:                                               ; preds = %55, %54, %51
  %57 = landingpad { ptr, i32 }
          cleanup
  %58 = extractvalue { ptr, i32 } %57, 0
  %59 = extractvalue { ptr, i32 } %57, 1
  br label %378

60:                                               ; preds = %53
  %61 = invoke noundef ptr @_ZNK12TiXmlElement9AttributeEPKc(ptr noundef nonnull align 8 dereferenceable(144) %52, ptr noundef nonnull @.str.3)
          to label %62 unwind label %63

62:                                               ; preds = %60
  %.not96 = icmp eq ptr %61, null
  br i1 %.not96, label %.invoke250, label %67

63:                                               ; preds = %.invoke250, %.invoke, %60
  %64 = landingpad { ptr, i32 }
          cleanup
  %65 = extractvalue { ptr, i32 } %64, 0
  %66 = extractvalue { ptr, i32 } %64, 1
  br label %378

67:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %61, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %68 unwind label %73

68:                                               ; preds = %67
  %69 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %70 = getelementptr inbounds i8, ptr %69, i64 144
  %71 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %4) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #11
  %72 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %52, ptr noundef nonnull @.str.5)
          to label %.preheader159 unwind label %.loopexit.split-lp166

.preheader159:                                    ; preds = %68, %134
  %.090 = phi ptr [ %135, %134 ], [ %72, %68 ]
  %.not97 = icmp eq ptr %.090, null
  br i1 %.not97, label %138, label %80

73:                                               ; preds = %67
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  %76 = extractvalue { ptr, i32 } %74, 1
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #11
  br label %378

.loopexit165:                                     ; preds = %134
  %lpad.loopexit167 = landingpad { ptr, i32 }
          cleanup
  br label %77

.loopexit.split-lp166:                            ; preds = %68
  %lpad.loopexit.split-lp168 = landingpad { ptr, i32 }
          cleanup
  br label %77

77:                                               ; preds = %.loopexit.split-lp166, %.loopexit165
  %lpad.phi169 = phi { ptr, i32 } [ %lpad.loopexit167, %.loopexit165 ], [ %lpad.loopexit.split-lp168, %.loopexit.split-lp166 ]
  %78 = extractvalue { ptr, i32 } %lpad.phi169, 0
  %79 = extractvalue { ptr, i32 } %lpad.phi169, 1
  br label %378

80:                                               ; preds = %.preheader159
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #11
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %81 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #10
          to label %82 unwind label %97

82:                                               ; preds = %80
  invoke void @_ZN4urdf8MaterialC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %81)
          to label %83 unwind label %101

83:                                               ; preds = %82
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull %81)
          to label %84 unwind label %97

84:                                               ; preds = %83
  %85 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK13my_shared_ptrIN4urdf8MaterialEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %86 = invoke noundef zeroext i1 @_ZN4urdf13parseMaterialERNS_8MaterialEP12TiXmlElementb(ptr noundef nonnull align 8 dereferenceable(80) %85, ptr noundef nonnull %.090, i1 noundef zeroext false)
          to label %87 unwind label %.loopexit160

87:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #11
  %88 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %89 = call noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.my_shared_ptr.14) align 8 %7, ptr noundef nonnull align 8 dereferenceable(200) %88, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %90 unwind label %105

90:                                               ; preds = %87
  %91 = call noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  br i1 %91, label %92, label %107

92:                                               ; preds = %90
  %93 = call noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %94 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %93) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.6, ptr noundef %94, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %95 unwind label %.loopexit.split-lp161

95:                                               ; preds = %92
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef null)
          to label %96 unwind label %.loopexit.split-lp161

96:                                               ; preds = %95
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %137 unwind label %.loopexit.split-lp161

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

101:                                              ; preds = %82
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  %104 = extractvalue { ptr, i32 } %102, 1
  call void @_ZdlPvm(ptr noundef nonnull %81, i64 noundef 80) #12
  br label %136

.loopexit160:                                     ; preds = %84, %113
  %lpad.loopexit162 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %121

.loopexit.split-lp161:                            ; preds = %92, %95, %96
  %lpad.loopexit.split-lp163 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %121

105:                                              ; preds = %87
  %106 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  br label %121

107:                                              ; preds = %90
  %108 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) #11
  %109 = call noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.15") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %110 unwind label %116

110:                                              ; preds = %107
  %111 = getelementptr inbounds i8, ptr %108, i64 96
  %112 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %111, ptr noundef nonnull align 8 dereferenceable(48) %8)
          to label %113 unwind label %118

113:                                              ; preds = %110
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #11
  %114 = call noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %115 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %114) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.7, ptr noundef %115, ptr noundef nonnull @.str)
          to label %134 unwind label %.loopexit160

116:                                              ; preds = %107
  %117 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %120

118:                                              ; preds = %110
  %119 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #11
  br label %120

120:                                              ; preds = %118, %116
  %.pn = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #11
  br label %121

121:                                              ; preds = %.loopexit160, %.loopexit.split-lp161, %120, %105
  %.pn99 = phi { ptr, i32 } [ %.pn, %120 ], [ %106, %105 ], [ %lpad.loopexit162, %.loopexit160 ], [ %lpad.loopexit.split-lp163, %.loopexit.split-lp161 ]
  %.147 = extractvalue { ptr, i32 } %.pn99, 0
  %.160 = extractvalue { ptr, i32 } %.pn99, 1
  %122 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #11
  %123 = icmp eq i32 %.160, %122
  br i1 %123, label %124, label %136

124:                                              ; preds = %121
  %125 = call ptr @__cxa_begin_catch(ptr %.147) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %126 unwind label %129

126:                                              ; preds = %124
  invoke void @_ZN13my_shared_ptrIN4urdf8MaterialEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef null)
          to label %127 unwind label %129

127:                                              ; preds = %126
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %128 unwind label %129

128:                                              ; preds = %127
  invoke void @__cxa_end_catch()
          to label %137 unwind label %131

129:                                              ; preds = %127, %126, %124
  %130 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %133 unwind label %385

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

133:                                              ; preds = %129, %131
  %.pn101 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  %.248 = extractvalue { ptr, i32 } %.pn101, 0
  %.261 = extractvalue { ptr, i32 } %.pn101, 1
  br label %136

134:                                              ; preds = %113
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  %135 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %.090, ptr noundef nonnull @.str.5)
          to label %.preheader159 unwind label %.loopexit165, !llvm.loop !5

136:                                              ; preds = %133, %121, %101, %97
  %.362 = phi i32 [ %.261, %133 ], [ %.160, %121 ], [ %100, %97 ], [ %104, %101 ]
  %.349 = phi ptr [ %.248, %133 ], [ %.147, %121 ], [ %99, %97 ], [ %103, %101 ]
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  br label %378

137:                                              ; preds = %96, %128
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  br label %377

138:                                              ; preds = %.preheader159
  %139 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %52, ptr noundef nonnull @.str.9)
          to label %.preheader148 unwind label %.loopexit.split-lp155

.preheader148:                                    ; preds = %138, %279
  %.091 = phi ptr [ %280, %279 ], [ %139, %138 ]
  %.not103 = icmp eq ptr %.091, null
  br i1 %.not103, label %283, label %143

.loopexit154:                                     ; preds = %279
  %lpad.loopexit156 = landingpad { ptr, i32 }
          cleanup
  br label %140

.loopexit.split-lp155:                            ; preds = %138
  %lpad.loopexit.split-lp157 = landingpad { ptr, i32 }
          cleanup
  br label %140

140:                                              ; preds = %.loopexit.split-lp155, %.loopexit154
  %lpad.phi158 = phi { ptr, i32 } [ %lpad.loopexit156, %.loopexit154 ], [ %lpad.loopexit.split-lp157, %.loopexit.split-lp155 ]
  %141 = extractvalue { ptr, i32 } %lpad.phi158, 0
  %142 = extractvalue { ptr, i32 } %lpad.phi158, 1
  br label %378

143:                                              ; preds = %.preheader148
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #11
  call void @_ZN13my_shared_ptrIN4urdf4LinkEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %144 = invoke noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #10
          to label %145 unwind label %162

145:                                              ; preds = %143
  invoke void @_ZN4urdf4LinkC2Ev(ptr noundef nonnull align 8 dereferenceable(208) %144)
          to label %146 unwind label %166

146:                                              ; preds = %145
  invoke void @_ZN13my_shared_ptrIN4urdf4LinkEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull %144)
          to label %147 unwind label %162

147:                                              ; preds = %146
  %148 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %149 = getelementptr inbounds i8, ptr %148, i64 192
  %150 = load i32, ptr %149, align 8, !tbaa !7
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %149, align 8, !tbaa !7
  %152 = call noundef nonnull align 8 dereferenceable(208) ptr @_ZNK13my_shared_ptrIN4urdf4LinkEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %153 = invoke noundef zeroext i1 @_ZN4urdf9parseLinkERNS_4LinkEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(208) %152, ptr noundef nonnull %.091)
          to label %154 unwind label %.loopexit149

154:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  %155 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %156 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  invoke void @_ZNK4urdf14ModelInterface7getLinkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.my_shared_ptr.39) align 8 %10, ptr noundef nonnull align 8 dereferenceable(200) %155, ptr noundef nonnull align 8 dereferenceable(32) %156)
          to label %157 unwind label %170

157:                                              ; preds = %154
  %158 = call noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf4LinkEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  call void @_ZN13my_shared_ptrIKN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  %159 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %160 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %159) #11
  br i1 %158, label %161, label %172

161:                                              ; preds = %157
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.10, ptr noundef %160, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %.invoke248 unwind label %.loopexit.split-lp150

.invoke248:                                       ; preds = %161, %253
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %282 unwind label %.loopexit.split-lp150

162:                                              ; preds = %146, %143
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  %165 = extractvalue { ptr, i32 } %163, 1
  br label %281

166:                                              ; preds = %145
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  %169 = extractvalue { ptr, i32 } %167, 1
  call void @_ZdlPvm(ptr noundef nonnull %144, i64 noundef 208) #12
  br label %281

.loopexit149:                                     ; preds = %147, %172, %192, %232, %259
  %lpad.loopexit151 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %267

.loopexit.split-lp150:                            ; preds = %.invoke248, %161, %253
  %lpad.loopexit.split-lp152 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %267

170:                                              ; preds = %154
  %171 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  br label %267

172:                                              ; preds = %157
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.11, ptr noundef %160, ptr noundef nonnull @.str)
          to label %173 unwind label %.loopexit149

173:                                              ; preds = %172
  %174 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %175 = getelementptr inbounds i8, ptr %174, i64 48
  %176 = call noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf6VisualEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %175)
  br i1 %176, label %177, label %254

177:                                              ; preds = %173
  %178 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %179 = getelementptr inbounds i8, ptr %178, i64 48
  %180 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %179)
  %181 = getelementptr inbounds i8, ptr %180, i64 72
  %182 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %181) #11
  br i1 %182, label %254, label %183

183:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #11
  %184 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %185 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %186 = getelementptr inbounds i8, ptr %185, i64 48
  %187 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %186)
  %188 = getelementptr inbounds i8, ptr %187, i64 72
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.my_shared_ptr.14) align 8 %11, ptr noundef nonnull align 8 dereferenceable(200) %184, ptr noundef nonnull align 8 dereferenceable(32) %188)
          to label %189 unwind label %213

189:                                              ; preds = %183
  %190 = call noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  %191 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  br i1 %190, label %192, label %220

192:                                              ; preds = %189
  %193 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %191) #11
  %194 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %195 = getelementptr inbounds i8, ptr %194, i64 48
  %196 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %195)
  %197 = getelementptr inbounds i8, ptr %196, i64 72
  %198 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %197) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.12, ptr noundef %193, ptr noundef %198)
          to label %199 unwind label %.loopexit149

199:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  %200 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #11
  %201 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %202 = getelementptr inbounds i8, ptr %201, i64 48
  %203 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %202)
  %204 = getelementptr inbounds i8, ptr %203, i64 72
  %205 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %204) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %205, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %206 unwind label %215

206:                                              ; preds = %199
  invoke void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.my_shared_ptr.14) align 8 %12, ptr noundef nonnull align 8 dereferenceable(200) %200, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %207 unwind label %217

207:                                              ; preds = %206
  %208 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %209 = getelementptr inbounds i8, ptr %208, i64 48
  %210 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
  %211 = getelementptr inbounds i8, ptr %210, i64 104
  %212 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef nonnull align 8 dereferenceable(16) %12)
  call void @_ZN13my_shared_ptrIN4urdf8MaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %254

213:                                              ; preds = %183
  %214 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  br label %267

215:                                              ; preds = %199
  %216 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %219

217:                                              ; preds = %206
  %218 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  br label %219

219:                                              ; preds = %217, %215
  %.pn106 = phi { ptr, i32 } [ %218, %217 ], [ %216, %215 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %267

220:                                              ; preds = %189
  %221 = getelementptr inbounds i8, ptr %191, i64 48
  %222 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
  %223 = getelementptr inbounds i8, ptr %222, i64 104
  %224 = call noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %223)
  %225 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %226 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %225) #11
  %227 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %228 = getelementptr inbounds i8, ptr %227, i64 48
  %229 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %228)
  %230 = getelementptr inbounds i8, ptr %229, i64 72
  %231 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %230) #11
  br i1 %224, label %232, label %253

232:                                              ; preds = %220
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.13, ptr noundef %226, ptr noundef %231)
          to label %233 unwind label %.loopexit149

233:                                              ; preds = %232
  %234 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #11
  %235 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %236 = getelementptr inbounds i8, ptr %235, i64 48
  %237 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %236)
  %238 = getelementptr inbounds i8, ptr %237, i64 104
  %239 = call noundef ptr @_ZN13my_shared_ptrIN4urdf8MaterialEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %238)
  %240 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %241 = getelementptr inbounds i8, ptr %240, i64 48
  %242 = call noundef ptr @_ZN13my_shared_ptrIN4urdf6VisualEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %241)
  %243 = getelementptr inbounds i8, ptr %242, i64 104
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.15") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull align 8 dereferenceable(16) %243)
          to label %244 unwind label %248

244:                                              ; preds = %233
  %245 = getelementptr inbounds i8, ptr %234, i64 96
  %246 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %245, ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %247 unwind label %250

247:                                              ; preds = %244
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #11
  br label %254

248:                                              ; preds = %233
  %249 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %252

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #11
  br label %252

252:                                              ; preds = %250, %248
  %.pn104 = phi { ptr, i32 } [ %251, %250 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #11
  br label %267

253:                                              ; preds = %220
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.14, ptr noundef %226, ptr noundef %231, ptr noundef nonnull @.str)
          to label %.invoke248 unwind label %.loopexit.split-lp150

254:                                              ; preds = %177, %247, %207, %173
  %255 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #11
  %256 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf4LinkEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.45") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %257 unwind label %262

257:                                              ; preds = %254
  %258 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %255, ptr noundef nonnull align 8 dereferenceable(48) %16)
          to label %259 unwind label %264

259:                                              ; preds = %257
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #11
  %260 = call noundef ptr @_ZN13my_shared_ptrIN4urdf4LinkEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
  %261 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %260) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.15, ptr noundef %261, ptr noundef nonnull @.str)
          to label %279 unwind label %.loopexit149

262:                                              ; preds = %254
  %263 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  br label %266

264:                                              ; preds = %257
  %265 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #11
  br label %266

266:                                              ; preds = %264, %262
  %.pn108 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #11
  br label %267

267:                                              ; preds = %.loopexit149, %.loopexit.split-lp150, %266, %252, %219, %213, %170
  %.pn110 = phi { ptr, i32 } [ %.pn108, %266 ], [ %.pn106, %219 ], [ %.pn104, %252 ], [ %214, %213 ], [ %171, %170 ], [ %lpad.loopexit151, %.loopexit149 ], [ %lpad.loopexit.split-lp152, %.loopexit.split-lp150 ]
  %.854 = extractvalue { ptr, i32 } %.pn110, 0
  %.867 = extractvalue { ptr, i32 } %.pn110, 1
  %268 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #11
  %269 = icmp eq i32 %.867, %268
  br i1 %269, label %270, label %281

270:                                              ; preds = %267
  %271 = call ptr @__cxa_begin_catch(ptr %.854) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %272 unwind label %274

272:                                              ; preds = %270
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %273 unwind label %274

273:                                              ; preds = %272
  invoke void @__cxa_end_catch()
          to label %282 unwind label %276

274:                                              ; preds = %272, %270
  %275 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %278 unwind label %385

276:                                              ; preds = %273
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %278

278:                                              ; preds = %274, %276
  %.pn112 = phi { ptr, i32 } [ %277, %276 ], [ %275, %274 ]
  %.955 = extractvalue { ptr, i32 } %.pn112, 0
  %.968 = extractvalue { ptr, i32 } %.pn112, 1
  br label %281

279:                                              ; preds = %259
  call void @_ZN13my_shared_ptrIN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11
  %280 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %.091, ptr noundef nonnull @.str.9)
          to label %.preheader148 unwind label %.loopexit154, !llvm.loop !31

281:                                              ; preds = %278, %267, %166, %162
  %.1069 = phi i32 [ %.968, %278 ], [ %.867, %267 ], [ %165, %162 ], [ %169, %166 ]
  %.1056 = phi ptr [ %.955, %278 ], [ %.854, %267 ], [ %164, %162 ], [ %168, %166 ]
  call void @_ZN13my_shared_ptrIN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11
  br label %378

282:                                              ; preds = %.invoke248, %273
  call void @_ZN13my_shared_ptrIN4urdf4LinkEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11
  br label %377

283:                                              ; preds = %.preheader148
  %284 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %285 = call noundef zeroext i1 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %284) #11
  br i1 %285, label %.invoke250, label %287

.invoke250:                                       ; preds = %62, %283
  %286 = phi ptr [ @.str.17, %283 ], [ @.str.4, %62 ]
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull %286, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %.invoke unwind label %63

.invoke:                                          ; preds = %.invoke250
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %.critedge unwind label %63

287:                                              ; preds = %283
  %288 = invoke noundef ptr @_ZN9TiXmlNode17FirstChildElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %52, ptr noundef nonnull @.str.18)
          to label %.preheader unwind label %.loopexit.split-lp144

.preheader:                                       ; preds = %287, %328
  %.089 = phi ptr [ %329, %328 ], [ %288, %287 ]
  %.not114 = icmp eq ptr %.089, null
  br i1 %.not114, label %333, label %289

.loopexit143:                                     ; preds = %328
  %lpad.loopexit145 = landingpad { ptr, i32 }
          cleanup
  br label %332

.loopexit.split-lp144:                            ; preds = %287
  %lpad.loopexit.split-lp146 = landingpad { ptr, i32 }
          cleanup
  br label %332

289:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #11
  call void @_ZN13my_shared_ptrIN4urdf5JointEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %290 = invoke noalias noundef nonnull dereferenceable(264) ptr @_Znwm(i64 noundef 264) #10
          to label %291 unwind label %.loopexit

291:                                              ; preds = %289
  invoke void @_ZN4urdf5JointC2Ev(ptr noundef nonnull align 8 dereferenceable(264) %290)
          to label %292 unwind label %309

292:                                              ; preds = %291
  invoke void @_ZN13my_shared_ptrIN4urdf5JointEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull %290)
          to label %293 unwind label %.loopexit

293:                                              ; preds = %292
  %294 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %295 = getelementptr inbounds i8, ptr %294, i64 196
  %296 = load i32, ptr %295, align 4, !tbaa !32
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %295, align 4, !tbaa !32
  %298 = call noundef nonnull align 8 dereferenceable(264) ptr @_ZNK13my_shared_ptrIN4urdf5JointEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %299 = invoke noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264) %298, ptr noundef nonnull %.089)
          to label %300 unwind label %.loopexit

300:                                              ; preds = %293
  br i1 %299, label %301, label %327

301:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #11
  %302 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %303 = call noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  invoke void @_ZNK4urdf14ModelInterface8getJointERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.my_shared_ptr.52) align 8 %18, ptr noundef nonnull align 8 dereferenceable(200) %302, ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %304 unwind label %311

304:                                              ; preds = %301
  %305 = call noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf5JointEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %18)
  call void @_ZN13my_shared_ptrIKN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #11
  br i1 %305, label %306, label %313

306:                                              ; preds = %304
  %307 = call noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %308 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %307) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.19, ptr noundef %308, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %.invoke249 unwind label %.loopexit.split-lp

.invoke249:                                       ; preds = %306, %327
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %331 unwind label %.loopexit.split-lp

.loopexit:                                        ; preds = %289, %292, %293, %319
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %330

.loopexit.split-lp:                               ; preds = %.invoke249, %306, %327
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %330

309:                                              ; preds = %291
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %290, i64 noundef 264) #12
  br label %330

311:                                              ; preds = %301
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #11
  br label %330

313:                                              ; preds = %304
  %314 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #11
  %315 = call noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  invoke void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf5JointEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.57") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %315, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %316 unwind label %322

316:                                              ; preds = %313
  %317 = getelementptr inbounds i8, ptr %314, i64 48
  %318 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48) %317, ptr noundef nonnull align 8 dereferenceable(48) %19)
          to label %319 unwind label %324

319:                                              ; preds = %316
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #11
  %320 = call noundef ptr @_ZN13my_shared_ptrIN4urdf5JointEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %321 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %320) #11
  invoke void @_Z8logDebugPKcS0_S0_(ptr noundef nonnull @.str.20, ptr noundef %321, ptr noundef nonnull @.str)
          to label %328 unwind label %.loopexit

322:                                              ; preds = %313
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %326

324:                                              ; preds = %316
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #11
  br label %326

326:                                              ; preds = %324, %322
  %.pn115 = phi { ptr, i32 } [ %325, %324 ], [ %323, %322 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #11
  br label %330

327:                                              ; preds = %300
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %.invoke249 unwind label %.loopexit.split-lp

328:                                              ; preds = %319
  call void @_ZN13my_shared_ptrIN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  %329 = invoke noundef ptr @_ZN9TiXmlNode18NextSiblingElementEPKc(ptr noundef nonnull align 8 dereferenceable(80) %.089, ptr noundef nonnull @.str.18)
          to label %.preheader unwind label %.loopexit143, !llvm.loop !33

330:                                              ; preds = %.loopexit, %.loopexit.split-lp, %326, %311, %309
  %.pn117 = phi { ptr, i32 } [ %.pn115, %326 ], [ %312, %311 ], [ %310, %309 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN13my_shared_ptrIN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  br label %332

331:                                              ; preds = %.invoke249
  call void @_ZN13my_shared_ptrIN4urdf5JointEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  br label %377

332:                                              ; preds = %.loopexit143, %.loopexit.split-lp144, %330
  %.pn123 = phi { ptr, i32 } [ %.pn117, %330 ], [ %lpad.loopexit145, %.loopexit143 ], [ %lpad.loopexit.split-lp146, %.loopexit.split-lp144 ]
  %.14 = extractvalue { ptr, i32 } %.pn123, 0
  %.1473 = extractvalue { ptr, i32 } %.pn123, 1
  br label %378

333:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #11
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #11
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %20) #11
  %334 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  invoke void @_ZN4urdf14ModelInterface8initTreeERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_St4lessIS7_ESaISt4pairIKS7_S7_EEE(ptr noundef nonnull align 8 dereferenceable(200) %334, ptr noundef nonnull align 8 dereferenceable(48) %20)
          to label %354 unwind label %335

335:                                              ; preds = %333
  %336 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %337 = extractvalue { ptr, i32 } %336, 0
  %338 = extractvalue { ptr, i32 } %336, 1
  %339 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #11
  %340 = icmp eq i32 %338, %339
  br i1 %340, label %341, label %376

341:                                              ; preds = %335
  %342 = call ptr @__cxa_begin_catch(ptr %337) #11
  %343 = load ptr, ptr %342, align 8, !tbaa !34
  %344 = getelementptr inbounds i8, ptr %343, i64 16
  %345 = load ptr, ptr %344, align 8
  %346 = call noundef ptr %345(ptr noundef nonnull align 8 dereferenceable(16) %342) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.22, ptr noundef %346, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %347 unwind label %349

347:                                              ; preds = %341
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %348 unwind label %349

348:                                              ; preds = %347
  invoke void @__cxa_end_catch()
          to label %375 unwind label %351

349:                                              ; preds = %347, %341
  %350 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %353 unwind label %385

351:                                              ; preds = %348
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %353

353:                                              ; preds = %349, %351
  %.pn119 = phi { ptr, i32 } [ %352, %351 ], [ %350, %349 ]
  %.15 = extractvalue { ptr, i32 } %.pn119, 0
  %.1574 = extractvalue { ptr, i32 } %.pn119, 1
  br label %376

354:                                              ; preds = %333
  %355 = call noundef ptr @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  invoke void @_ZN4urdf14ModelInterface8initRootERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_St4lessIS7_ESaISt4pairIKS7_S7_EEE(ptr noundef nonnull align 8 dereferenceable(200) %355, ptr noundef nonnull align 8 dereferenceable(48) %20)
          to label %375 unwind label %356

356:                                              ; preds = %354
  %357 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTIN4urdf10ParseErrorE
  %358 = extractvalue { ptr, i32 } %357, 0
  %359 = extractvalue { ptr, i32 } %357, 1
  %360 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN4urdf10ParseErrorE) #11
  %361 = icmp eq i32 %359, %360
  br i1 %361, label %362, label %376

362:                                              ; preds = %356
  %363 = call ptr @__cxa_begin_catch(ptr %358) #11
  %364 = load ptr, ptr %363, align 8, !tbaa !34
  %365 = getelementptr inbounds i8, ptr %364, i64 16
  %366 = load ptr, ptr %365, align 8
  %367 = call noundef ptr %366(ptr noundef nonnull align 8 dereferenceable(16) %363) #11
  invoke void @_Z8logErrorPKcS0_S0_S0_(ptr noundef nonnull @.str.23, ptr noundef %367, ptr noundef nonnull @.str, ptr noundef nonnull @.str)
          to label %368 unwind label %370

368:                                              ; preds = %362
  invoke void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEE5resetEPKS1_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef null)
          to label %369 unwind label %370

369:                                              ; preds = %368
  invoke void @__cxa_end_catch()
          to label %375 unwind label %372

370:                                              ; preds = %368, %362
  %371 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %374 unwind label %385

372:                                              ; preds = %369
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %374

374:                                              ; preds = %370, %372
  %.pn121 = phi { ptr, i32 } [ %373, %372 ], [ %371, %370 ]
  %.16 = extractvalue { ptr, i32 } %.pn121, 0
  %.1675 = extractvalue { ptr, i32 } %.pn121, 1
  br label %376

375:                                              ; preds = %354, %369, %348
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #11
  br label %.critedge

376:                                              ; preds = %374, %356, %353, %335
  %.1776 = phi i32 [ %.1675, %374 ], [ %359, %356 ], [ %.1574, %353 ], [ %338, %335 ]
  %.17 = phi ptr [ %.16, %374 ], [ %358, %356 ], [ %.15, %353 ], [ %337, %335 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #11
  br label %378

377:                                              ; preds = %331, %282, %137
  call void @_ZN13TiXmlDocumentD2Ev(ptr noundef nonnull align 8 dereferenceable(109) %3) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #11
  br label %380

378:                                              ; preds = %56, %140, %281, %77, %136, %376, %332, %73, %63, %47
  %.2079 = phi i32 [ %50, %47 ], [ %59, %56 ], [ %66, %63 ], [ %.1473, %332 ], [ %.1776, %376 ], [ %76, %73 ], [ %79, %77 ], [ %.362, %136 ], [ %142, %140 ], [ %.1069, %281 ]
  %.20 = phi ptr [ %49, %47 ], [ %58, %56 ], [ %65, %63 ], [ %.14, %332 ], [ %.17, %376 ], [ %75, %73 ], [ %78, %77 ], [ %.349, %136 ], [ %141, %140 ], [ %.1056, %281 ]
  call void @_ZN13TiXmlDocumentD2Ev(ptr noundef nonnull align 8 dereferenceable(109) %3) #11
  br label %379

379:                                              ; preds = %378, %43
  %.2180 = phi i32 [ %.2079, %378 ], [ %46, %43 ]
  %.21 = phi ptr [ %.20, %378 ], [ %45, %43 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #11
  br label %381

.critedge:                                        ; preds = %.invoke, %375, %55, %34
  call void @_ZN13TiXmlDocumentD2Ev(ptr noundef nonnull align 8 dereferenceable(109) %3) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %3) #11
  br label %380

380:                                              ; preds = %377, %.critedge
  ret void

381:                                              ; preds = %379, %39
  %.2281 = phi i32 [ %.2180, %379 ], [ %42, %39 ]
  %.22 = phi ptr [ %.21, %379 ], [ %41, %39 ]
  call void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #11
  br label %382

382:                                              ; preds = %381, %35
  %.2382 = phi i32 [ %.2281, %381 ], [ %38, %35 ]
  %.23 = phi ptr [ %.22, %381 ], [ %37, %35 ]
  %383 = insertvalue { ptr, i32 } poison, ptr %.23, 0
  %384 = insertvalue { ptr, i32 } %383, i32 %.2382, 1
  resume { ptr, i32 } %384

385:                                              ; preds = %370, %349, %274, %129
  %386 = landingpad { ptr, i32 }
          catch ptr null
  %387 = extractvalue { ptr, i32 } %386, 0
  call void @__clang_call_terminate(ptr %387) #13
  unreachable
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare void @_ZN13TiXmlDocumentC1Ev(ptr noundef nonnull align 8 dereferenceable(109)) unnamed_addr #6

declare noundef ptr @_ZN13TiXmlDocument5ParseEPKcP16TiXmlParsingData13TiXmlEncoding(ptr noundef nonnull align 8 dereferenceable(109), ptr noundef, ptr noundef, i32 noundef) unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK13TiXmlDocument5ErrorEv(ptr noundef nonnull align 8 dereferenceable(109)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf13parseMaterialERNS_8MaterialEP12TiXmlElementb(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i1 noundef zeroext) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface11getMaterialERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.14) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf8MaterialEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf8MaterialEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.15") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

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

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

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

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

declare noundef zeroext i1 @_ZN4urdf9parseLinkERNS_4LinkEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(208), ptr noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface7getLinkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.39) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf4LinkEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK13my_shared_ptrIN4urdf6VisualEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf4LinkEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.45") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4 align 2

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

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

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

declare noundef zeroext i1 @_ZN4urdf10parseJointERNS_5JointEP12TiXmlElement(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4urdf14ModelInterface8getJointERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.my_shared_ptr.52) align 8, ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK13my_shared_ptrIKN4urdf5JointEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE6insertISC_IS5_S9_EEENSt9enable_ifIXsr16is_constructibleISE_T_EE5valueESC_ISt17_Rb_tree_iteratorISE_EbEE4typeEOSK_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER13my_shared_ptrIN4urdf5JointEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENSD_INSE_IT0_E4typeEE6__typeEEOSF_OSK_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.57") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13my_shared_ptrIN4urdf14ModelInterfaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 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 = { 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 #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "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 = { nofree nosync nounwind memory(none) }
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 = { builtin allocsize(0) }
attributes #11 = { nounwind }
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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !30, i64 192}
!8 = !{!"_ZTSN4urdf14ModelInterfaceE", !9, i64 0, !21, i64 48, !24, i64 96, !27, i64 144, !29, i64 176, !30, i64 192, !30, i64 196}
!9 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf4LinkEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !10, i64 0}
!10 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf4LinkEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !11, i64 0}
!11 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf4LinkEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !12, i64 0, !14, i64 8}
!12 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !13, i64 0}
!13 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!14 = !{!"_ZTSSt15_Rb_tree_header", !15, i64 0, !20, i64 32}
!15 = !{!"_ZTSSt18_Rb_tree_node_base", !16, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!16 = !{!"_ZTSSt14_Rb_tree_color", !17, i64 0}
!17 = !{!"omnipotent char", !18, i64 0}
!18 = !{!"Simple C++ TBAA"}
!19 = !{!"any pointer", !17, i64 0}
!20 = !{!"long", !17, i64 0}
!21 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf5JointEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf5JointEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf5JointEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !12, i64 0, !14, i64 8}
!24 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE13my_shared_ptrIN4urdf8MaterialEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf8MaterialEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_13my_shared_ptrIN4urdf8MaterialEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !12, i64 0, !14, i64 8}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !28, i64 0, !20, i64 8, !17, i64 16}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !19, i64 0}
!29 = !{!"_ZTS13my_shared_ptrIN4urdf4LinkEE", !19, i64 0, !19, i64 8}
!30 = !{!"int", !17, i64 0}
!31 = distinct !{!31, !6}
!32 = !{!8, !30, i64 196}
!33 = distinct !{!33, !6}
!34 = !{!35, !35, i64 0}
!35 = !{!"vtable pointer", !18, i64 0}


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