; LLVM IR from maliput/maliput :: src/maliput/utility (generate_obj)

; 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"

%"struct.maliput::utility::Material" = type { %"class.std::__cxx11::basic_string", %"class.maliput::math::Vector3", %"class.maliput::math::Vector3", %"class.maliput::math::Vector3", double, double }
%"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.maliput::math::Vector3" = type { %"class.maliput::math::VectorBase" }
%"class.maliput::math::VectorBase" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x double] }
%"struct.std::pair.25" = type { %"class.maliput::utility::mesh::GeoMesh", %"struct.maliput::utility::Material" }
%"class.maliput::utility::mesh::GeoMesh" = type { %"class.maliput::utility::mesh::UniqueIndexer", %"class.maliput::utility::mesh::UniqueIndexer.37", %"class.std::vector.58" }
%"class.maliput::utility::mesh::UniqueIndexer" = type { %"class.std::unordered_map", %"class.std::vector.32" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.maliput::utility::mesh::UniqueIndexer.37" = type { %"class.std::unordered_map.38", %"class.std::vector.53" }
%"class.std::unordered_map.38" = type { %"class.std::_Hashtable.39" }
%"class.std::_Hashtable.39" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.58" = type { %"struct.std::_Vector_base.59" }
%"struct.std::_Vector_base.59" = type { %"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl" }
%"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl" = type { %"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl_data" }
%"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { i8 }
%class.anon.69 = type { ptr }
%class.anon.70 = type { ptr }
%class.anon.71 = type { ptr }
%"class.std::allocator.0" = type { i8 }
%"struct.maliput::utility::ObjFeatures" = type { double, double, i8, i8, i8, i8, i8, i8, double, double, double, double, double, double, double, %"class.maliput::api::InertialPosition", %"class.std::vector.63" }
%"class.maliput::api::InertialPosition" = type { %"class.maliput::math::Vector3" }
%"class.std::vector.63" = type { %"struct.std::_Vector_base.64" }
%"struct.std::_Vector_base.64" = type { %"struct.std::_Vector_base<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>, std::allocator<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>>>::_Vector_impl" }
%"struct.std::_Vector_base<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>, std::allocator<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>>>::_Vector_impl" = type { %"struct.std::_Vector_base<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>, std::allocator<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>, std::allocator<maliput::api::TypeSpecificIdentifier<maliput::api::Segment>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.63 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [14 x i8], align 1
@__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7maliput7utility19GetMaterialFromMeshENS0_12MaterialTypeE(ptr dead_on_unwind noalias writable sret(%"struct.maliput::utility::Material") align 8, i32 noundef) #2

; Function Attrs: noreturn
declare void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.25") align 8 %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(128) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 4 dereferenceable(4) %4) #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon, align 1
  %22 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %23 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.69, align 8
  %26 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %27 = alloca double, align 8
  %28 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %29 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %30 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %31 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %32 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %33 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.70, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.71, align 8
  %38 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %39 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.0", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.0", align 1
  %44 = alloca %"struct.maliput::utility::Material", align 8
  store ptr %0, ptr %6, align 8
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  br label %45

45:                                               ; preds = %5
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = icmp ne ptr %46, null
  br i1 %47, label %49, label %48

48:                                               ; preds = %45
  call void @_ZN7maliput6common8internal5AbortEPKcS3_S3_i(ptr noundef @.str.65, ptr noundef @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef @.str.63, i32 noundef 787) #6
  unreachable

49:                                               ; preds = %45
  br label %50

50:                                               ; preds = %49
  br label %51

51:                                               ; preds = %50
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = load i32, ptr %52, align 4, !tbaa !9
  %54 = icmp ne i32 %53, 4
  br i1 %54, label %56, label %55

55:                                               ; preds = %51
  call void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef @.str.66, ptr noundef @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef @.str.63, i32 noundef 788) #6
  unreachable

56:                                               ; preds = %51
  br label %57

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 184, ptr %11) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7maliput3api12RoadGeometry4ByIdEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %60 unwind label %96

60:                                               ; preds = %57
  store ptr %59, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = load ptr, ptr %9, align 8, !tbaa !5
  %63 = invoke noundef ptr @_ZNK7maliput3api12RoadGeometry7IdIndex7GetLaneERKNS0_22TypeSpecificIdentifierINS0_4LaneEEE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %64 unwind label %100

64:                                               ; preds = %60
  store ptr %63, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %65 = load ptr, ptr %15, align 8, !tbaa !5
  %66 = invoke noundef ptr @_ZNK7maliput3api4Lane7segmentEv(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %67 unwind label %104

67:                                               ; preds = %64
  store ptr %66, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %68 = load ptr, ptr %16, align 8, !tbaa !5
  %69 = invoke noundef ptr @_ZNK7maliput3api7Segment8junctionEv(ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %70 unwind label %108

70:                                               ; preds = %67
  %71 = invoke noundef ptr @_ZNK7maliput3api8Junction13road_geometryEv(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %72 unwind label %108

72:                                               ; preds = %70
  %73 = invoke noundef double @_ZNK7maliput3api12RoadGeometry16linear_toleranceEv(ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %74 unwind label %108

74:                                               ; preds = %72
  store double %73, ptr %17, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %75, i32 0, i32 7
  %77 = load i8, ptr %76, align 1, !tbaa !13, !range !24, !noundef !25
  %78 = trunc i8 %77 to i1
  br i1 %78, label %79, label %81

79:                                               ; preds = %74
  %80 = load double, ptr %17, align 8, !tbaa !11
  br label %92

81:                                               ; preds = %74
  %82 = load ptr, ptr %15, align 8, !tbaa !5
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %83, i32 0, i32 0
  %85 = load double, ptr %84, align 8, !tbaa !26
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %86, i32 0, i32 1
  %88 = load double, ptr %87, align 8, !tbaa !27
  %89 = load double, ptr %17, align 8, !tbaa !11
  %90 = invoke noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef %82, double noundef %85, double noundef %88, double noundef %89)
          to label %91 unwind label %112

91:                                               ; preds = %81
  br label %92

92:                                               ; preds = %91, %79
  %93 = phi double [ %80, %79 ], [ %90, %91 ]
  store double %93, ptr %18, align 8, !tbaa !11
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  switch i32 %95, label %375 [
    i32 0, label %116
    i32 5, label %116
    i32 1, label %147
    i32 6, label %147
    i32 2, label %186
    i32 7, label %186
    i32 3, label %275
    i32 4, label %343
    i32 8, label %359
  ]

96:                                               ; preds = %57
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %13, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %14, align 4
  br label %393

100:                                              ; preds = %60
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %13, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %14, align 4
  br label %392

104:                                              ; preds = %64
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %13, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %14, align 4
  br label %391

108:                                              ; preds = %72, %70, %67
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %13, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %14, align 4
  br label %390

112:                                              ; preds = %81
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %13, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %14, align 4
  br label %389

116:                                              ; preds = %92, %92
  call void @llvm.lifetime.start.p0(i64 184, ptr %19) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19)
          to label %117 unwind label %128

117:                                              ; preds = %116
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = load double, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %120, i32 0, i32 7
  %122 = load i8, ptr %121, align 1, !tbaa !13, !range !24, !noundef !25
  %123 = trunc i8 %122 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef %19, ptr noundef %118, double noundef %119, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %20, i1 noundef zeroext %123)
          to label %124 unwind label %132

124:                                              ; preds = %117
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr %22) #7
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %22, ptr noundef nonnull align 8 dereferenceable(184) %19, ptr noundef nonnull align 8 dereferenceable(128) %125)
          to label %126 unwind label %136

126:                                              ; preds = %124
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %22)
          to label %127 unwind label %140

127:                                              ; preds = %126
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %22) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %19) #7
  br label %375

128:                                              ; preds = %116
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %13, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %14, align 4
  br label %146

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

136:                                              ; preds = %124
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %13, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %14, align 4
  br label %144

140:                                              ; preds = %126
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %13, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #7
  br label %144

144:                                              ; preds = %140, %136
  call void @llvm.lifetime.end.p0(i64 184, ptr %22) #7
  br label %145

145:                                              ; preds = %144, %132
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #7
  br label %146

146:                                              ; preds = %145, %128
  call void @llvm.lifetime.end.p0(i64 184, ptr %19) #7
  br label %389

147:                                              ; preds = %92, %92
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %148, i32 0, i32 4
  %150 = load i8, ptr %149, align 2, !tbaa !28, !range !24, !noundef !25
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %185

152:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 184, ptr %23) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %23)
          to label %153 unwind label %166

153:                                              ; preds = %152
  %154 = load ptr, ptr %15, align 8, !tbaa !5
  %155 = load double, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %156 = getelementptr inbounds %class.anon.69, ptr %25, i32 0, i32 0
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %157, ptr %156, align 8, !tbaa !5
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %158, i32 0, i32 7
  %160 = load i8, ptr %159, align 1, !tbaa !13, !range !24, !noundef !25
  %161 = trunc i8 %160 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef %23, ptr noundef %154, double noundef %155, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %24, i1 noundef zeroext %161)
          to label %162 unwind label %170

162:                                              ; preds = %153
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr %26) #7
  %163 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %26, ptr noundef nonnull align 8 dereferenceable(184) %23, ptr noundef nonnull align 8 dereferenceable(128) %163)
          to label %164 unwind label %174

164:                                              ; preds = %162
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %26)
          to label %165 unwind label %178

165:                                              ; preds = %164
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %26) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %23) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %23) #7
  br label %185

166:                                              ; preds = %152
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %13, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %14, align 4
  br label %184

170:                                              ; preds = %153
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %13, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  br label %183

174:                                              ; preds = %162
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %13, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %14, align 4
  br label %182

178:                                              ; preds = %164
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %13, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #7
  br label %182

182:                                              ; preds = %178, %174
  call void @llvm.lifetime.end.p0(i64 184, ptr %26) #7
  br label %183

183:                                              ; preds = %182, %170
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %23) #7
  br label %184

184:                                              ; preds = %183, %166
  call void @llvm.lifetime.end.p0(i64 184, ptr %23) #7
  br label %389

185:                                              ; preds = %165, %147
  br label %375

186:                                              ; preds = %92, %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %188, i32 0, i32 0
  %190 = load double, ptr %189, align 8, !tbaa !26
  %191 = load ptr, ptr %8, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %191, i32 0, i32 1
  %193 = load double, ptr %192, align 8, !tbaa !27
  %194 = load double, ptr %17, align 8, !tbaa !11
  %195 = invoke noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef %187, double noundef %190, double noundef %193, double noundef %194)
          to label %196 unwind label %215

196:                                              ; preds = %186
  store double %195, ptr %27, align 8, !tbaa !11
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %197, i32 0, i32 2
  %199 = load i8, ptr %198, align 8, !tbaa !29, !range !24, !noundef !25
  %200 = trunc i8 %199 to i1
  br i1 %200, label %201, label %238

201:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 184, ptr %28) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28)
          to label %202 unwind label %219

202:                                              ; preds = %201
  %203 = load ptr, ptr %15, align 8, !tbaa !5
  %204 = load double, ptr %27, align 8, !tbaa !11
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %205, i32 0, i32 10
  %207 = load double, ptr %206, align 8, !tbaa !30
  %208 = load ptr, ptr %8, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %208, i32 0, i32 9
  %210 = load double, ptr %209, align 8, !tbaa !31
  invoke void @_ZN7maliput7utility12_GLOBAL__N_116StripeLaneBoundsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEddd(ptr noundef %28, ptr noundef %203, double noundef %204, double noundef %207, double noundef %210)
          to label %211 unwind label %223

211:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 184, ptr %29) #7
  %212 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %29, ptr noundef nonnull align 8 dereferenceable(184) %28, ptr noundef nonnull align 8 dereferenceable(128) %212)
          to label %213 unwind label %227

213:                                              ; preds = %211
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %29)
          to label %214 unwind label %231

214:                                              ; preds = %213
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %29) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %29) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %28) #7
  br label %238

215:                                              ; preds = %186
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %13, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %14, align 4
  br label %274

219:                                              ; preds = %201
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %13, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %14, align 4
  br label %237

223:                                              ; preds = %202
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %13, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %14, align 4
  br label %236

227:                                              ; preds = %211
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %13, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %14, align 4
  br label %235

231:                                              ; preds = %213
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %13, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %29) #7
  br label %235

235:                                              ; preds = %231, %227
  call void @llvm.lifetime.end.p0(i64 184, ptr %29) #7
  br label %236

236:                                              ; preds = %235, %223
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #7
  br label %237

237:                                              ; preds = %236, %219
  call void @llvm.lifetime.end.p0(i64 184, ptr %28) #7
  br label %274

238:                                              ; preds = %214, %196
  %239 = load ptr, ptr %8, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %239, i32 0, i32 3
  %241 = load i8, ptr %240, align 1, !tbaa !32, !range !24, !noundef !25
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %273

243:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 184, ptr %30) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %30)
          to label %244 unwind label %254

244:                                              ; preds = %243
  %245 = load ptr, ptr %15, align 8, !tbaa !5
  %246 = load double, ptr %27, align 8, !tbaa !11
  %247 = load ptr, ptr %8, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %247, i32 0, i32 11
  %249 = load double, ptr %248, align 8, !tbaa !33
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112MarkLaneEndsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdd(ptr noundef %30, ptr noundef %245, double noundef %246, double noundef %249)
          to label %250 unwind label %258

250:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 184, ptr %31) #7
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %31, ptr noundef nonnull align 8 dereferenceable(184) %30, ptr noundef nonnull align 8 dereferenceable(128) %251)
          to label %252 unwind label %262

252:                                              ; preds = %250
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %31)
          to label %253 unwind label %266

253:                                              ; preds = %252
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %31) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %30) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %30) #7
  br label %273

254:                                              ; preds = %243
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %13, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %14, align 4
  br label %272

258:                                              ; preds = %244
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %13, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %14, align 4
  br label %271

262:                                              ; preds = %250
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %13, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %14, align 4
  br label %270

266:                                              ; preds = %252
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %13, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #7
  br label %270

270:                                              ; preds = %266, %262
  call void @llvm.lifetime.end.p0(i64 184, ptr %31) #7
  br label %271

271:                                              ; preds = %270, %258
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %30) #7
  br label %272

272:                                              ; preds = %271, %254
  call void @llvm.lifetime.end.p0(i64 184, ptr %30) #7
  br label %274

273:                                              ; preds = %253, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %375

274:                                              ; preds = %272, %237, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %389

275:                                              ; preds = %92
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %276, i32 0, i32 6
  %278 = load i8, ptr %277, align 4, !tbaa !34, !range !24, !noundef !25
  %279 = trunc i8 %278 to i1
  br i1 %279, label %280, label %342

280:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 184, ptr %32) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %32)
          to label %281 unwind label %305

281:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 184, ptr %33) #7
  invoke void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %33)
          to label %282 unwind label %309

282:                                              ; preds = %281
  %283 = load ptr, ptr %15, align 8, !tbaa !5
  %284 = load double, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %285 = getelementptr inbounds %class.anon.70, ptr %35, i32 0, i32 0
  store ptr %15, ptr %285, align 8, !tbaa !5
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %286, i32 0, i32 7
  %288 = load i8, ptr %287, align 1, !tbaa !13, !range !24, !noundef !25
  %289 = trunc i8 %288 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef %32, ptr noundef %283, double noundef %284, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %34, i1 noundef zeroext %289)
          to label %290 unwind label %313

290:                                              ; preds = %282
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  %291 = load ptr, ptr %15, align 8, !tbaa !5
  %292 = load double, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %293 = getelementptr inbounds %class.anon.71, ptr %37, i32 0, i32 0
  store ptr %15, ptr %293, align 8, !tbaa !5
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.maliput::utility::ObjFeatures", ptr %294, i32 0, i32 7
  %296 = load i8, ptr %295, align 1, !tbaa !13, !range !24, !noundef !25
  %297 = trunc i8 %296 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef %33, ptr noundef %291, double noundef %292, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %36, i1 noundef zeroext %297)
          to label %298 unwind label %317

298:                                              ; preds = %290
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr %38) #7
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %38, ptr noundef nonnull align 8 dereferenceable(184) %32, ptr noundef nonnull align 8 dereferenceable(128) %299)
          to label %300 unwind label %321

300:                                              ; preds = %298
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %38)
          to label %301 unwind label %325

301:                                              ; preds = %300
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %38) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr %39) #7
  %302 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %39, ptr noundef nonnull align 8 dereferenceable(184) %33, ptr noundef nonnull align 8 dereferenceable(128) %302)
          to label %303 unwind label %330

303:                                              ; preds = %301
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(184) %39)
          to label %304 unwind label %334

304:                                              ; preds = %303
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %39) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %39) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %33) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %33) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %32) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %32) #7
  br label %342

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

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

313:                                              ; preds = %282
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %13, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #7
  br label %339

317:                                              ; preds = %290
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %13, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %339

321:                                              ; preds = %298
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %13, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %14, align 4
  br label %329

325:                                              ; preds = %300
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %13, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %38) #7
  br label %329

329:                                              ; preds = %325, %321
  call void @llvm.lifetime.end.p0(i64 184, ptr %38) #7
  br label %339

330:                                              ; preds = %301
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %13, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %14, align 4
  br label %338

334:                                              ; preds = %303
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %13, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %14, align 4
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %39) #7
  br label %338

338:                                              ; preds = %334, %330
  call void @llvm.lifetime.end.p0(i64 184, ptr %39) #7
  br label %339

339:                                              ; preds = %338, %329, %317, %313
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %33) #7
  br label %340

340:                                              ; preds = %339, %309
  call void @llvm.lifetime.end.p0(i64 184, ptr %33) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %32) #7
  br label %341

341:                                              ; preds = %340, %305
  call void @llvm.lifetime.end.p0(i64 184, ptr %32) #7
  br label %389

342:                                              ; preds = %304, %275
  br label %375

343:                                              ; preds = %92
  br label %344

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %345 unwind label %348

345:                                              ; preds = %344
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  %346 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  invoke void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef %346, ptr noundef @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef @.str.63, i32 noundef 858) #6
          to label %347 unwind label %352

347:                                              ; preds = %345
  unreachable

348:                                              ; preds = %344
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %13, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  br label %356

352:                                              ; preds = %345
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %13, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %356

356:                                              ; preds = %352, %348
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  br label %389

357:                                              ; No predecessors!
  br label %358

358:                                              ; preds = %357
  br label %375

359:                                              ; preds = %92
  br label %360

360:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %361 unwind label %364

361:                                              ; preds = %360
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  %362 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  invoke void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef %362, ptr noundef @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef @.str.63, i32 noundef 863) #6
          to label %363 unwind label %368

363:                                              ; preds = %361
  unreachable

364:                                              ; preds = %360
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %13, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  br label %372

368:                                              ; preds = %361
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %13, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %372

372:                                              ; preds = %368, %364
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  br label %389

373:                                              ; No predecessors!
  br label %374

374:                                              ; preds = %373
  br label %375

375:                                              ; preds = %374, %358, %342, %273, %185, %127, %92
  call void @llvm.lifetime.start.p0(i64 120, ptr %44) #7
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  invoke void @_ZN7maliput7utility19GetMaterialFromMeshENS0_12MaterialTypeE(ptr dead_on_unwind writable sret(%"struct.maliput::utility::Material") align 8 %44, i32 noundef %377)
          to label %378 unwind label %380

378:                                              ; preds = %375
  invoke void @_ZSt9make_pairIN7maliput7utility4mesh7GeoMeshENS1_8MaterialEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.25") align 8 %0, ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef nonnull align 8 dereferenceable(120) %44)
          to label %379 unwind label %384

379:                                              ; preds = %378
  call void @_ZN7maliput7utility8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %44) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %11) #7
  ret void

380:                                              ; preds = %375
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %13, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %14, align 4
  br label %388

384:                                              ; preds = %378
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %13, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %14, align 4
  call void @_ZN7maliput7utility8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %44) #7
  br label %388

388:                                              ; preds = %384, %380
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #7
  br label %389

389:                                              ; preds = %388, %372, %356, %341, %274, %184, %146, %112
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %390

390:                                              ; preds = %389, %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %391

391:                                              ; preds = %390, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %392

392:                                              ; preds = %391, %100
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %393

393:                                              ; preds = %392, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr %11) #7
  br label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %13, align 8
  %396 = load i32, ptr %14, align 4
  %397 = insertvalue { ptr, i32 } poison, ptr %395, 0
  %398 = insertvalue { ptr, i32 } %397, i32 %396, 1
  resume { ptr, i32 } %398
}

; Function Attrs: noreturn
declare void @_ZN7maliput6common8internal5AbortEPKcS3_S3_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #4

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

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

declare noundef ptr @_ZNK7maliput3api12RoadGeometry7IdIndex7GetLaneERKNS0_22TypeSpecificIdentifierINS0_4LaneEEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

declare noundef ptr @_ZNK7maliput3api4Lane7segmentEv(ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef, double noundef, double noundef, double noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind noalias writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8, ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(128)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_116StripeLaneBoundsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEddd(ptr noundef, ptr noundef, double noundef, double noundef, double noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_112MarkLaneEndsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdd(ptr noundef, ptr noundef, double noundef, double noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN7maliput7utility4mesh7GeoMeshENS1_8MaterialEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.25") align 8, ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(120)) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { noreturn "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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn }
attributes #7 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN7maliput7utility12MaterialTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !15, i64 21}
!14 = !{!"_ZTSN7maliput7utility11ObjFeaturesE", !12, i64 0, !12, i64 8, !15, i64 16, !15, i64 17, !15, i64 18, !15, i64 19, !15, i64 20, !15, i64 21, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !16, i64 80, !20, i64 104}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTSN7maliput3api16InertialPositionE", !17, i64 0}
!17 = !{!"_ZTSN7maliput4math7Vector3E", !18, i64 0}
!18 = !{!"_ZTSN7maliput4math10VectorBaseILm3ENS0_7Vector3EEE", !19, i64 0}
!19 = !{!"_ZTSSt5arrayIdLm3EE", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!14, !12, i64 0}
!27 = !{!14, !12, i64 8}
!28 = !{!14, !15, i64 18}
!29 = !{!14, !15, i64 16}
!30 = !{!14, !12, i64 40}
!31 = !{!14, !12, i64 32}
!32 = !{!14, !15, i64 17}
!33 = !{!14, !12, i64 48}
!34 = !{!14, !15, i64 20}


; 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"

%"struct.maliput::utility::Material" = type { %"class.std::__cxx11::basic_string", %"class.maliput::math::Vector3", %"class.maliput::math::Vector3", %"class.maliput::math::Vector3", double, double }
%"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.maliput::math::Vector3" = type { %"class.maliput::math::VectorBase" }
%"class.maliput::math::VectorBase" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x double] }
%"struct.std::pair.25" = type { %"class.maliput::utility::mesh::GeoMesh", %"struct.maliput::utility::Material" }
%"class.maliput::utility::mesh::GeoMesh" = type { %"class.maliput::utility::mesh::UniqueIndexer", %"class.maliput::utility::mesh::UniqueIndexer.37", %"class.std::vector.58" }
%"class.maliput::utility::mesh::UniqueIndexer" = type { %"class.std::unordered_map", %"class.std::vector.32" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoVertex *, std::allocator<const maliput::utility::mesh::GeoVertex *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.maliput::utility::mesh::UniqueIndexer.37" = type { %"class.std::unordered_map.38", %"class.std::vector.53" }
%"class.std::unordered_map.38" = type { %"class.std::_Hashtable.39" }
%"class.std::_Hashtable.39" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const maliput::utility::mesh::GeoNormal *, std::allocator<const maliput::utility::mesh::GeoNormal *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.58" = type { %"struct.std::_Vector_base.59" }
%"struct.std::_Vector_base.59" = type { %"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl" }
%"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl" = type { %"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl_data" }
%"struct.std::_Vector_base<maliput::utility::mesh::IndexFace, std::allocator<maliput::utility::mesh::IndexFace>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { i8 }
%class.anon.69 = type { ptr }
%class.anon.70 = type { ptr }
%class.anon.71 = type { ptr }
%"class.std::allocator.0" = type { i8 }

@.str.63 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [14 x i8], align 1
@__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7maliput7utility19GetMaterialFromMeshENS0_12MaterialTypeE(ptr dead_on_unwind noalias writable sret(%"struct.maliput::utility::Material") align 8, i32 noundef) local_unnamed_addr #2

; Function Attrs: noreturn
declare void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.25") align 8 %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(128) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %4) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon, align 1
  %11 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %12 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.69, align 8
  %15 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %16 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %17 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %18 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %19 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %20 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %21 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.70, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.71, align 8
  %26 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %27 = alloca %"class.maliput::utility::mesh::GeoMesh", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.0", align 1
  %32 = alloca %"struct.maliput::utility::Material", align 8
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %33, label %34

33:                                               ; preds = %5
  tail call void @_ZN7maliput6common8internal5AbortEPKcS3_S3_i(ptr noundef nonnull @.str.65, ptr noundef nonnull @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef nonnull @.str.63, i32 noundef 787) #6
  unreachable

34:                                               ; preds = %5
  %35 = load i32, ptr %4, align 4, !tbaa !5
  %.not62 = icmp eq i32 %35, 4
  br i1 %.not62, label %36, label %37

36:                                               ; preds = %34
  tail call void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef nonnull @.str.66, ptr noundef nonnull @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef nonnull @.str.63, i32 noundef 788) #6
  unreachable

37:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %6) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %6)
  %38 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7maliput3api12RoadGeometry4ByIdEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %39 unwind label %61

39:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %40 = invoke noundef ptr @_ZNK7maliput3api12RoadGeometry7IdIndex7GetLaneERKNS0_22TypeSpecificIdentifierINS0_4LaneEEE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %41 unwind label %63

41:                                               ; preds = %39
  store ptr %40, ptr %7, align 8, !tbaa !9
  %42 = invoke noundef ptr @_ZNK7maliput3api4Lane7segmentEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %43 unwind label %65

43:                                               ; preds = %41
  %44 = invoke noundef ptr @_ZNK7maliput3api7Segment8junctionEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %45 unwind label %67

45:                                               ; preds = %43
  %46 = invoke noundef ptr @_ZNK7maliput3api8Junction13road_geometryEv(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %47 unwind label %67

47:                                               ; preds = %45
  %48 = invoke noundef double @_ZNK7maliput3api12RoadGeometry16linear_toleranceEv(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %49 unwind label %67

49:                                               ; preds = %47
  %50 = getelementptr inbounds i8, ptr %2, i64 21
  %51 = load i8, ptr %50, align 1, !tbaa !11, !range !23, !noundef !24
  %52 = trunc nuw i8 %51 to i1
  br i1 %52, label %58, label %53

53:                                               ; preds = %49
  %54 = load double, ptr %2, align 8, !tbaa !25
  %55 = getelementptr inbounds i8, ptr %2, i64 8
  %56 = load double, ptr %55, align 8, !tbaa !26
  %57 = invoke noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef nonnull %40, double noundef %54, double noundef %56, double noundef %48)
          to label %58 unwind label %69

58:                                               ; preds = %49, %53
  %59 = phi double [ %57, %53 ], [ %48, %49 ]
  %60 = load i32, ptr %4, align 4, !tbaa !5
  switch i32 %60, label %197 [
    i32 0, label %71
    i32 5, label %71
    i32 1, label %85
    i32 6, label %85
    i32 2, label %103
    i32 7, label %103
    i32 3, label %148
    i32 4, label %179
    i32 8, label %188
  ]

61:                                               ; preds = %37
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %207

63:                                               ; preds = %39
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %206

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

67:                                               ; preds = %47, %45, %43
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %206

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

71:                                               ; preds = %58, %58
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %8) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %8)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  %72 = load i8, ptr %50, align 1, !tbaa !11, !range !23, !noundef !24
  %73 = trunc nuw i8 %72 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef nonnull %8, ptr noundef nonnull %40, double noundef %59, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %9, i1 noundef zeroext %73)
          to label %74 unwind label %77

74:                                               ; preds = %71
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %11) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %11, ptr noundef nonnull align 8 dereferenceable(184) %8, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %75 unwind label %79

75:                                               ; preds = %74
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %11)
          to label %76 unwind label %81

76:                                               ; preds = %75
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %11) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %8) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %8) #7
  br label %197

77:                                               ; preds = %71
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %84

79:                                               ; preds = %74
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %83

81:                                               ; preds = %75
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #7
  br label %83

83:                                               ; preds = %81, %79
  %.pn81 = phi { ptr, i32 } [ %82, %81 ], [ %80, %79 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %11) #7
  br label %84

84:                                               ; preds = %83, %77
  %.pn81.pn = phi { ptr, i32 } [ %.pn81, %83 ], [ %78, %77 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %8) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %8) #7
  br label %206

85:                                               ; preds = %58, %58
  %86 = getelementptr inbounds i8, ptr %2, i64 18
  %87 = load i8, ptr %86, align 2, !tbaa !27, !range !23, !noundef !24
  %88 = trunc nuw i8 %87 to i1
  br i1 %88, label %89, label %197

89:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %12) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %12)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  store ptr %2, ptr %14, align 8, !tbaa !9
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  %90 = load i8, ptr %50, align 1, !tbaa !11, !range !23, !noundef !24
  %91 = trunc nuw i8 %90 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef nonnull %12, ptr noundef nonnull %40, double noundef %59, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %13, i1 noundef zeroext %91)
          to label %92 unwind label %95

92:                                               ; preds = %89
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %15) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %15, ptr noundef nonnull align 8 dereferenceable(184) %12, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %93 unwind label %97

93:                                               ; preds = %92
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %15)
          to label %94 unwind label %99

94:                                               ; preds = %93
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %15) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %12) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %12) #7
  br label %197

95:                                               ; preds = %89
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %102

97:                                               ; preds = %92
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %101

99:                                               ; preds = %93
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #7
  br label %101

101:                                              ; preds = %99, %97
  %.pn78 = phi { ptr, i32 } [ %100, %99 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %15) #7
  br label %102

102:                                              ; preds = %101, %95
  %.pn78.pn = phi { ptr, i32 } [ %.pn78, %101 ], [ %96, %95 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %12) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %12) #7
  br label %206

103:                                              ; preds = %58, %58
  %104 = load double, ptr %2, align 8, !tbaa !25
  %105 = getelementptr inbounds i8, ptr %2, i64 8
  %106 = load double, ptr %105, align 8, !tbaa !26
  %107 = invoke noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef nonnull %40, double noundef %104, double noundef %106, double noundef %48)
          to label %108 unwind label %120

108:                                              ; preds = %103
  %109 = getelementptr inbounds i8, ptr %2, i64 16
  %110 = load i8, ptr %109, align 8, !tbaa !28, !range !23, !noundef !24
  %111 = trunc nuw i8 %110 to i1
  br i1 %111, label %112, label %130

112:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %16) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %16)
  %113 = getelementptr inbounds i8, ptr %2, i64 40
  %114 = load double, ptr %113, align 8, !tbaa !29
  %115 = getelementptr inbounds i8, ptr %2, i64 32
  %116 = load double, ptr %115, align 8, !tbaa !30
  invoke void @_ZN7maliput7utility12_GLOBAL__N_116StripeLaneBoundsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEddd(ptr noundef nonnull %16, ptr noundef nonnull %40, double noundef %107, double noundef %114, double noundef %116)
          to label %117 unwind label %122

117:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %17) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %17, ptr noundef nonnull align 8 dereferenceable(184) %16, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %118 unwind label %124

118:                                              ; preds = %117
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %17)
          to label %119 unwind label %126

119:                                              ; preds = %118
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %17) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %17) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %16) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %16) #7
  br label %130

120:                                              ; preds = %103
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %206

122:                                              ; preds = %112
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %129

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

126:                                              ; preds = %118
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %17) #7
  br label %128

128:                                              ; preds = %126, %124
  %.pn71 = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %17) #7
  br label %129

129:                                              ; preds = %128, %122
  %.pn71.pn = phi { ptr, i32 } [ %.pn71, %128 ], [ %123, %122 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %16) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %16) #7
  br label %206

130:                                              ; preds = %119, %108
  %131 = getelementptr inbounds i8, ptr %2, i64 17
  %132 = load i8, ptr %131, align 1, !tbaa !31, !range !23, !noundef !24
  %133 = trunc nuw i8 %132 to i1
  br i1 %133, label %134, label %197

134:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %18) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %18)
  %135 = getelementptr inbounds i8, ptr %2, i64 48
  %136 = load double, ptr %135, align 8, !tbaa !32
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112MarkLaneEndsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdd(ptr noundef nonnull %18, ptr noundef nonnull %40, double noundef %107, double noundef %136)
          to label %137 unwind label %140

137:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %19) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %19, ptr noundef nonnull align 8 dereferenceable(184) %18, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %138 unwind label %142

138:                                              ; preds = %137
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %19)
          to label %139 unwind label %144

139:                                              ; preds = %138
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %19) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %18) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %18) #7
  br label %197

140:                                              ; preds = %134
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %147

142:                                              ; preds = %137
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %146

144:                                              ; preds = %138
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #7
  br label %146

146:                                              ; preds = %144, %142
  %.pn74 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %19) #7
  br label %147

147:                                              ; preds = %146, %140
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %146 ], [ %141, %140 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %18) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %18) #7
  br label %206

148:                                              ; preds = %58
  %149 = getelementptr inbounds i8, ptr %2, i64 20
  %150 = load i8, ptr %149, align 4, !tbaa !33, !range !23, !noundef !24
  %151 = trunc nuw i8 %150 to i1
  br i1 %151, label %152, label %197

152:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %20) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20)
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %21) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %21)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  store ptr %7, ptr %23, align 8, !tbaa !9
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %153 = load i8, ptr %50, align 1, !tbaa !11, !range !23, !noundef !24
  %154 = trunc nuw i8 %153 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef nonnull %20, ptr noundef nonnull %40, double noundef %59, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %22, i1 noundef zeroext %154)
          to label %155 unwind label %164

155:                                              ; preds = %152
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  %156 = load ptr, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  store ptr %7, ptr %25, align 8, !tbaa !9
  call void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %157 = load i8, ptr %50, align 1, !tbaa !11, !range !23, !noundef !24
  %158 = trunc nuw i8 %157 to i1
  invoke void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef nonnull %21, ptr noundef %156, double noundef %59, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(32) %24, i1 noundef zeroext %158)
          to label %159 unwind label %166

159:                                              ; preds = %155
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %26) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %26, ptr noundef nonnull align 8 dereferenceable(184) %20, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %160 unwind label %168

160:                                              ; preds = %159
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %26)
          to label %161 unwind label %170

161:                                              ; preds = %160
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %27) #7
  invoke void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind nonnull writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8 %27, ptr noundef nonnull align 8 dereferenceable(184) %21, ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %162 unwind label %173

162:                                              ; preds = %161
  invoke void @_ZN7maliput7utility4mesh7GeoMesh12AddFacesFromERKS2_(ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(184) %27)
          to label %163 unwind label %175

163:                                              ; preds = %162
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %27) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %21) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %21) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %20) #7
  br label %197

164:                                              ; preds = %152
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %178

166:                                              ; preds = %155
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %178

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

170:                                              ; preds = %160
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #7
  br label %172

172:                                              ; preds = %170, %168
  %.pn66 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %26) #7
  br label %178

173:                                              ; preds = %161
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %162
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #7
  br label %177

177:                                              ; preds = %175, %173
  %.pn68 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %27) #7
  br label %178

178:                                              ; preds = %177, %172, %166, %164
  %.pn68.pn = phi { ptr, i32 } [ %.pn68, %177 ], [ %.pn66, %172 ], [ %167, %166 ], [ %165, %164 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %21) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %21) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %20) #7
  br label %206

179:                                              ; preds = %58
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %180 unwind label %183

180:                                              ; preds = %179
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  %181 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  invoke void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef %181, ptr noundef nonnull @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef nonnull @.str.63, i32 noundef 858) #6
          to label %182 unwind label %185

182:                                              ; preds = %180
  unreachable

183:                                              ; preds = %179
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  br label %187

185:                                              ; preds = %180
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %187

187:                                              ; preds = %185, %183
  %.pn64 = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %206

188:                                              ; preds = %58
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %189 unwind label %192

189:                                              ; preds = %188
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  %190 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  invoke void @_ZN7maliput6common8internal5ThrowEPKcS3_S3_i(ptr noundef %190, ptr noundef nonnull @__func__._ZN7maliput7utility9BuildMeshEPKNS_3api12RoadGeometryERKNS0_11ObjFeaturesERKNS1_22TypeSpecificIdentifierINS1_4LaneEEERKNS0_12MaterialTypeE, ptr noundef nonnull @.str.63, i32 noundef 863) #6
          to label %191 unwind label %194

191:                                              ; preds = %189
  unreachable

192:                                              ; preds = %188
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  br label %196

194:                                              ; preds = %189
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %196

196:                                              ; preds = %194, %192
  %.pn = phi { ptr, i32 } [ %195, %194 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %206

197:                                              ; preds = %130, %139, %148, %163, %85, %94, %76, %58
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %32) #7
  %198 = load i32, ptr %4, align 4, !tbaa !5
  invoke void @_ZN7maliput7utility19GetMaterialFromMeshENS0_12MaterialTypeE(ptr dead_on_unwind nonnull writable sret(%"struct.maliput::utility::Material") align 8 %32, i32 noundef %198)
          to label %199 unwind label %201

199:                                              ; preds = %197
  invoke void @_ZSt9make_pairIN7maliput7utility4mesh7GeoMeshENS1_8MaterialEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.25") align 8 %0, ptr noundef nonnull align 8 dereferenceable(184) %6, ptr noundef nonnull align 8 dereferenceable(120) %32)
          to label %200 unwind label %203

200:                                              ; preds = %199
  call void @_ZN7maliput7utility8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %6) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %6) #7
  ret void

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

203:                                              ; preds = %199
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7maliput7utility8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #7
  br label %205

205:                                              ; preds = %203, %201
  %.pn84 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %32) #7
  br label %206

206:                                              ; preds = %65, %69, %84, %102, %178, %187, %196, %205, %147, %129, %120, %67, %63
  %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %64, %63 ], [ %66, %65 ], [ %68, %67 ], [ %.pn84, %205 ], [ %.pn, %196 ], [ %.pn64, %187 ], [ %.pn68.pn, %178 ], [ %.pn78.pn, %102 ], [ %.pn81.pn, %84 ], [ %70, %69 ], [ %.pn74.pn, %147 ], [ %.pn71.pn, %129 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  br label %207

207:                                              ; preds = %206, %61
  %.pn84.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn84.pn.pn.pn.pn, %206 ], [ %62, %61 ]
  call void @_ZN7maliput7utility4mesh7GeoMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %6) #7
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn84.pn.pn.pn.pn.pn
}

; Function Attrs: noreturn
declare void @_ZN7maliput6common8internal5AbortEPKcS3_S3_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

declare noundef ptr @_ZNK7maliput3api12RoadGeometry7IdIndex7GetLaneERKNS0_22TypeSpecificIdentifierINS0_4LaneEEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

declare noundef ptr @_ZNK7maliput3api4Lane7segmentEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN7maliput7utility12_GLOBAL__N_112PickGridUnitEPKNS_3api4LaneEddd(ptr noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_118CoverLaneWithQuadsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdbRKSt8functionIFdddEEb(ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_112SimplifyMeshERKNS0_4mesh7GeoMeshERKNS0_11ObjFeaturesE(ptr dead_on_unwind noalias writable sret(%"class.maliput::utility::mesh::GeoMesh") align 8, ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_116StripeLaneBoundsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEddd(ptr noundef, ptr noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN7maliput7utility12_GLOBAL__N_112MarkLaneEndsEPNS0_4mesh7GeoMeshEPKNS_3api4LaneEdd(ptr noundef, ptr noundef, double noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFdddEEC2IZN7maliput7utility9BuildMeshEPKNS3_3api12RoadGeometryERKNS4_11ObjFeaturesERKNS5_22TypeSpecificIdentifierINS5_4LaneEEERKNS4_12MaterialTypeEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIN7maliput7utility4mesh7GeoMeshENS1_8MaterialEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.25") align 8, ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { noreturn "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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn }
attributes #7 = { 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 = !{!"_ZTSN7maliput7utility12MaterialTypeE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !14, i64 21}
!12 = !{!"_ZTSN7maliput7utility11ObjFeaturesE", !13, i64 0, !13, i64 8, !14, i64 16, !14, i64 17, !14, i64 18, !14, i64 19, !14, i64 20, !14, i64 21, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !15, i64 80, !19, i64 104}
!13 = !{!"double", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSN7maliput3api16InertialPositionE", !16, i64 0}
!16 = !{!"_ZTSN7maliput4math7Vector3E", !17, i64 0}
!17 = !{!"_ZTSN7maliput4math10VectorBaseILm3ENS0_7Vector3EEE", !18, i64 0}
!18 = !{!"_ZTSSt5arrayIdLm3EE", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7maliput3api22TypeSpecificIdentifierINS1_7SegmentEEESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!12, !13, i64 0}
!26 = !{!12, !13, i64 8}
!27 = !{!12, !14, i64 18}
!28 = !{!12, !14, i64 16}
!29 = !{!12, !13, i64 40}
!30 = !{!12, !13, i64 32}
!31 = !{!12, !14, i64 17}
!32 = !{!12, !13, i64 48}
!33 = !{!12, !14, i64 20}


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