; LLVM IR from Razakhel/RaZ :: extern/fastgltf/src (fastgltf)

; 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.std::array.416" = type { [23 x %"struct.std::pair.417"] }
%"struct.std::pair.417" = type { %"class.std::basic_string_view", i64 }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::key_value_pair" = type { %"class.std::basic_string_view", %"class.simdjson::dom::element" }
%"class.fastgltf::Expected.408" = type { i64, %"class.fastgltf::Asset" }
%"class.fastgltf::Asset" = type <{ %"class.std::shared_ptr", %"class.std::optional", %"class.std::vector.88", %"class.std::vector.88", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.91", %"class.std::vector.96", %"class.std::vector.101", %"class.std::vector.106", %"class.std::vector.111", %"class.std::vector.116", %"class.std::vector.121", %"class.std::vector.126", %"class.std::vector.131", %"class.std::vector.136", %"class.std::vector.141", %"class.std::vector.146", %"class.std::vector.151", %"class.std::vector.156", %"class.std::vector.161", i32, [4 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload.base", [7 x i8] }
%"struct.std::_Optional_payload.base" = type { %"struct.std::_Optional_payload_base.base" }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage", i8 }>
%"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage" = type { %"struct.fastgltf::AssetInfo" }
%"struct.fastgltf::AssetInfo" = type { %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74" }
%"class.std::__cxx11::basic_string.74" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider", i64, %union.anon.76 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider" = type { %"class.std::pmr::polymorphic_allocator.75", ptr }
%"class.std::pmr::polymorphic_allocator.75" = type { ptr }
%union.anon.76 = type { i64, [8 x i8] }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.90", %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.90" = type { ptr }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"class.std::vector.91" = type { %"struct.std::_Vector_base.92" }
%"struct.std::_Vector_base.92" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.121" = type { %"struct.std::_Vector_base.122" }
%"struct.std::_Vector_base.122" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.141" = type { %"struct.std::_Vector_base.142" }
%"struct.std::_Vector_base.142" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.161" = type { %"struct.std::_Vector_base.162" }
%"struct.std::_Vector_base.162" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.simdjson::simdjson_result.409" = type { %"struct.simdjson::internal::simdjson_result_base.base.414", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.414" = type { %"struct.std::pair.base.413" }
%"struct.std::pair.base.413" = type <{ %"class.std::basic_string_view", i32 }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.30 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.30 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::object::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.7" = type { %"struct.simdjson::internal::simdjson_result_base.base.12", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.12" = type { %"struct.std::pair.base.11" }
%"struct.std::pair.base.11" = type <{ i64, i32 }>
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.172" = type { ptr }
%"class.fastgltf::Parser" = type { %"class.std::unique_ptr.57", %"struct.fastgltf::ParserInternalConfig", %"class.std::variant", %"class.std::shared_ptr", %"class.std::filesystem::__cxx11::path", i64 }
%"class.std::unique_ptr.57" = type { %"struct.std::__uniq_ptr_data.58" }
%"struct.std::__uniq_ptr_data.58" = type { %"class.std::__uniq_ptr_impl.59" }
%"class.std::__uniq_ptr_impl.59" = type { %"class.std::tuple.60" }
%"class.std::tuple.60" = type { %"struct.std::_Tuple_impl.61" }
%"struct.std::_Tuple_impl.61" = type { %"struct.std::_Head_base.64" }
%"struct.std::_Head_base.64" = type { ptr }
%"struct.fastgltf::ParserInternalConfig" = type { ptr, ptr, ptr, ptr, ptr, i64 }
%"class.std::variant" = type { %"struct.std::__detail::__variant::_Variant_base.base", [7 x i8] }
%"struct.std::__detail::__variant::_Variant_base.base" = type { %"struct.std::__detail::__variant::_Move_assign_base.base" }
%"struct.std::__detail::__variant::_Move_assign_base.base" = type { %"struct.std::__detail::__variant::_Copy_assign_base.base" }
%"struct.std::__detail::__variant::_Copy_assign_base.base" = type { %"struct.std::__detail::__variant::_Move_ctor_base.base" }
%"struct.std::__detail::__variant::_Move_ctor_base.base" = type { %"struct.std::__detail::__variant::_Copy_ctor_base.base" }
%"struct.std::__detail::__variant::_Copy_ctor_base.base" = type { %"struct.std::__detail::__variant::_Variant_storage.base" }
%"struct.std::__detail::__variant::_Variant_storage.base" = type { %"union.std::__detail::__variant::_Variadic_union", i8 }
%"union.std::__detail::__variant::_Variadic_union" = type { %"union.std::__detail::__variant::_Variadic_union.40" }
%"union.std::__detail::__variant::_Variadic_union.40" = type { %"union.std::__detail::__variant::_Variadic_union.42" }
%"union.std::__detail::__variant::_Variadic_union.42" = type { %"struct.std::__detail::__variant::_Uninitialized.43" }
%"struct.std::__detail::__variant::_Uninitialized.43" = type { %"struct.__gnu_cxx::__aligned_membuf" }
%"struct.__gnu_cxx::__aligned_membuf" = type { [184 x i8] }
%"class.std::filesystem::__cxx11::path" = type { %"class.std::__cxx11::basic_string", %"struct.std::filesystem::__cxx11::path::_List" }
%"struct.std::filesystem::__cxx11::path::_List" = type { %"class.std::unique_ptr.31" }
%"class.std::unique_ptr.31" = type { %"struct.std::__uniq_ptr_data.32" }
%"struct.std::__uniq_ptr_data.32" = type { %"class.std::__uniq_ptr_impl.33" }
%"class.std::__uniq_ptr_impl.33" = type { %"class.std::tuple.34" }
%"class.std::tuple.34" = type { %"struct.std::_Tuple_impl.35" }
%"struct.std::_Tuple_impl.35" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }
%"struct.fastgltf::Mesh" = type { %"class.std::vector.166", %"class.std::vector.169", %"class.std::__cxx11::basic_string.74" }
%"class.std::vector.166" = type { %"struct.std::_Vector_base.167" }
%"struct.std::_Vector_base.167" = type { %"struct.std::_Vector_base<fastgltf::Primitive, std::pmr::polymorphic_allocator<fastgltf::Primitive>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Primitive, std::pmr::polymorphic_allocator<fastgltf::Primitive>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.168", %"struct.std::_Vector_base<fastgltf::Primitive, std::pmr::polymorphic_allocator<fastgltf::Primitive>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.168" = type { ptr }
%"struct.std::_Vector_base<fastgltf::Primitive, std::pmr::polymorphic_allocator<fastgltf::Primitive>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.169" = type { %"struct.std::_Vector_base.170" }
%"struct.std::_Vector_base.170" = type { %"struct.std::_Vector_base<float, std::pmr::polymorphic_allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::pmr::polymorphic_allocator<float>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.171", %"struct.std::_Vector_base<float, std::pmr::polymorphic_allocator<float>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.171" = type { ptr }
%"struct.std::_Vector_base<float, std::pmr::polymorphic_allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.fastgltf::Primitive" = type { %"class.fastgltf::SmallVector.77", i8, %"class.std::vector.173", %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.176" }
%"class.fastgltf::SmallVector.77" = type { %"struct.std::array.78", %"class.std::pmr::polymorphic_allocator", ptr, i64, i64 }
%"struct.std::array.78" = type { [192 x i8] }
%"class.std::pmr::polymorphic_allocator" = type { ptr }
%"class.std::vector.173" = type { %"struct.std::_Vector_base.174" }
%"struct.std::_Vector_base.174" = type { %"struct.std::_Vector_base<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>, std::pmr::polymorphic_allocator<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>, std::pmr::polymorphic_allocator<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.175", %"struct.std::_Vector_base<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>, std::pmr::polymorphic_allocator<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.175" = type { ptr }
%"struct.std::_Vector_base<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>, std::pmr::polymorphic_allocator<fastgltf::SmallVector<fastgltf::Attribute, 4, std::pmr::polymorphic_allocator<fastgltf::Attribute>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<fastgltf::OptionalWithFlagValue<unsigned long>, std::allocator<fastgltf::OptionalWithFlagValue<unsigned long>>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::OptionalWithFlagValue<unsigned long>, std::allocator<fastgltf::OptionalWithFlagValue<unsigned long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::OptionalWithFlagValue<unsigned long>, std::allocator<fastgltf::OptionalWithFlagValue<unsigned long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::OptionalWithFlagValue<unsigned long>, std::allocator<fastgltf::OptionalWithFlagValue<unsigned long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZN8fastgltfL17crcStringFunctionE = external hidden global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [19 x i8], align 1
@_ZN8fastgltfL16extensionStringsE = external hidden constant %"struct.std::array.416", align 8

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

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

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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result") align 8, ptr noundef nonnull align 8 dereferenceable(20)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i1 @llvm.expect.i1(i1, i1) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #4 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef, i64 noundef) #5

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.23") align 8, ptr noundef nonnull align 8 dereferenceable(20)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef, i32 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.simdjson::dom::key_value_pair") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK8fastgltf6Parser19generateMeshIndicesERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(304) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8fastgltf6Parser5parseEN8simdjson3dom6objectENS_8CategoryE(ptr dead_on_unwind noalias writable sret(%"class.fastgltf::Expected.408") align 8 %0, ptr noundef nonnull align 8 dereferenceable(312) %1, ptr %2, i64 %3, i32 noundef %4) #6 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca %"class.simdjson::dom::object", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.fastgltf::Asset", align 8
  %11 = alloca %"class.std::shared_ptr", align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.simdjson::dom::object", align 8
  %15 = alloca %"struct.fastgltf::AssetInfo", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"struct.simdjson::simdjson_result", align 8
  %18 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::basic_string_view", align 8
  %21 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %22 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.std::basic_string_view", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::basic_string_view", align 8
  %28 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %29 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.std::basic_string_view", align 8
  %33 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %34 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.simdjson::dom::array", align 8
  %38 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %39 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.simdjson::dom::array::iterator", align 8
  %42 = alloca %"class.simdjson::dom::array::iterator", align 8
  %43 = alloca %"class.simdjson::dom::element", align 8
  %44 = alloca %"class.std::basic_string_view", align 8
  %45 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %46 = alloca i8, align 1
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.std::basic_string_view", align 8
  %54 = alloca %"class.std::basic_string_view", align 8
  %55 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %56 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca %"class.simdjson::dom::object::iterator", align 8
  %60 = alloca %"class.simdjson::dom::object::iterator", align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.simdjson::dom::key_value_pair", align 8
  %63 = alloca i32, align 4
  %64 = alloca %"class.std::basic_string_view", align 8
  %65 = alloca i64, align 8
  %66 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %67 = alloca { i64, i32 }, align 8
  %68 = alloca i64, align 8
  %69 = alloca %"class.simdjson::dom::object", align 8
  %70 = alloca %"struct.simdjson::simdjson_result", align 8
  %71 = alloca i64, align 8
  %72 = alloca %"class.simdjson::dom::array", align 8
  %73 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %74 = alloca i64, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca %"class.simdjson::dom::array::iterator", align 8
  %90 = alloca %"class.simdjson::dom::array::iterator", align 8
  %91 = alloca %"class.simdjson::dom::element", align 8
  %92 = alloca %"class.std::basic_string_view", align 8
  %93 = alloca i32, align 4
  %94 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %95 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %96 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %97 = alloca i64, align 8
  %98 = alloca i64, align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.172", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.172", align 8
  %106 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8
  %107 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 0
  store ptr %2, ptr %107, align 8
  %108 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 1
  store i64 %3, ptr %108, align 8
  store ptr %1, ptr %8, align 8, !tbaa !5
  store i32 %4, ptr %9, align 4, !tbaa !9
  %109 = load ptr, ptr %8, align 8
  call void @_ZN8fastgltf6Parser14fillCategoriesERNS_8CategoryE(ptr noundef nonnull align 4 dereferenceable(4) %9) #9
  call void @llvm.lifetime.start.p0(i64 584, ptr %10) #9
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 584, i1 false)
  call void @_ZN8fastgltf5AssetC2Ev(ptr noundef nonnull align 8 dereferenceable(580) %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #9
  invoke void @_ZSt11make_sharedIN8fastgltf19ChunkMemoryResourceEJEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %11)
          to label %110 unwind label %128

110:                                              ; preds = %5
  %111 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 3
  %112 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  %113 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 0
  %114 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull align 8 dereferenceable(16) %112) #9
  call void @_ZNSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  %115 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 5
  %116 = load i64, ptr %115, align 8, !tbaa !11
  %117 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %116, i64 noundef 2)
          to label %118 unwind label %132

118:                                              ; preds = %110
  br i1 %117, label %246, label %119

119:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.start.p0(i64 120, ptr %15) #9
  %120 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %120) #9
  %121 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %121) #9
  %122 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %122) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #9
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef @.str.32) #9
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %17, ptr noundef nonnull align 8 dereferenceable(20) %18) #9
  %123 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %17, ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #9
  store i32 %123, ptr %16, align 4, !tbaa !43
  %124 = load i32, ptr %16, align 4, !tbaa !43
  %125 = icmp eq i32 %124, 20
  br i1 %125, label %126, label %140

126:                                              ; preds = %119
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 6)
          to label %127 unwind label %136

127:                                              ; preds = %126
  store i32 1, ptr %19, align 4
  br label %234

128:                                              ; preds = %5
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %12, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  br label %771

132:                                              ; preds = %110
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %12, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %13, align 4
  br label %771

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

140:                                              ; preds = %119
  %141 = load i32, ptr %16, align 4, !tbaa !43
  %142 = icmp ne i32 %141, 0
  %143 = call i1 @llvm.expect.i1(i1 %142, i1 false)
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 4)
          to label %145 unwind label %136

145:                                              ; preds = %144
  store i32 1, ptr %19, align 4
  br label %234

146:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #9
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.33) #9
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %21, ptr noundef nonnull align 8 dereferenceable(20) %22) #9
  %147 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %21, ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  %148 = icmp ne i32 %147, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #9
  %149 = call i1 @llvm.expect.i1(i1 %148, i1 false)
  br i1 %149, label %150, label %156

150:                                              ; preds = %146
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 6)
          to label %151 unwind label %152

151:                                              ; preds = %150
  store i32 1, ptr %19, align 4
  br label %233

152:                                              ; preds = %150
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %12, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %13, align 4
  br label %244

156:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #9
  %157 = invoke { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef 0, i64 noundef 1)
          to label %158 unwind label %171

158:                                              ; preds = %156
  %159 = getelementptr inbounds { i64, ptr }, ptr %24, i32 0, i32 0
  %160 = extractvalue { i64, ptr } %157, 0
  store i64 %160, ptr %159, align 8
  %161 = getelementptr inbounds { i64, ptr }, ptr %24, i32 0, i32 1
  %162 = extractvalue { i64, ptr } %157, 1
  store ptr %162, ptr %161, align 8
  %163 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt17basic_string_viewIcSt11char_traitsIcEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %24, i64 noundef 0) #9
  %164 = load i8, ptr %163, align 1, !tbaa !45
  %165 = sext i8 %164 to i32
  %166 = sub nsw i32 %165, 48
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  store i32 %166, ptr %23, align 4, !tbaa !46
  %167 = load i32, ptr %23, align 4, !tbaa !46
  %168 = icmp ne i32 %167, 2
  br i1 %168, label %169, label %179

169:                                              ; preds = %158
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 10)
          to label %170 unwind label %175

170:                                              ; preds = %169
  store i32 1, ptr %19, align 4
  br label %232

171:                                              ; preds = %156
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %12, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br label %243

175:                                              ; preds = %169
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %12, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %13, align 4
  br label %243

179:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %180 unwind label %192

180:                                              ; preds = %179
  %181 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 0
  %182 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %181, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %183 unwind label %196

183:                                              ; preds = %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #9
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.34) #9
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %28, ptr noundef nonnull align 8 dereferenceable(20) %29) #9
  %184 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %28, ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  %185 = icmp eq i32 %184, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #9
  %186 = call i1 @llvm.expect.i1(i1 %185, i1 true)
  br i1 %186, label %187, label %210

187:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %188 unwind label %201

188:                                              ; preds = %187
  %189 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 1
  %190 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %189, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %191 unwind label %205

191:                                              ; preds = %188
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  br label %210

192:                                              ; preds = %179
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %12, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %13, align 4
  br label %200

196:                                              ; preds = %180
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %12, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %200

200:                                              ; preds = %196, %192
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %243

201:                                              ; preds = %187
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %12, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %13, align 4
  br label %209

205:                                              ; preds = %188
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %12, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %209

209:                                              ; preds = %205, %201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  br label %242

210:                                              ; preds = %191, %183
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #9
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #9
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.35) #9
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %33, ptr noundef nonnull align 8 dereferenceable(20) %34) #9
  %211 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %33, ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  %212 = icmp eq i32 %211, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #9
  %213 = call i1 @llvm.expect.i1(i1 %212, i1 true)
  br i1 %213, label %214, label %228

214:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %215 unwind label %219

215:                                              ; preds = %214
  %216 = getelementptr inbounds %"struct.fastgltf::AssetInfo", ptr %15, i32 0, i32 2
  %217 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %216, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %218 unwind label %223

218:                                              ; preds = %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %228

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

223:                                              ; preds = %215
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %12, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %227

227:                                              ; preds = %223, %219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %241

228:                                              ; preds = %218, %210
  %229 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 1
  %230 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNSt8optionalIN8fastgltf9AssetInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(128) %229, ptr noundef nonnull align 8 dereferenceable(120) %15)
          to label %231 unwind label %237

231:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  store i32 0, ptr %19, align 4
  br label %232

232:                                              ; preds = %231, %170
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %233

233:                                              ; preds = %232, %151
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %234

234:                                              ; preds = %233, %145, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  %235 = load i32, ptr %19, align 4
  switch i32 %235, label %770 [
    i32 0, label %236
  ]

236:                                              ; preds = %234
  br label %246

237:                                              ; preds = %228
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %12, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %13, align 4
  br label %241

241:                                              ; preds = %237, %227
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  br label %242

242:                                              ; preds = %241, %209
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %243

243:                                              ; preds = %242, %200, %175, %171
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %244

244:                                              ; preds = %243, %152
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  br label %245

245:                                              ; preds = %244, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  br label %771

246:                                              ; preds = %236, %118
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #9
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #9
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef @.str.36) #9
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %38, ptr noundef nonnull align 8 dereferenceable(20) %39) #9
  %247 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %38, ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  %248 = icmp eq i32 %247, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #9
  %249 = call i1 @llvm.expect.i1(i1 %248, i1 true)
  br i1 %249, label %250, label %371

250:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  store ptr %37, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #9
  %251 = load ptr, ptr %40, align 8, !tbaa !5
  %252 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %251) #9
  %253 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %41, i32 0, i32 0
  %254 = getelementptr inbounds { ptr, i64 }, ptr %253, i32 0, i32 0
  %255 = extractvalue { ptr, i64 } %252, 0
  store ptr %255, ptr %254, align 8
  %256 = getelementptr inbounds { ptr, i64 }, ptr %253, i32 0, i32 1
  %257 = extractvalue { ptr, i64 } %252, 1
  store i64 %257, ptr %256, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #9
  %258 = load ptr, ptr %40, align 8, !tbaa !5
  %259 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %258) #9
  %260 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %42, i32 0, i32 0
  %261 = getelementptr inbounds { ptr, i64 }, ptr %260, i32 0, i32 0
  %262 = extractvalue { ptr, i64 } %259, 0
  store ptr %262, ptr %261, align 8
  %263 = getelementptr inbounds { ptr, i64 }, ptr %260, i32 0, i32 1
  %264 = extractvalue { ptr, i64 } %259, 1
  store i64 %264, ptr %263, align 8
  br label %265

265:                                              ; preds = %355, %250
  %266 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  br i1 %266, label %268, label %267

267:                                              ; preds = %265
  store i32 2, ptr %19, align 4
  br label %368

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #9
  %269 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  %270 = getelementptr inbounds %"class.simdjson::dom::element", ptr %43, i32 0, i32 0
  %271 = getelementptr inbounds { ptr, i64 }, ptr %270, i32 0, i32 0
  %272 = extractvalue { ptr, i64 } %269, 0
  store ptr %272, ptr %271, align 8
  %273 = getelementptr inbounds { ptr, i64 }, ptr %270, i32 0, i32 1
  %274 = extractvalue { ptr, i64 } %269, 1
  store i64 %274, ptr %273, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #9
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #9
  call void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  %275 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %45, ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  %276 = icmp ne i32 %275, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #9
  %277 = call i1 @llvm.expect.i1(i1 %276, i1 false)
  br i1 %277, label %278, label %284

278:                                              ; preds = %268
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
          to label %279 unwind label %280

279:                                              ; preds = %278
  store i32 1, ptr %19, align 4
  br label %349

280:                                              ; preds = %278
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %12, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %13, align 4
  br label %367

284:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #9
  store i8 0, ptr %46, align 1, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  store ptr @_ZN8fastgltfL16extensionStringsE, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %285 = call noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE5beginEv(ptr noundef nonnull align 8 dereferenceable(552) @_ZN8fastgltfL16extensionStringsE) #9
  store ptr %285, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %286 = call noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE3endEv(ptr noundef nonnull align 8 dereferenceable(552) @_ZN8fastgltfL16extensionStringsE) #9
  store ptr %286, ptr %49, align 8, !tbaa !5
  br label %287

287:                                              ; preds = %327, %284
  %288 = load ptr, ptr %48, align 8, !tbaa !5
  %289 = load ptr, ptr %49, align 8, !tbaa !5
  %290 = icmp ne ptr %288, %289
  br i1 %290, label %292, label %291

291:                                              ; preds = %287
  store i32 4, ptr %19, align 4
  br label %330

292:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %293 = load ptr, ptr %48, align 8, !tbaa !5
  store ptr %293, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %294 = load ptr, ptr %50, align 8, !tbaa !5
  %295 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24) %294) #9
  store ptr %295, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %296 = load ptr, ptr %50, align 8, !tbaa !5
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24) %296) #9
  store ptr %297, ptr %52, align 8, !tbaa !5
  %298 = load ptr, ptr %51, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %53, ptr align 8 %298, i64 16, i1 false), !tbaa.struct !50
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %44, i64 16, i1 false), !tbaa.struct !50
  %299 = getelementptr inbounds { i64, ptr }, ptr %53, i32 0, i32 0
  %300 = load i64, ptr %299, align 8
  %301 = getelementptr inbounds { i64, ptr }, ptr %53, i32 0, i32 1
  %302 = load ptr, ptr %301, align 8
  %303 = getelementptr inbounds { i64, ptr }, ptr %54, i32 0, i32 0
  %304 = load i64, ptr %303, align 8
  %305 = getelementptr inbounds { i64, ptr }, ptr %54, i32 0, i32 1
  %306 = load ptr, ptr %305, align 8
  %307 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ES5_(i64 %300, ptr %302, i64 %304, ptr %306) #9
  br i1 %307, label %308, label %323

308:                                              ; preds = %292
  store i8 1, ptr %46, align 1, !tbaa !48
  %309 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 1
  %310 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %309, i32 0, i32 5
  %311 = load i64, ptr %310, align 8, !tbaa !52
  %312 = load ptr, ptr %52, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !53
  %314 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %311, i64 noundef %313)
          to label %315 unwind label %318

315:                                              ; preds = %308
  br i1 %314, label %322, label %316

316:                                              ; preds = %315
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 2)
          to label %317 unwind label %318

317:                                              ; preds = %316
  store i32 1, ptr %19, align 4
  br label %324

318:                                              ; preds = %316, %308
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %12, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %366

322:                                              ; preds = %315
  store i32 4, ptr %19, align 4
  br label %324

323:                                              ; preds = %292
  store i32 0, ptr %19, align 4
  br label %324

324:                                              ; preds = %323, %322, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  %325 = load i32, ptr %19, align 4
  switch i32 %325, label %330 [
    i32 0, label %326
  ]

326:                                              ; preds = %324
  br label %327

327:                                              ; preds = %326
  %328 = load ptr, ptr %48, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.std::pair.417", ptr %328, i32 1
  store ptr %329, ptr %48, align 8, !tbaa !5
  br label %287

330:                                              ; preds = %324, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  %331 = load i32, ptr %19, align 4
  switch i32 %331, label %348 [
    i32 4, label %332
  ]

332:                                              ; preds = %330
  %333 = load i8, ptr %46, align 1, !tbaa !48, !range !54, !noundef !55
  %334 = trunc i8 %333 to i1
  br i1 %334, label %341, label %335

335:                                              ; preds = %332
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 3)
          to label %336 unwind label %337

336:                                              ; preds = %335
  store i32 1, ptr %19, align 4
  br label %348

337:                                              ; preds = %335
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %12, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %13, align 4
  br label %366

341:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 40, ptr %55) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %342 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 3
  %343 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %342) #9
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %343) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %55, ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %344 unwind label %357

344:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  %345 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 3
  %346 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %345, ptr noundef nonnull align 8 dereferenceable(40) %55)
          to label %347 unwind label %361

347:                                              ; preds = %344
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #9
  store i32 0, ptr %19, align 4
  br label %348

348:                                              ; preds = %347, %336, %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  br label %349

349:                                              ; preds = %348, %279
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  %350 = load i32, ptr %19, align 4
  switch i32 %350, label %352 [
    i32 0, label %351
  ]

351:                                              ; preds = %349
  store i32 0, ptr %19, align 4
  br label %352

352:                                              ; preds = %351, %349
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  %353 = load i32, ptr %19, align 4
  switch i32 %353, label %368 [
    i32 0, label %354
  ]

354:                                              ; preds = %352
  br label %355

355:                                              ; preds = %354
  %356 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  br label %265

357:                                              ; preds = %341
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %12, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %365

361:                                              ; preds = %344
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %12, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #9
  br label %365

365:                                              ; preds = %361, %357
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #9
  br label %366

366:                                              ; preds = %365, %337, %318
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  br label %367

367:                                              ; preds = %366, %280
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  br label %769

368:                                              ; preds = %352, %267
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  %369 = load i32, ptr %19, align 4
  switch i32 %369, label %768 [
    i32 2, label %370
  ]

370:                                              ; preds = %368
  br label %371

371:                                              ; preds = %370, %246
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  store i32 0, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  store ptr %7, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #9
  %372 = load ptr, ptr %58, align 8, !tbaa !5
  %373 = call { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %372) #9
  %374 = getelementptr inbounds %"class.simdjson::dom::object::iterator", ptr %59, i32 0, i32 0
  %375 = getelementptr inbounds { ptr, i64 }, ptr %374, i32 0, i32 0
  %376 = extractvalue { ptr, i64 } %373, 0
  store ptr %376, ptr %375, align 8
  %377 = getelementptr inbounds { ptr, i64 }, ptr %374, i32 0, i32 1
  %378 = extractvalue { ptr, i64 } %373, 1
  store i64 %378, ptr %377, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #9
  %379 = load ptr, ptr %58, align 8, !tbaa !5
  %380 = call { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16) %379) #9
  %381 = getelementptr inbounds %"class.simdjson::dom::object::iterator", ptr %60, i32 0, i32 0
  %382 = getelementptr inbounds { ptr, i64 }, ptr %381, i32 0, i32 0
  %383 = extractvalue { ptr, i64 } %380, 0
  store ptr %383, ptr %382, align 8
  %384 = getelementptr inbounds { ptr, i64 }, ptr %381, i32 0, i32 1
  %385 = extractvalue { ptr, i64 } %380, 1
  store i64 %385, ptr %384, align 8
  br label %386

386:                                              ; preds = %665, %371
  %387 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  br i1 %387, label %389, label %388

388:                                              ; preds = %386
  store i32 6, ptr %19, align 4
  br label %670

389:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #9
  call void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind writable sret(%"class.simdjson::dom::key_value_pair") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  store ptr %62, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %390 = load ptr, ptr @_ZN8fastgltfL17crcStringFunctionE, align 8, !tbaa !5
  %391 = load ptr, ptr %61, align 8, !tbaa !5
  %392 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %391, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %392, i64 16, i1 false), !tbaa.struct !50
  %393 = getelementptr inbounds { i64, ptr }, ptr %64, i32 0, i32 0
  %394 = load i64, ptr %393, align 8
  %395 = getelementptr inbounds { i64, ptr }, ptr %64, i32 0, i32 1
  %396 = load ptr, ptr %395, align 8
  %397 = invoke noundef i32 %390(i64 %394, ptr %396)
          to label %398 unwind label %410

398:                                              ; preds = %389
  store i32 %397, ptr %63, align 4, !tbaa !46
  %399 = load i32, ptr %63, align 4, !tbaa !46
  %400 = icmp eq i32 %399, -930631216
  br i1 %400, label %401, label %423

401:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #9
  %402 = load ptr, ptr %61, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %402, i32 0, i32 1
  %404 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %403) #9
  store { i64, i32 } %404, ptr %67, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %67, i64 12, i1 false)
  %405 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %66, ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  %406 = icmp ne i32 %405, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #9
  %407 = call i1 @llvm.expect.i1(i1 %406, i1 false)
  br i1 %407, label %408, label %418

408:                                              ; preds = %401
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
          to label %409 unwind label %414

409:                                              ; preds = %408
  store i32 1, ptr %19, align 4
  br label %422

410:                                              ; preds = %389
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %12, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %13, align 4
  br label %669

414:                                              ; preds = %408
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %12, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %669

418:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %419 = load i64, ptr %65, align 8, !tbaa !51
  store i64 %419, ptr %68, align 8, !tbaa !51
  %420 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 4
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  store i32 7, ptr %19, align 4
  br label %422

422:                                              ; preds = %418, %409
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %659

423:                                              ; preds = %398
  %424 = load i32, ptr %63, align 4, !tbaa !46
  %425 = icmp eq i32 %424, 1200630171
  br i1 %425, label %426, label %456

426:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #9
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %70) #9
  %427 = load ptr, ptr %61, align 8, !tbaa !5
  %428 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %427, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %70, ptr noundef nonnull align 8 dereferenceable(16) %428) #9
  %429 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %70, ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  %430 = icmp ne i32 %429, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %70) #9
  %431 = call i1 @llvm.expect.i1(i1 %430, i1 false)
  br i1 %431, label %432, label %438

432:                                              ; preds = %426
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
          to label %433 unwind label %434

433:                                              ; preds = %432
  store i32 1, ptr %19, align 4
  br label %454

434:                                              ; preds = %432
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %12, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %13, align 4
  br label %455

438:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %439 = invoke noundef i64 @_ZN8fastgltf6Parser15parseExtensionsERN8simdjson3dom6objectERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %440 unwind label %446

440:                                              ; preds = %438
  store i64 %439, ptr %71, align 8, !tbaa !56
  %441 = load i64, ptr %71, align 8, !tbaa !56
  %442 = icmp ne i64 %441, 0
  br i1 %442, label %443, label %450

443:                                              ; preds = %440
  %444 = load i64, ptr %71, align 8, !tbaa !56
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %444)
          to label %445 unwind label %446

445:                                              ; preds = %443
  store i32 1, ptr %19, align 4
  br label %451

446:                                              ; preds = %443, %438
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %12, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %455

450:                                              ; preds = %440
  store i32 0, ptr %19, align 4
  br label %451

451:                                              ; preds = %450, %445
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  %452 = load i32, ptr %19, align 4
  switch i32 %452, label %454 [
    i32 0, label %453
  ]

453:                                              ; preds = %451
  store i32 7, ptr %19, align 4
  br label %454

454:                                              ; preds = %453, %451, %433
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #9
  br label %659

455:                                              ; preds = %446, %434
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #9
  br label %669

456:                                              ; preds = %423
  %457 = load i32, ptr %63, align 4, !tbaa !46
  %458 = icmp eq i32 %457, 875961014
  br i1 %458, label %462, label %459

459:                                              ; preds = %456
  %460 = load i32, ptr %63, align 4, !tbaa !46
  %461 = icmp eq i32 %460, -1235869229
  br i1 %461, label %462, label %463

462:                                              ; preds = %459, %456
  store i32 7, ptr %19, align 4
  br label %659

463:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #9
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %73) #9
  %464 = load ptr, ptr %61, align 8, !tbaa !5
  %465 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %464, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %465) #9
  %466 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %73, ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  %467 = icmp ne i32 %466, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %73) #9
  %468 = call i1 @llvm.expect.i1(i1 %467, i1 false)
  br i1 %468, label %469, label %475

469:                                              ; preds = %463
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
          to label %470 unwind label %471

470:                                              ; preds = %469
  store i32 1, ptr %19, align 4
  br label %658

471:                                              ; preds = %469
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %12, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %13, align 4
  br label %668

475:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  store i64 0, ptr %74, align 8, !tbaa !56
  %476 = load i32, ptr %63, align 4, !tbaa !46
  switch i32 %476, label %649 [
    i32 -1509286295, label %477
    i32 -1932512752, label %490
    i32 1658918231, label %499
    i32 -691820536, label %508
    i32 -1742910351, label %517
    i32 2036842032, label %526
    i32 1775807363, label %535
    i32 341265094, label %544
    i32 -306347709, label %553
    i32 1689921540, label %562
    i32 -1311522333, label %571
    i32 -1363974034, label %580
    i32 -988781707, label %589
    i32 564255784, label %598
    i32 496668558, label %648
  ]

477:                                              ; preds = %475
  %478 = load i32, ptr %9, align 4, !tbaa !9
  %479 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %478, i32 noundef 4)
          to label %480 unwind label %484

480:                                              ; preds = %477
  br i1 %479, label %481, label %488

481:                                              ; preds = %480
  %482 = invoke noundef i64 @_ZN8fastgltf6Parser14parseAccessorsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %483 unwind label %484

483:                                              ; preds = %481
  store i64 %482, ptr %74, align 8, !tbaa !56
  br label %488

484:                                              ; preds = %653, %593, %589, %584, %580, %575, %571, %566, %562, %557, %553, %548, %544, %539, %535, %530, %526, %521, %517, %512, %508, %503, %499, %494, %490, %481, %477
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %12, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %13, align 4
  br label %667

488:                                              ; preds = %483, %480
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  store i32 4, ptr %75, align 4, !tbaa !9
  %489 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %75) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %650

490:                                              ; preds = %475
  %491 = load i32, ptr %9, align 4, !tbaa !9
  %492 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %491, i32 noundef 64)
          to label %493 unwind label %484

493:                                              ; preds = %490
  br i1 %492, label %494, label %497

494:                                              ; preds = %493
  %495 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAnimationsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %496 unwind label %484

496:                                              ; preds = %494
  store i64 %495, ptr %74, align 8, !tbaa !56
  br label %497

497:                                              ; preds = %496, %493
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #9
  store i32 64, ptr %76, align 4, !tbaa !9
  %498 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  br label %650

499:                                              ; preds = %475
  %500 = load i32, ptr %9, align 4, !tbaa !9
  %501 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %500, i32 noundef 1)
          to label %502 unwind label %484

502:                                              ; preds = %499
  br i1 %501, label %503, label %506

503:                                              ; preds = %502
  %504 = invoke noundef i64 @_ZN8fastgltf6Parser12parseBuffersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %505 unwind label %484

505:                                              ; preds = %503
  store i64 %504, ptr %74, align 8, !tbaa !56
  br label %506

506:                                              ; preds = %505, %502
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  store i32 1, ptr %77, align 4, !tbaa !9
  %507 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %77) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %650

508:                                              ; preds = %475
  %509 = load i32, ptr %9, align 4, !tbaa !9
  %510 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %509, i32 noundef 2)
          to label %511 unwind label %484

511:                                              ; preds = %508
  br i1 %510, label %512, label %515

512:                                              ; preds = %511
  %513 = invoke noundef i64 @_ZN8fastgltf6Parser16parseBufferViewsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %514 unwind label %484

514:                                              ; preds = %512
  store i64 %513, ptr %74, align 8, !tbaa !56
  br label %515

515:                                              ; preds = %514, %511
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #9
  store i32 2, ptr %78, align 4, !tbaa !9
  %516 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %78) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #9
  br label %650

517:                                              ; preds = %475
  %518 = load i32, ptr %9, align 4, !tbaa !9
  %519 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %518, i32 noundef 128)
          to label %520 unwind label %484

520:                                              ; preds = %517
  br i1 %519, label %521, label %524

521:                                              ; preds = %520
  %522 = invoke noundef i64 @_ZN8fastgltf6Parser12parseCamerasERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %523 unwind label %484

523:                                              ; preds = %521
  store i64 %522, ptr %74, align 8, !tbaa !56
  br label %524

524:                                              ; preds = %523, %520
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #9
  store i32 128, ptr %79, align 4, !tbaa !9
  %525 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %79) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %650

526:                                              ; preds = %475
  %527 = load i32, ptr %9, align 4, !tbaa !9
  %528 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %527, i32 noundef 8)
          to label %529 unwind label %484

529:                                              ; preds = %526
  br i1 %528, label %530, label %533

530:                                              ; preds = %529
  %531 = invoke noundef i64 @_ZN8fastgltf6Parser11parseImagesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %532 unwind label %484

532:                                              ; preds = %530
  store i64 %531, ptr %74, align 8, !tbaa !56
  br label %533

533:                                              ; preds = %532, %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #9
  store i32 8, ptr %80, align 4, !tbaa !9
  %534 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %80) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %650

535:                                              ; preds = %475
  %536 = load i32, ptr %9, align 4, !tbaa !9
  %537 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %536, i32 noundef 256)
          to label %538 unwind label %484

538:                                              ; preds = %535
  br i1 %537, label %539, label %542

539:                                              ; preds = %538
  %540 = invoke noundef i64 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %541 unwind label %484

541:                                              ; preds = %539
  store i64 %540, ptr %74, align 8, !tbaa !56
  br label %542

542:                                              ; preds = %541, %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #9
  store i32 256, ptr %81, align 4, !tbaa !9
  %543 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %81) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  br label %650

544:                                              ; preds = %475
  %545 = load i32, ptr %9, align 4, !tbaa !9
  %546 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %545, i32 noundef 512)
          to label %547 unwind label %484

547:                                              ; preds = %544
  br i1 %546, label %548, label %551

548:                                              ; preds = %547
  %549 = invoke noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %550 unwind label %484

550:                                              ; preds = %548
  store i64 %549, ptr %74, align 8, !tbaa !56
  br label %551

551:                                              ; preds = %550, %547
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #9
  store i32 512, ptr %82, align 4, !tbaa !9
  %552 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  br label %650

553:                                              ; preds = %475
  %554 = load i32, ptr %9, align 4, !tbaa !9
  %555 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %554, i32 noundef 2048)
          to label %556 unwind label %484

556:                                              ; preds = %553
  br i1 %555, label %557, label %560

557:                                              ; preds = %556
  %558 = invoke noundef i64 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %559 unwind label %484

559:                                              ; preds = %557
  store i64 %558, ptr %74, align 8, !tbaa !56
  br label %560

560:                                              ; preds = %559, %556
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #9
  store i32 2048, ptr %83, align 4, !tbaa !9
  %561 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %83) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %650

562:                                              ; preds = %475
  %563 = load i32, ptr %9, align 4, !tbaa !9
  %564 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %563, i32 noundef 16)
          to label %565 unwind label %484

565:                                              ; preds = %562
  br i1 %564, label %566, label %569

566:                                              ; preds = %565
  %567 = invoke noundef i64 @_ZN8fastgltf6Parser13parseSamplersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %568 unwind label %484

568:                                              ; preds = %566
  store i64 %567, ptr %74, align 8, !tbaa !56
  br label %569

569:                                              ; preds = %568, %565
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  store i32 16, ptr %84, align 4, !tbaa !9
  %570 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %84) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %650

571:                                              ; preds = %475
  %572 = load i32, ptr %9, align 4, !tbaa !9
  %573 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %572, i32 noundef 4096)
          to label %574 unwind label %484

574:                                              ; preds = %571
  br i1 %573, label %575, label %578

575:                                              ; preds = %574
  %576 = invoke noundef i64 @_ZN8fastgltf6Parser11parseScenesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %577 unwind label %484

577:                                              ; preds = %575
  store i64 %576, ptr %74, align 8, !tbaa !56
  br label %578

578:                                              ; preds = %577, %574
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  store i32 4096, ptr %85, align 4, !tbaa !9
  %579 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %85) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  br label %650

580:                                              ; preds = %475
  %581 = load i32, ptr %9, align 4, !tbaa !9
  %582 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %581, i32 noundef 1024)
          to label %583 unwind label %484

583:                                              ; preds = %580
  br i1 %582, label %584, label %587

584:                                              ; preds = %583
  %585 = invoke noundef i64 @_ZN8fastgltf6Parser10parseSkinsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %586 unwind label %484

586:                                              ; preds = %584
  store i64 %585, ptr %74, align 8, !tbaa !56
  br label %587

587:                                              ; preds = %586, %583
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #9
  store i32 1024, ptr %86, align 4, !tbaa !9
  %588 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %86) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #9
  br label %650

589:                                              ; preds = %475
  %590 = load i32, ptr %9, align 4, !tbaa !9
  %591 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %590, i32 noundef 32)
          to label %592 unwind label %484

592:                                              ; preds = %589
  br i1 %591, label %593, label %596

593:                                              ; preds = %592
  %594 = invoke noundef i64 @_ZN8fastgltf6Parser13parseTexturesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %595 unwind label %484

595:                                              ; preds = %593
  store i64 %594, ptr %74, align 8, !tbaa !56
  br label %596

596:                                              ; preds = %595, %592
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #9
  store i32 32, ptr %87, align 4, !tbaa !9
  %597 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %87) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  br label %650

598:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  store ptr %72, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #9
  %599 = load ptr, ptr %88, align 8, !tbaa !5
  %600 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %599) #9
  %601 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %89, i32 0, i32 0
  %602 = getelementptr inbounds { ptr, i64 }, ptr %601, i32 0, i32 0
  %603 = extractvalue { ptr, i64 } %600, 0
  store ptr %603, ptr %602, align 8
  %604 = getelementptr inbounds { ptr, i64 }, ptr %601, i32 0, i32 1
  %605 = extractvalue { ptr, i64 } %600, 1
  store i64 %605, ptr %604, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #9
  %606 = load ptr, ptr %88, align 8, !tbaa !5
  %607 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %606) #9
  %608 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %90, i32 0, i32 0
  %609 = getelementptr inbounds { ptr, i64 }, ptr %608, i32 0, i32 0
  %610 = extractvalue { ptr, i64 } %607, 0
  store ptr %610, ptr %609, align 8
  %611 = getelementptr inbounds { ptr, i64 }, ptr %608, i32 0, i32 1
  %612 = extractvalue { ptr, i64 } %607, 1
  store i64 %612, ptr %611, align 8
  br label %613

613:                                              ; preds = %645, %598
  %614 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  br i1 %614, label %616, label %615

615:                                              ; preds = %613
  store i32 9, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %647

616:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #9
  %617 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  %618 = getelementptr inbounds %"class.simdjson::dom::element", ptr %91, i32 0, i32 0
  %619 = getelementptr inbounds { ptr, i64 }, ptr %618, i32 0, i32 0
  %620 = extractvalue { ptr, i64 } %617, 0
  store ptr %620, ptr %619, align 8
  %621 = getelementptr inbounds { ptr, i64 }, ptr %618, i32 0, i32 1
  %622 = extractvalue { ptr, i64 } %617, 1
  store i64 %622, ptr %621, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #9
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #9
  call void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %94, ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  %623 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %94, ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #9
  store i32 %623, ptr %93, align 4, !tbaa !43
  %624 = load i32, ptr %93, align 4, !tbaa !43
  %625 = icmp eq i32 %624, 0
  %626 = call i1 @llvm.expect.i1(i1 %625, i1 true)
  br i1 %626, label %627, label %643

627:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 40, ptr %95) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  %628 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 3
  %629 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %628) #9
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef %629) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %95, ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %630 unwind label %634

630:                                              ; preds = %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  %631 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 2
  %632 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %631, ptr noundef nonnull align 8 dereferenceable(40) %95)
          to label %633 unwind label %638

633:                                              ; preds = %630
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %95) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %95) #9
  br label %644

634:                                              ; preds = %627
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %12, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  br label %642

638:                                              ; preds = %630
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %12, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %95) #9
  br label %642

642:                                              ; preds = %638, %634
  call void @llvm.lifetime.end.p0(i64 40, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %667

643:                                              ; preds = %616
  store i64 5, ptr %74, align 8, !tbaa !56
  br label %644

644:                                              ; preds = %643, %633
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #9
  br label %645

645:                                              ; preds = %644
  %646 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  br label %613

647:                                              ; preds = %615
  br label %650

648:                                              ; preds = %475
  br label %650

649:                                              ; preds = %475
  br label %650

650:                                              ; preds = %649, %648, %647, %596, %587, %578, %569, %560, %551, %542, %533, %524, %515, %506, %497, %488
  %651 = load i64, ptr %74, align 8, !tbaa !56
  %652 = icmp ne i64 %651, 0
  br i1 %652, label %653, label %656

653:                                              ; preds = %650
  %654 = load i64, ptr %74, align 8, !tbaa !56
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %654)
          to label %655 unwind label %484

655:                                              ; preds = %653
  store i32 1, ptr %19, align 4
  br label %657

656:                                              ; preds = %650
  store i32 0, ptr %19, align 4
  br label %657

657:                                              ; preds = %656, %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %658

658:                                              ; preds = %657, %470
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #9
  br label %659

659:                                              ; preds = %658, %462, %454, %422
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  %660 = load i32, ptr %19, align 4
  switch i32 %660, label %662 [
    i32 0, label %661
  ]

661:                                              ; preds = %659
  store i32 0, ptr %19, align 4
  br label %662

662:                                              ; preds = %661, %659
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  %663 = load i32, ptr %19, align 4
  switch i32 %663, label %670 [
    i32 0, label %664
    i32 7, label %665
  ]

664:                                              ; preds = %662
  br label %665

665:                                              ; preds = %664, %662
  %666 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  br label %386

667:                                              ; preds = %642, %484
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %668

668:                                              ; preds = %667, %471
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #9
  br label %669

669:                                              ; preds = %668, %455, %414, %410
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  br label %767

670:                                              ; preds = %662, %388
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  %671 = load i32, ptr %19, align 4
  switch i32 %671, label %766 [
    i32 6, label %672
  ]

672:                                              ; preds = %670
  %673 = load i32, ptr %57, align 4, !tbaa !9
  %674 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 20
  store i32 %673, ptr %674, align 8, !tbaa !58
  %675 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 5
  %676 = load i64, ptr %675, align 8, !tbaa !11
  %677 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %676, i64 noundef 256)
          to label %678 unwind label %687

678:                                              ; preds = %672
  br i1 %677, label %679, label %699

679:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %680 = invoke noundef i64 @_ZNK8fastgltf6Parser19generateMeshIndicesERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %109, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %681 unwind label %691

681:                                              ; preds = %679
  store i64 %680, ptr %97, align 8, !tbaa !56
  %682 = load i64, ptr %97, align 8, !tbaa !56
  %683 = icmp ne i64 %682, 0
  br i1 %683, label %684, label %695

684:                                              ; preds = %681
  %685 = load i64, ptr %97, align 8, !tbaa !56
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %685)
          to label %686 unwind label %691

686:                                              ; preds = %684
  store i32 1, ptr %19, align 4
  br label %696

687:                                              ; preds = %764, %699, %672
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %12, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %13, align 4
  br label %767

691:                                              ; preds = %684, %679
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %12, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  br label %767

695:                                              ; preds = %681
  store i32 0, ptr %19, align 4
  br label %696

696:                                              ; preds = %695, %686
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  %697 = load i32, ptr %19, align 4
  switch i32 %697, label %766 [
    i32 0, label %698
  ]

698:                                              ; preds = %696
  br label %699

699:                                              ; preds = %698, %678
  %700 = getelementptr inbounds %"class.fastgltf::Parser", ptr %109, i32 0, i32 1
  %701 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %700, i32 0, i32 5
  %702 = load i64, ptr %701, align 8, !tbaa !52
  %703 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %702, i64 noundef 16777216)
          to label %704 unwind label %687

704:                                              ; preds = %699
  br i1 %703, label %705, label %764

705:                                              ; preds = %704
  %706 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 19
  %707 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %706) #9
  br i1 %707, label %764, label %708

708:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %709 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 19
  %710 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %709) #9
  store i64 %710, ptr %98, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %711 = getelementptr inbounds %"class.fastgltf::Asset", ptr %10, i32 0, i32 13
  store ptr %711, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %712 = load ptr, ptr %99, align 8, !tbaa !5
  %713 = call ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %712) #9
  %714 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %100, i32 0, i32 0
  store ptr %713, ptr %714, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %715 = load ptr, ptr %99, align 8, !tbaa !5
  %716 = call ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %715) #9
  %717 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %101, i32 0, i32 0
  store ptr %716, ptr %717, align 8
  br label %718

718:                                              ; preds = %761, %708
  %719 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  br i1 %719, label %721, label %720

720:                                              ; preds = %718
  store i32 11, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  br label %763

721:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #9
  %722 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  store ptr %722, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  %723 = load ptr, ptr %102, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %723, i32 0, i32 0
  store ptr %724, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #9
  %725 = load ptr, ptr %103, align 8, !tbaa !5
  %726 = call ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %725) #9
  %727 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.172", ptr %104, i32 0, i32 0
  store ptr %726, ptr %727, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #9
  %728 = load ptr, ptr %103, align 8, !tbaa !5
  %729 = call ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %728) #9
  %730 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.172", ptr %105, i32 0, i32 0
  store ptr %729, ptr %730, align 8
  br label %731

731:                                              ; preds = %754, %721
  %732 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105) #9
  br i1 %732, label %734, label %733

733:                                              ; preds = %731
  store i32 13, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  br label %760

734:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  %735 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #9
  store ptr %735, ptr %106, align 8, !tbaa !5
  %736 = load ptr, ptr %106, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %736, i32 0, i32 5
  %738 = call noundef zeroext i1 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %737) #9
  br i1 %738, label %745, label %739

739:                                              ; preds = %734
  %740 = load ptr, ptr %106, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %740, i32 0, i32 5
  %742 = call noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %741) #9
  %743 = load i64, ptr %98, align 8, !tbaa !51
  %744 = icmp eq i64 %742, %743
  br i1 %744, label %745, label %746

745:                                              ; preds = %739, %734
  store i32 14, ptr %19, align 4
  br label %751

746:                                              ; preds = %739
  %747 = load ptr, ptr %106, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %747, i32 0, i32 5
  %749 = load i64, ptr %98, align 8, !tbaa !51
  invoke void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %748, i64 noundef %749)
          to label %750 unwind label %756

750:                                              ; preds = %746
  store i32 0, ptr %19, align 4
  br label %751

751:                                              ; preds = %750, %745
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  %752 = load i32, ptr %19, align 4
  switch i32 %752, label %777 [
    i32 0, label %753
    i32 14, label %754
  ]

753:                                              ; preds = %751
  br label %754

754:                                              ; preds = %753, %751
  %755 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #9
  br label %731

756:                                              ; preds = %746
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %12, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %767

760:                                              ; preds = %733
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  br label %761

761:                                              ; preds = %760
  %762 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  br label %718

763:                                              ; preds = %720
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %764

764:                                              ; preds = %763, %705, %704
  invoke void @_ZN8fastgltf8ExpectedINS_5AssetEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(580) %10)
          to label %765 unwind label %687

765:                                              ; preds = %764
  store i32 1, ptr %19, align 4
  br label %766

766:                                              ; preds = %765, %696, %670
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  br label %768

767:                                              ; preds = %756, %691, %687, %669
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  br label %769

768:                                              ; preds = %766, %368
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  br label %770

769:                                              ; preds = %767, %367
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  br label %771

770:                                              ; preds = %768, %234
  call void @_ZN8fastgltf5AssetD2Ev(ptr noundef nonnull align 8 dereferenceable(580) %10) #9
  call void @llvm.lifetime.end.p0(i64 584, ptr %10) #9
  ret void

771:                                              ; preds = %769, %245, %132, %128
  call void @_ZN8fastgltf5AssetD2Ev(ptr noundef nonnull align 8 dereferenceable(580) %10) #9
  call void @llvm.lifetime.end.p0(i64 584, ptr %10) #9
  br label %772

772:                                              ; preds = %771
  %773 = load ptr, ptr %12, align 8
  %774 = load i32, ptr %13, align 4
  %775 = insertvalue { ptr, i32 } poison, ptr %773, 0
  %776 = insertvalue { ptr, i32 } %775, i32 %774, 1
  resume { ptr, i32 } %776

777:                                              ; preds = %751
  unreachable
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN8fastgltf19ChunkMemoryResourceEJEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8) #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef, i64 noundef) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.409") align 8, ptr noundef nonnull align 8 dereferenceable(20)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNSt8optionalIN8fastgltf9AssetInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(120)) #6 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.409") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE5beginEv(ptr noundef nonnull align 8 dereferenceable(552)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE3endEv(ptr noundef nonnull align 8 dereferenceable(552)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ES5_(i64, ptr, i64, ptr) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40)) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseExtensionsERN8simdjson3dom6objectERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element9get_arrayEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.23") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser14parseAccessorsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAnimationsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser12parseBuffersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser16parseBufferViewsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser12parseCamerasERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseImagesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser13parseSamplersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseScenesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser10parseSkinsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser13parseTexturesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf8ExpectedINS_5AssetEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 8 dereferenceable(580)) unnamed_addr #5 align 2

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline 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 #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #4 = { 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 #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 = !{!"_ZTSN8fastgltf8CategoryE", !7, i64 0}
!11 = !{!12, !42, i64 304}
!12 = !{!"_ZTSN8fastgltf6ParserE", !13, i64 0, !19, i64 8, !21, i64 56, !28, i64 248, !31, i64 264, !42, i64 304}
!13 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !15, i64 0}
!15 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !16, i64 0}
!16 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !17, i64 0}
!17 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !18, i64 0}
!18 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !6, i64 0}
!19 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !20, i64 40}
!20 = !{!"_ZTSN8fastgltf10ExtensionsE", !7, i64 0}
!21 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !22, i64 0}
!22 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !23, i64 0}
!23 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !24, i64 0}
!24 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !25, i64 0}
!25 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !26, i64 0}
!26 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !27, i64 0}
!27 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !7, i64 0, !7, i64 184}
!28 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !29, i64 0}
!29 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !30, i64 8}
!30 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!31 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !32, i64 0, !35, i64 32}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !33, i64 0, !34, i64 8, !7, i64 16}
!33 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!34 = !{!"long", !7, i64 0}
!35 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !36, i64 0}
!36 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !39, i64 0}
!39 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !40, i64 0}
!40 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !41, i64 0}
!41 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !6, i64 0}
!42 = !{!"_ZTSN8fastgltf7OptionsE", !7, i64 0}
!43 = !{!44, !44, i64 0}
!44 = !{!"_ZTSN8simdjson10error_codeE", !7, i64 0}
!45 = !{!7, !7, i64 0}
!46 = !{!47, !47, i64 0}
!47 = !{!"int", !7, i64 0}
!48 = !{!49, !49, i64 0}
!49 = !{!"bool", !7, i64 0}
!50 = !{i64 0, i64 8, !51, i64 8, i64 8, !5}
!51 = !{!34, !34, i64 0}
!52 = !{!12, !20, i64 48}
!53 = !{!20, !20, i64 0}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!57, !57, i64 0}
!57 = !{!"_ZTSN8fastgltf5ErrorE", !7, i64 0}
!58 = !{!59, !10, i64 576}
!59 = !{!"_ZTSN8fastgltf5AssetE", !28, i64 0, !60, i64 16, !65, i64 144, !65, i64 176, !70, i64 208, !71, i64 216, !75, i64 240, !79, i64 264, !83, i64 288, !87, i64 312, !91, i64 336, !95, i64 360, !99, i64 384, !103, i64 408, !107, i64 432, !111, i64 456, !115, i64 480, !119, i64 504, !123, i64 528, !127, i64 552, !10, i64 576}
!60 = !{!"_ZTSSt8optionalIN8fastgltf9AssetInfoEE", !61, i64 0}
!61 = !{!"_ZTSSt14_Optional_baseIN8fastgltf9AssetInfoELb0ELb0EE", !62, i64 0}
!62 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf9AssetInfoELb0ELb0ELb0EE", !63, i64 0}
!63 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf9AssetInfoELb1ELb0ELb0EE", !64, i64 0}
!64 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf9AssetInfoEE", !7, i64 0, !49, i64 120}
!65 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12_Vector_implE", !68, i64 0, !69, i64 8}
!68 = !{!"_ZTSNSt3pmr21polymorphic_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEEE", !6, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!70 = !{!"_ZTSN8fastgltf21OptionalWithFlagValueImEE", !7, i64 0}
!71 = !{!"_ZTSSt6vectorIN8fastgltf8AccessorESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = !{!"_ZTSSt6vectorIN8fastgltf9AnimationESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSSt6vectorIN8fastgltf6BufferESaIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSSt6vectorIN8fastgltf10BufferViewESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSSt6vectorIN8fastgltf6CameraESaIS1_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!91 = !{!"_ZTSSt6vectorIN8fastgltf5ImageESaIS1_EE", !92, i64 0}
!92 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE12_Vector_implE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!95 = !{!"_ZTSSt6vectorIN8fastgltf5LightESaIS1_EE", !96, i64 0}
!96 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5LightESaIS1_EE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5LightESaIS1_EE12_Vector_implE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5LightESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!99 = !{!"_ZTSSt6vectorIN8fastgltf8MaterialESaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE12_Vector_implE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!103 = !{!"_ZTSSt6vectorIN8fastgltf4MeshESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!107 = !{!"_ZTSSt6vectorIN8fastgltf4NodeESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE12_Vector_implE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!111 = !{!"_ZTSSt6vectorIN8fastgltf7SamplerESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE12_Vector_implE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!115 = !{!"_ZTSSt6vectorIN8fastgltf5SceneESaIS1_EE", !116, i64 0}
!116 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE12_Vector_implE", !118, i64 0}
!118 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!119 = !{!"_ZTSSt6vectorIN8fastgltf4SkinESaIS1_EE", !120, i64 0}
!120 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE12_Vector_implE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!123 = !{!"_ZTSSt6vectorIN8fastgltf7TextureESaIS1_EE", !124, i64 0}
!124 = !{!"_ZTSSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE12_Vector_implE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!127 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}


; 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.std::array.416" = type { [23 x %"struct.std::pair.417"] }
%"struct.std::pair.417" = type { %"class.std::basic_string_view", i64 }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::key_value_pair" = type { %"class.std::basic_string_view", %"class.simdjson::dom::element" }
%"class.fastgltf::Expected.408" = type { i64, %"class.fastgltf::Asset" }
%"class.fastgltf::Asset" = type <{ %"class.std::shared_ptr", %"class.std::optional", %"class.std::vector.88", %"class.std::vector.88", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.91", %"class.std::vector.96", %"class.std::vector.101", %"class.std::vector.106", %"class.std::vector.111", %"class.std::vector.116", %"class.std::vector.121", %"class.std::vector.126", %"class.std::vector.131", %"class.std::vector.136", %"class.std::vector.141", %"class.std::vector.146", %"class.std::vector.151", %"class.std::vector.156", %"class.std::vector.161", i32, [4 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload.base", [7 x i8] }
%"struct.std::_Optional_payload.base" = type { %"struct.std::_Optional_payload_base.base" }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage", i8 }>
%"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage" = type { %"struct.fastgltf::AssetInfo" }
%"struct.fastgltf::AssetInfo" = type { %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74" }
%"class.std::__cxx11::basic_string.74" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider", i64, %union.anon.76 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider" = type { %"class.std::pmr::polymorphic_allocator.75", ptr }
%"class.std::pmr::polymorphic_allocator.75" = type { ptr }
%union.anon.76 = type { i64, [8 x i8] }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.90", %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.90" = type { ptr }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"class.std::vector.91" = type { %"struct.std::_Vector_base.92" }
%"struct.std::_Vector_base.92" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.121" = type { %"struct.std::_Vector_base.122" }
%"struct.std::_Vector_base.122" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.141" = type { %"struct.std::_Vector_base.142" }
%"struct.std::_Vector_base.142" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.161" = type { %"struct.std::_Vector_base.162" }
%"struct.std::_Vector_base.162" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.simdjson::simdjson_result.409" = type { %"struct.simdjson::internal::simdjson_result_base.base.414", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.414" = type { %"struct.std::pair.base.413" }
%"struct.std::pair.base.413" = type <{ %"class.std::basic_string_view", i32 }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.30 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.30 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::object::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.7" = type { %"struct.simdjson::internal::simdjson_result_base.base.12", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.12" = type { %"struct.std::pair.base.11" }
%"struct.std::pair.base.11" = type <{ i64, i32 }>
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.172" = type { ptr }

@_ZN8fastgltfL17crcStringFunctionE = external hidden local_unnamed_addr global ptr, align 8
@.str.32 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [19 x i8], align 1
@_ZN8fastgltfL16extensionStringsE = external hidden constant %"struct.std::array.416", align 8

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

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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result") align 8, ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.23") align 8, ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt17basic_string_viewIcSt11char_traitsIcEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.simdjson::dom::key_value_pair") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK8fastgltf6Parser19generateMeshIndicesERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8fastgltf6Parser5parseEN8simdjson3dom6objectENS_8CategoryE(ptr dead_on_unwind noalias writable sret(%"class.fastgltf::Expected.408") align 8 %0, ptr noundef nonnull align 8 dereferenceable(312) %1, ptr %2, i64 %3, i32 noundef %4) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.simdjson::dom::object", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.fastgltf::Asset", align 8
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.simdjson::dom::object", align 8
  %11 = alloca %"struct.fastgltf::AssetInfo", align 8
  %12 = alloca %"struct.simdjson::simdjson_result", align 8
  %13 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %14 = alloca %"class.std::basic_string_view", align 8
  %15 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %16 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %17 = alloca %"class.std::basic_string_view", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::basic_string_view", align 8
  %21 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %22 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::basic_string_view", align 8
  %26 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %27 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca %"class.simdjson::dom::array", align 8
  %31 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %32 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %33 = alloca %"class.simdjson::dom::array::iterator", align 8
  %34 = alloca %"class.simdjson::dom::array::iterator", align 8
  %35 = alloca %"class.simdjson::dom::element", align 8
  %36 = alloca %"class.std::basic_string_view", align 8
  %37 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %38 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %39 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"class.simdjson::dom::object::iterator", align 8
  %42 = alloca %"class.simdjson::dom::object::iterator", align 8
  %43 = alloca %"class.simdjson::dom::key_value_pair", align 8
  %44 = alloca i64, align 8
  %45 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %46 = alloca i64, align 8
  %47 = alloca %"class.simdjson::dom::object", align 8
  %48 = alloca %"struct.simdjson::simdjson_result", align 8
  %49 = alloca %"class.simdjson::dom::array", align 8
  %50 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %"class.simdjson::dom::array::iterator", align 8
  %65 = alloca %"class.simdjson::dom::array::iterator", align 8
  %66 = alloca %"class.simdjson::dom::element", align 8
  %67 = alloca %"class.std::basic_string_view", align 8
  %68 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %69 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %70 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.172", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.172", align 8
  store ptr %2, ptr %6, align 8
  %75 = getelementptr inbounds i8, ptr %6, i64 8
  store i64 %3, ptr %75, align 8
  store i32 %4, ptr %7, align 4, !tbaa !5
  call void @_ZN8fastgltf6Parser14fillCategoriesERNS_8CategoryE(ptr noundef nonnull align 4 dereferenceable(4) %7) #7
  call void @llvm.lifetime.start.p0(i64 584, ptr nonnull %8) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(584) %8, i8 0, i64 584, i1 false)
  call void @_ZN8fastgltf5AssetC2Ev(ptr noundef nonnull align 8 dereferenceable(580) %8) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  invoke void @_ZSt11make_sharedIN8fastgltf19ChunkMemoryResourceEJEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %9)
          to label %76 unwind label %87

76:                                               ; preds = %5
  %77 = getelementptr inbounds i8, ptr %1, i64 248
  %78 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  %79 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %78) #7
  call void @_ZNSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  %80 = getelementptr inbounds i8, ptr %1, i64 304
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %81, i64 noundef 2)
  br i1 %82, label %143, label %83

83:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #7
  %84 = getelementptr inbounds i8, ptr %11, i64 40
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %84) #7
  %85 = getelementptr inbounds i8, ptr %11, i64 80
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %85) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.32) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %12, ptr noundef nonnull align 8 dereferenceable(20) %13) #7
  %86 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %12, ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  switch i32 %86, label %89 [
    i32 20, label %.thread
    i32 0, label %90
  ], !prof !42

87:                                               ; preds = %5
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  br label %401

89:                                               ; preds = %83
  br label %.thread

90:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.33) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %15, ptr noundef nonnull align 8 dereferenceable(20) %16) #7
  %91 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %15, ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %.not126 = icmp eq i32 %91, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  br i1 %.not126, label %92, label %.thread163, !prof !43

92:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  %93 = invoke { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef 0, i64 noundef 1)
          to label %94 unwind label %100

94:                                               ; preds = %92
  %95 = extractvalue { i64, ptr } %93, 0
  store i64 %95, ptr %17, align 8
  %96 = getelementptr inbounds i8, ptr %17, i64 8
  %97 = extractvalue { i64, ptr } %93, 1
  store ptr %97, ptr %96, align 8
  %98 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt17basic_string_viewIcSt11char_traitsIcEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %17, i64 noundef 0) #7
  %99 = load i8, ptr %98, align 1, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  %.not127 = icmp eq i8 %99, 50
  br i1 %.not127, label %102, label %.thread163

100:                                              ; preds = %92
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %142

102:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %103 unwind label %112

103:                                              ; preds = %102
  %104 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %105 unwind label %114

105:                                              ; preds = %103
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.34) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %21, ptr noundef nonnull align 8 dereferenceable(20) %22) #7
  %106 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %21, ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  %107 = icmp eq i32 %106, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  br i1 %107, label %108, label %122, !prof !43

108:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %109 unwind label %117

109:                                              ; preds = %108
  %110 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %111 unwind label %119

111:                                              ; preds = %109
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %122

112:                                              ; preds = %102
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %116

114:                                              ; preds = %103
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %116

116:                                              ; preds = %114, %112
  %.pn = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %142

117:                                              ; preds = %108
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %121

119:                                              ; preds = %109
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %121

121:                                              ; preds = %119, %117
  %.pn129 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %141

122:                                              ; preds = %111, %105
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.35) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %26, ptr noundef nonnull align 8 dereferenceable(20) %27) #7
  %123 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %26, ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  %124 = icmp eq i32 %123, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #7
  br i1 %124, label %125, label %134, !prof !43

125:                                              ; preds = %122
  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_traitsIcESaIcEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %126 unwind label %129

126:                                              ; preds = %125
  %127 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40) %85, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %128 unwind label %131

128:                                              ; preds = %126
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %134

129:                                              ; preds = %125
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %126
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %133

133:                                              ; preds = %131, %129
  %.pn131 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %140

134:                                              ; preds = %128, %122
  %135 = getelementptr inbounds i8, ptr %8, i64 16
  %136 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZNSt8optionalIN8fastgltf9AssetInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(128) %135, ptr noundef nonnull align 8 dereferenceable(120) %11)
          to label %137 unwind label %138

.thread:                                          ; preds = %83, %89
  %.sink = phi i64 [ 4, %89 ], [ 6, %83 ]
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %.sink)
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %11) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %400

.thread163:                                       ; preds = %94, %90
  %.sink243 = phi i64 [ 6, %90 ], [ 10, %94 ]
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %.sink243)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %11) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %400

137:                                              ; preds = %134
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %11) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %143

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

140:                                              ; preds = %138, %133
  %.pn133 = phi { ptr, i32 } [ %139, %138 ], [ %.pn131, %133 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  br label %141

141:                                              ; preds = %140, %121
  %.pn133.pn = phi { ptr, i32 } [ %.pn133, %140 ], [ %.pn129, %121 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %142

142:                                              ; preds = %141, %116, %100
  %.pn133.pn.pn = phi { ptr, i32 } [ %.pn133.pn, %141 ], [ %.pn, %116 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN8fastgltf9AssetInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %11) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %401

143:                                              ; preds = %137, %76
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %32, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.36) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %31, ptr noundef nonnull align 8 dereferenceable(20) %32) #7
  %144 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %31, ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  %145 = icmp eq i32 %144, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br i1 %145, label %146, label %187, !prof !43

146:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #7
  %147 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  %148 = extractvalue { ptr, i64 } %147, 0
  store ptr %148, ptr %33, align 8
  %149 = getelementptr inbounds i8, ptr %33, i64 8
  %150 = extractvalue { ptr, i64 } %147, 1
  store i64 %150, ptr %149, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #7
  %151 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %30) #7
  %152 = extractvalue { ptr, i64 } %151, 0
  store ptr %152, ptr %34, align 8
  %153 = getelementptr inbounds i8, ptr %34, i64 8
  %154 = extractvalue { ptr, i64 } %151, 1
  store i64 %154, ptr %153, align 8
  %155 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br i1 %155, label %.lr.ph210, label %.critedge

.lr.ph210:                                        ; preds = %146
  %156 = getelementptr inbounds i8, ptr %35, i64 8
  %.sroa.244.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  %157 = getelementptr inbounds i8, ptr %1, i64 48
  %158 = getelementptr inbounds i8, ptr %8, i64 176
  br label %159

159:                                              ; preds = %.lr.ph210, %179
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #7
  %160 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  %161 = extractvalue { ptr, i64 } %160, 0
  store ptr %161, ptr %35, align 8
  %162 = extractvalue { ptr, i64 } %160, 1
  store i64 %162, ptr %156, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #7
  call void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %37, ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  %163 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %37, ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  %.not137 = icmp eq i32 %163, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  br i1 %.not137, label %164, label %.thread184, !prof !43

.thread184:                                       ; preds = %159
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %398

164:                                              ; preds = %159
  %165 = call noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE5beginEv(ptr noundef nonnull align 8 dereferenceable(552) @_ZN8fastgltfL16extensionStringsE) #7
  %166 = call noundef ptr @_ZNKSt5arrayISt4pairISt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEELm23EE3endEv(ptr noundef nonnull align 8 dereferenceable(552) @_ZN8fastgltfL16extensionStringsE) #7
  %.not138205 = icmp eq ptr %165, %166
  br i1 %.not138205, label %._crit_edge, label %.lr.ph

167:                                              ; preds = %.lr.ph
  %168 = getelementptr inbounds i8, ptr %.0104206, i64 24
  %.not138 = icmp eq ptr %168, %166
  br i1 %.not138, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %164, %167
  %.0104206 = phi ptr [ %168, %167 ], [ %165, %164 ]
  %169 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24) %.0104206) #7
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24) %.0104206) #7
  %.sroa.045.0.copyload = load i64, ptr %169, align 8, !tbaa !45
  %.sroa.246.0..sroa_idx = getelementptr inbounds i8, ptr %169, i64 8
  %.sroa.246.0.copyload = load ptr, ptr %.sroa.246.0..sroa_idx, align 8, !tbaa !46
  %.sroa.043.0.copyload = load i64, ptr %36, align 8, !tbaa !45
  %.sroa.244.0.copyload = load ptr, ptr %.sroa.244.0..sroa_idx, align 8, !tbaa !46
  %171 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ES5_(i64 %.sroa.045.0.copyload, ptr %.sroa.246.0.copyload, i64 %.sroa.043.0.copyload, ptr %.sroa.244.0.copyload) #7
  br i1 %171, label %172, label %167

172:                                              ; preds = %.lr.ph
  %173 = load i64, ptr %157, align 8, !tbaa !47
  %174 = load i64, ptr %170, align 8, !tbaa !48
  %175 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %173, i64 noundef %174)
  br i1 %175, label %.thread178, label %._crit_edge

.thread178:                                       ; preds = %172
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %176 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef %176) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %177 unwind label %182

177:                                              ; preds = %.thread178
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  %178 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 8 dereferenceable(40) %38)
          to label %179 unwind label %184

179:                                              ; preds = %177
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  %180 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  %181 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br i1 %181, label %159, label %.critedge

182:                                              ; preds = %.thread178
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %186

184:                                              ; preds = %177
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #7
  br label %186

186:                                              ; preds = %184, %182
  %.pn139 = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %399

._crit_edge:                                      ; preds = %164, %172, %167
  %.sink244 = phi i64 [ 3, %167 ], [ 2, %172 ], [ 3, %164 ]
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %.sink244)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %398

.critedge:                                        ; preds = %179, %146
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %187

187:                                              ; preds = %.critedge, %143
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #7
  store i32 0, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #7
  %188 = call { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  %189 = extractvalue { ptr, i64 } %188, 0
  store ptr %189, ptr %41, align 8
  %190 = getelementptr inbounds i8, ptr %41, i64 8
  %191 = extractvalue { ptr, i64 } %188, 1
  store i64 %191, ptr %190, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #7
  %192 = call { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #7
  %193 = extractvalue { ptr, i64 } %192, 0
  store ptr %193, ptr %42, align 8
  %194 = getelementptr inbounds i8, ptr %42, i64 8
  %195 = extractvalue { ptr, i64 } %192, 1
  store i64 %195, ptr %194, align 8
  %196 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br i1 %196, label %.lr.ph217, label %.loopexit

.lr.ph217:                                        ; preds = %187
  %.sroa.231.0..sroa_idx = getelementptr inbounds i8, ptr %43, i64 8
  %197 = getelementptr inbounds i8, ptr %43, i64 16
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %45, i64 8
  %198 = getelementptr inbounds i8, ptr %8, i64 208
  %199 = getelementptr inbounds i8, ptr %64, i64 8
  %200 = getelementptr inbounds i8, ptr %65, i64 8
  %201 = getelementptr inbounds i8, ptr %66, i64 8
  %202 = getelementptr inbounds i8, ptr %8, i64 144
  br label %203

203:                                              ; preds = %.lr.ph217, %349
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  call void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.simdjson::dom::key_value_pair") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  %204 = load ptr, ptr @_ZN8fastgltfL17crcStringFunctionE, align 8, !tbaa !46
  %.sroa.030.0.copyload = load i64, ptr %43, align 8, !tbaa !45
  %.sroa.231.0.copyload = load ptr, ptr %.sroa.231.0..sroa_idx, align 8, !tbaa !46
  %205 = invoke noundef i32 %204(i64 %.sroa.030.0.copyload, ptr %.sroa.231.0.copyload)
          to label %206 unwind label %211

206:                                              ; preds = %203
  switch i32 %205, label %225 [
    i32 -930631216, label %207
    i32 1200630171, label %217
    i32 -1235869229, label %.thread189
    i32 875961014, label %.thread189
  ]

207:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #7
  %208 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %197) #7
  %.fca.0.extract = extractvalue { i64, i32 } %208, 0
  %.fca.1.extract = extractvalue { i64, i32 } %208, 1
  store i64 %.fca.0.extract, ptr %45, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %209 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %45, ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  %.not150 = icmp eq i32 %209, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #7
  br i1 %.not150, label %213, label %210, !prof !43

210:                                              ; preds = %207
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef 5)
  br label %216

211:                                              ; preds = %203
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %353

213:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  %214 = load i64, ptr %44, align 8, !tbaa !45
  store i64 %214, ptr %46, align 8, !tbaa !45
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %216

216:                                              ; preds = %213, %210
  %.896 = phi i32 [ 1, %210 ], [ 7, %213 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  br label %348

217:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %48, ptr noundef nonnull align 8 dereferenceable(16) %197) #7
  %218 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %48, ptr noundef nonnull align 8 dereferenceable(16) %47) #7
  %.not146 = icmp eq i32 %218, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #7
  br i1 %.not146, label %219, label %.sink.split, !prof !43

219:                                              ; preds = %217
  %220 = invoke noundef i64 @_ZN8fastgltf6Parser15parseExtensionsERN8simdjson3dom6objectERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %221 unwind label %222

221:                                              ; preds = %219
  %.not149 = icmp eq i64 %220, 0
  br i1 %.not149, label %224, label %.sink.split

222:                                              ; preds = %219
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  br label %353

.sink.split:                                      ; preds = %221, %217
  %.sink245 = phi i64 [ 5, %217 ], [ %220, %221 ]
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %.sink245)
  br label %224

224:                                              ; preds = %.sink.split, %221
  %.1098 = phi i32 [ 7, %221 ], [ 1, %.sink.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #7
  br label %348

225:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %50) #7
  call void @_ZNK8simdjson3dom7element9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %197) #7
  %226 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %50, ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  %.not141 = icmp eq i32 %226, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #7
  br i1 %.not141, label %227, label %.thread185.sink.split, !prof !43

227:                                              ; preds = %225
  switch i32 %205, label %.thread185 [
    i32 -1509286295, label %228
    i32 -1932512752, label %237
    i32 1658918231, label %244
    i32 -691820536, label %251
    i32 -1742910351, label %258
    i32 2036842032, label %265
    i32 1775807363, label %272
    i32 341265094, label %279
    i32 -306347709, label %286
    i32 1689921540, label %293
    i32 -1311522333, label %300
    i32 -1363974034, label %307
    i32 -988781707, label %314
    i32 564255784, label %321
  ]

228:                                              ; preds = %227
  %229 = load i32, ptr %7, align 4, !tbaa !5
  %230 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %229, i32 noundef 4)
  br i1 %230, label %231, label %235

231:                                              ; preds = %228
  %232 = invoke noundef i64 @_ZN8fastgltf6Parser14parseAccessorsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %235 unwind label %233

233:                                              ; preds = %317, %310, %303, %296, %289, %282, %275, %268, %261, %254, %247, %240, %231
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %352

235:                                              ; preds = %231, %228
  %.0105 = phi i64 [ 0, %228 ], [ %232, %231 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #7
  store i32 4, ptr %51, align 4, !tbaa !5
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #7
  br label %347

237:                                              ; preds = %227
  %238 = load i32, ptr %7, align 4, !tbaa !5
  %239 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %238, i32 noundef 64)
  br i1 %239, label %240, label %242

240:                                              ; preds = %237
  %241 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAnimationsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %242 unwind label %233

242:                                              ; preds = %240, %237
  %.1106 = phi i64 [ 0, %237 ], [ %241, %240 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #7
  store i32 64, ptr %52, align 4, !tbaa !5
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #7
  br label %347

244:                                              ; preds = %227
  %245 = load i32, ptr %7, align 4, !tbaa !5
  %246 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %245, i32 noundef 1)
  br i1 %246, label %247, label %249

247:                                              ; preds = %244
  %248 = invoke noundef i64 @_ZN8fastgltf6Parser12parseBuffersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %249 unwind label %233

249:                                              ; preds = %247, %244
  %.2107 = phi i64 [ 0, %244 ], [ %248, %247 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #7
  store i32 1, ptr %53, align 4, !tbaa !5
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #7
  br label %347

251:                                              ; preds = %227
  %252 = load i32, ptr %7, align 4, !tbaa !5
  %253 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %252, i32 noundef 2)
  br i1 %253, label %254, label %256

254:                                              ; preds = %251
  %255 = invoke noundef i64 @_ZN8fastgltf6Parser16parseBufferViewsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %256 unwind label %233

256:                                              ; preds = %254, %251
  %.3108 = phi i64 [ 0, %251 ], [ %255, %254 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #7
  store i32 2, ptr %54, align 4, !tbaa !5
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #7
  br label %347

258:                                              ; preds = %227
  %259 = load i32, ptr %7, align 4, !tbaa !5
  %260 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %259, i32 noundef 128)
  br i1 %260, label %261, label %263

261:                                              ; preds = %258
  %262 = invoke noundef i64 @_ZN8fastgltf6Parser12parseCamerasERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %263 unwind label %233

263:                                              ; preds = %261, %258
  %.4109 = phi i64 [ 0, %258 ], [ %262, %261 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #7
  store i32 128, ptr %55, align 4, !tbaa !5
  %264 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #7
  br label %347

265:                                              ; preds = %227
  %266 = load i32, ptr %7, align 4, !tbaa !5
  %267 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %266, i32 noundef 8)
  br i1 %267, label %268, label %270

268:                                              ; preds = %265
  %269 = invoke noundef i64 @_ZN8fastgltf6Parser11parseImagesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %270 unwind label %233

270:                                              ; preds = %268, %265
  %.5110 = phi i64 [ 0, %265 ], [ %269, %268 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #7
  store i32 8, ptr %56, align 4, !tbaa !5
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #7
  br label %347

272:                                              ; preds = %227
  %273 = load i32, ptr %7, align 4, !tbaa !5
  %274 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %273, i32 noundef 256)
  br i1 %274, label %275, label %277

275:                                              ; preds = %272
  %276 = invoke noundef i64 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %277 unwind label %233

277:                                              ; preds = %275, %272
  %.6111 = phi i64 [ 0, %272 ], [ %276, %275 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #7
  store i32 256, ptr %57, align 4, !tbaa !5
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #7
  br label %347

279:                                              ; preds = %227
  %280 = load i32, ptr %7, align 4, !tbaa !5
  %281 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %280, i32 noundef 512)
  br i1 %281, label %282, label %284

282:                                              ; preds = %279
  %283 = invoke noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %284 unwind label %233

284:                                              ; preds = %282, %279
  %.7112 = phi i64 [ 0, %279 ], [ %283, %282 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #7
  store i32 512, ptr %58, align 4, !tbaa !5
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #7
  br label %347

286:                                              ; preds = %227
  %287 = load i32, ptr %7, align 4, !tbaa !5
  %288 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %287, i32 noundef 2048)
  br i1 %288, label %289, label %291

289:                                              ; preds = %286
  %290 = invoke noundef i64 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %291 unwind label %233

291:                                              ; preds = %289, %286
  %.8113 = phi i64 [ 0, %286 ], [ %290, %289 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #7
  store i32 2048, ptr %59, align 4, !tbaa !5
  %292 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #7
  br label %347

293:                                              ; preds = %227
  %294 = load i32, ptr %7, align 4, !tbaa !5
  %295 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %294, i32 noundef 16)
  br i1 %295, label %296, label %298

296:                                              ; preds = %293
  %297 = invoke noundef i64 @_ZN8fastgltf6Parser13parseSamplersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %298 unwind label %233

298:                                              ; preds = %296, %293
  %.9114 = phi i64 [ 0, %293 ], [ %297, %296 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #7
  store i32 16, ptr %60, align 4, !tbaa !5
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #7
  br label %347

300:                                              ; preds = %227
  %301 = load i32, ptr %7, align 4, !tbaa !5
  %302 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %301, i32 noundef 4096)
  br i1 %302, label %303, label %305

303:                                              ; preds = %300
  %304 = invoke noundef i64 @_ZN8fastgltf6Parser11parseScenesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %305 unwind label %233

305:                                              ; preds = %303, %300
  %.10115 = phi i64 [ 0, %300 ], [ %304, %303 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #7
  store i32 4096, ptr %61, align 4, !tbaa !5
  %306 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #7
  br label %347

307:                                              ; preds = %227
  %308 = load i32, ptr %7, align 4, !tbaa !5
  %309 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %308, i32 noundef 1024)
  br i1 %309, label %310, label %312

310:                                              ; preds = %307
  %311 = invoke noundef i64 @_ZN8fastgltf6Parser10parseSkinsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %312 unwind label %233

312:                                              ; preds = %310, %307
  %.11116 = phi i64 [ 0, %307 ], [ %311, %310 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #7
  store i32 1024, ptr %62, align 4, !tbaa !5
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #7
  br label %347

314:                                              ; preds = %227
  %315 = load i32, ptr %7, align 4, !tbaa !5
  %316 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_8CategoryES1_EEbT_T0_(i32 noundef %315, i32 noundef 32)
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = invoke noundef i64 @_ZN8fastgltf6Parser13parseTexturesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %319 unwind label %233

319:                                              ; preds = %317, %314
  %.12117 = phi i64 [ 0, %314 ], [ %318, %317 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #7
  store i32 32, ptr %63, align 4, !tbaa !5
  %320 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltfoRERNS_8CategoryERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %63) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #7
  br label %347

321:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #7
  %322 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  %323 = extractvalue { ptr, i64 } %322, 0
  store ptr %323, ptr %64, align 8
  %324 = extractvalue { ptr, i64 } %322, 1
  store i64 %324, ptr %199, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #7
  %325 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  %326 = extractvalue { ptr, i64 } %325, 0
  store ptr %326, ptr %65, align 8
  %327 = extractvalue { ptr, i64 } %325, 1
  store i64 %327, ptr %200, align 8
  %328 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br i1 %328, label %.lr.ph213, label %._crit_edge214

._crit_edge214:                                   ; preds = %344, %321
  %.13118.lcssa = phi i64 [ 0, %321 ], [ %.14119, %344 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  br label %347

.lr.ph213:                                        ; preds = %321, %344
  %.13118211 = phi i64 [ %.14119, %344 ], [ 0, %321 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #7
  %329 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  %330 = extractvalue { ptr, i64 } %329, 0
  store ptr %330, ptr %66, align 8
  %331 = extractvalue { ptr, i64 } %329, 1
  store i64 %331, ptr %201, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #7
  call void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %66) #7
  %332 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %68, ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #7
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %334, label %344, !prof !43

334:                                              ; preds = %.lr.ph213
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #7
  %335 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef %335) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %69, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %336 unwind label %339

336:                                              ; preds = %334
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #7
  %337 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull align 8 dereferenceable(40) %69)
          to label %338 unwind label %341

338:                                              ; preds = %336
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %69) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %69) #7
  br label %344

339:                                              ; preds = %334
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #7
  br label %343

341:                                              ; preds = %336
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %69) #7
  br label %343

343:                                              ; preds = %341, %339
  %.pn142 = phi { ptr, i32 } [ %342, %341 ], [ %340, %339 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  br label %352

344:                                              ; preds = %.lr.ph213, %338
  %.14119 = phi i64 [ %.13118211, %338 ], [ 5, %.lr.ph213 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #7
  %345 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  %346 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br i1 %346, label %.lr.ph213, label %._crit_edge214

347:                                              ; preds = %._crit_edge214, %319, %312, %305, %298, %291, %284, %277, %270, %263, %256, %249, %242, %235
  %.15120 = phi i64 [ %.13118.lcssa, %._crit_edge214 ], [ %.12117, %319 ], [ %.11116, %312 ], [ %.10115, %305 ], [ %.9114, %298 ], [ %.8113, %291 ], [ %.7112, %284 ], [ %.6111, %277 ], [ %.5110, %270 ], [ %.4109, %263 ], [ %.3108, %256 ], [ %.2107, %249 ], [ %.1106, %242 ], [ %.0105, %235 ]
  %.not145 = icmp eq i64 %.15120, 0
  br i1 %.not145, label %.thread185, label %.thread185.sink.split

.thread185.sink.split:                            ; preds = %347, %225
  %.15120.sink = phi i64 [ 5, %225 ], [ %.15120, %347 ]
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %.15120.sink)
  br label %.thread185

.thread185:                                       ; preds = %.thread185.sink.split, %227, %347
  %.12100 = phi i32 [ 0, %347 ], [ 0, %227 ], [ 1, %.thread185.sink.split ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br label %348

.thread189:                                       ; preds = %206, %206
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  br label %349

348:                                              ; preds = %.thread185, %224, %216
  %.13 = phi i32 [ %.896, %216 ], [ %.1098, %224 ], [ %.12100, %.thread185 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  switch i32 %.13, label %354 [
    i32 0, label %349
    i32 7, label %349
  ]

349:                                              ; preds = %.thread189, %348, %348
  %350 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  %351 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br i1 %351, label %203, label %.loopexit

352:                                              ; preds = %343, %233
  %.pn142.pn = phi { ptr, i32 } [ %.pn142, %343 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  br label %353

353:                                              ; preds = %352, %222, %211
  %.pn147 = phi { ptr, i32 } [ %223, %222 ], [ %.pn142.pn, %352 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #7
  br label %397

354:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #7
  br label %396

.loopexit:                                        ; preds = %349, %187
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #7
  %355 = load i32, ptr %40, align 4, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %8, i64 576
  store i32 %355, ptr %356, align 8, !tbaa !49
  %357 = load i64, ptr %80, align 8, !tbaa !9
  %358 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %357, i64 noundef 256)
  br i1 %358, label %359, label %.critedge159

359:                                              ; preds = %.loopexit
  %360 = invoke noundef i64 @_ZNK8fastgltf6Parser19generateMeshIndicesERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %1, ptr noundef nonnull align 8 dereferenceable(580) %8)
          to label %361 unwind label %363

361:                                              ; preds = %359
  %.not151 = icmp eq i64 %360, 0
  br i1 %.not151, label %.critedge159, label %362

362:                                              ; preds = %361
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2ENS_5ErrorE(ptr noundef nonnull align 8 dereferenceable(592) %0, i64 noundef %360)
  br label %396

363:                                              ; preds = %359
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %397

.critedge159:                                     ; preds = %361, %.loopexit
  %365 = getelementptr inbounds i8, ptr %1, i64 48
  %366 = load i64, ptr %365, align 8, !tbaa !47
  %367 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %366, i64 noundef 16777216)
  br i1 %367, label %368, label %395

368:                                              ; preds = %.critedge159
  %369 = getelementptr inbounds i8, ptr %8, i64 552
  %370 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %369) #7
  br i1 %370, label %395, label %371

371:                                              ; preds = %368
  %372 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %369) #7
  %373 = getelementptr inbounds i8, ptr %8, i64 408
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #7
  %374 = call ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #7
  store ptr %374, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #7
  %375 = call ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #7
  store ptr %375, ptr %72, align 8
  %376 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  br i1 %376, label %.lr.ph222, label %._crit_edge223

._crit_edge223:                                   ; preds = %._crit_edge220, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  br label %395

.lr.ph222:                                        ; preds = %371, %._crit_edge220
  %377 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  %378 = call ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %377) #7
  store ptr %378, ptr %73, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #7
  %379 = call ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %377) #7
  store ptr %379, ptr %74, align 8
  %380 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  br i1 %380, label %.lr.ph219, label %._crit_edge220

._crit_edge220:                                   ; preds = %390, %.lr.ph222
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #7
  %382 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf4MeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  br i1 %382, label %.lr.ph222, label %._crit_edge223

.lr.ph219:                                        ; preds = %.lr.ph222, %390
  %383 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %384 = getelementptr inbounds i8, ptr %383, i64 280
  %385 = call noundef zeroext i1 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %384) #7
  br i1 %385, label %390, label %386

386:                                              ; preds = %.lr.ph219
  %387 = call noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %384) #7
  %388 = icmp eq i64 %387, %372
  br i1 %388, label %390, label %389

389:                                              ; preds = %386
  invoke void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %384, i64 noundef %372)
          to label %390 unwind label %393

390:                                              ; preds = %389, %.lr.ph219, %386
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  %392 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8fastgltf9PrimitiveESt6vectorIS2_NSt3pmr21polymorphic_allocatorIS2_EEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  br i1 %392, label %.lr.ph219, label %._crit_edge220

393:                                              ; preds = %389
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  br label %397

395:                                              ; preds = %._crit_edge223, %368, %.critedge159
  call void @_ZN8fastgltf8ExpectedINS_5AssetEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(592) %0, ptr noundef nonnull align 8 dereferenceable(580) %8)
  br label %396

396:                                              ; preds = %354, %362, %395
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #7
  br label %398

397:                                              ; preds = %393, %363, %353
  %.pn152 = phi { ptr, i32 } [ %394, %393 ], [ %364, %363 ], [ %.pn147, %353 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #7
  br label %399

398:                                              ; preds = %._crit_edge, %.thread184, %396
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  br label %400

399:                                              ; preds = %397, %186
  %.pn152.pn = phi { ptr, i32 } [ %.pn152, %397 ], [ %.pn139, %186 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #7
  br label %401

400:                                              ; preds = %.thread163, %.thread, %398
  call void @_ZN8fastgltf5AssetD2Ev(ptr noundef nonnull align 8 dereferenceable(580) %8) #7
  call void @llvm.lifetime.end.p0(i64 584, ptr nonnull %8) #7
  ret void

401:                                              ; preds = %399, %142, %87
  %.pn152.pn.pn = phi { ptr, i32 } [ %.pn152.pn, %399 ], [ %.pn133.pn.pn, %142 ], [ %88, %87 ]
  call void @_ZN8fastgltf5AssetD2Ev(ptr noundef nonnull align 8 dereferenceable(580) %8) #7
  call void @llvm.lifetime.end.p0(i64 584, ptr nonnull %8) #7
  resume { ptr, i32 } %.pn152.pn.pn
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN8fastgltf19ChunkMemoryResourceEJEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef, i64 noundef) local_unnamed_addr #3

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.409") align 8, ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSINS0_IcS2_SaIcEEEEENSt9enable_ifIXsr6__and_ISt14is_convertibleIRKT_St17basic_string_viewIcS2_EESt6__not_ISB_IPSD_PKS6_EESI_ISB_ISE_PKcEEEE5valueERS6_E4typeESE_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNSt8optionalIN8fastgltf9AssetInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element10get_stringEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.409") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1ESt17basic_string_viewIcSt11char_traitsIcEEN8fastgltf10ExtensionsEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSA_(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ES5_(i64, ptr, i64, ptr) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12emplace_backIJS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseExtensionsERN8simdjson3dom6objectERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom7element9get_arrayEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.23") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser14parseAccessorsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAnimationsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser12parseBuffersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser16parseBufferViewsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser12parseCamerasERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseImagesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser13parseSamplersERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser11parseScenesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser10parseSkinsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser13parseTexturesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(580)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { alwaysinline 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 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = !{!"_ZTSN8fastgltf8CategoryE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !41, i64 304}
!10 = !{!"_ZTSN8fastgltf6ParserE", !11, i64 0, !18, i64 8, !20, i64 56, !27, i64 248, !30, i64 264, !41, i64 304}
!11 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !12, i64 0}
!12 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !15, i64 0}
!15 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !16, i64 0}
!16 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !17, i64 0}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !19, i64 40}
!19 = !{!"_ZTSN8fastgltf10ExtensionsE", !7, i64 0}
!20 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !21, i64 0}
!21 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !22, i64 0}
!22 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !23, i64 0}
!23 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !24, i64 0}
!24 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !25, i64 0}
!25 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !26, i64 0}
!26 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !7, i64 0, !7, i64 184}
!27 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !28, i64 0}
!28 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !17, i64 0, !29, i64 8}
!29 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !17, i64 0}
!30 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !31, i64 0, !34, i64 32}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !32, i64 0, !33, i64 8, !7, i64 16}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !35, i64 0}
!35 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !38, i64 0}
!38 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !39, i64 0}
!39 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !40, i64 0}
!40 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !17, i64 0}
!41 = !{!"_ZTSN8fastgltf7OptionsE", !7, i64 0}
!42 = !{!"branch_weights", i32 1, i32 2001, i32 2000}
!43 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!44 = !{!7, !7, i64 0}
!45 = !{!33, !33, i64 0}
!46 = !{!17, !17, i64 0}
!47 = !{!10, !19, i64 48}
!48 = !{!19, !19, i64 0}
!49 = !{!50, !6, i64 576}
!50 = !{!"_ZTSN8fastgltf5AssetE", !27, i64 0, !51, i64 16, !57, i64 144, !57, i64 176, !62, i64 208, !63, i64 216, !67, i64 240, !71, i64 264, !75, i64 288, !79, i64 312, !83, i64 336, !87, i64 360, !91, i64 384, !95, i64 408, !99, i64 432, !103, i64 456, !107, i64 480, !111, i64 504, !115, i64 528, !119, i64 552, !6, i64 576}
!51 = !{!"_ZTSSt8optionalIN8fastgltf9AssetInfoEE", !52, i64 0}
!52 = !{!"_ZTSSt14_Optional_baseIN8fastgltf9AssetInfoELb0ELb0EE", !53, i64 0}
!53 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf9AssetInfoELb0ELb0ELb0EE", !54, i64 0}
!54 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf9AssetInfoELb1ELb0ELb0EE", !55, i64 0}
!55 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf9AssetInfoEE", !7, i64 0, !56, i64 120}
!56 = !{!"bool", !7, i64 0}
!57 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE12_Vector_implE", !60, i64 0, !61, i64 8}
!60 = !{!"_ZTSNSt3pmr21polymorphic_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_IcEEEEEE", !17, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEENS5_IS7_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!62 = !{!"_ZTSN8fastgltf21OptionalWithFlagValueImEE", !7, i64 0}
!63 = !{!"_ZTSSt6vectorIN8fastgltf8AccessorESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE12_Vector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8AccessorESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!67 = !{!"_ZTSSt6vectorIN8fastgltf9AnimationESaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf9AnimationESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!71 = !{!"_ZTSSt6vectorIN8fastgltf6BufferESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6BufferESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!75 = !{!"_ZTSSt6vectorIN8fastgltf10BufferViewESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf10BufferViewESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!79 = !{!"_ZTSSt6vectorIN8fastgltf6CameraESaIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf6CameraESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!83 = !{!"_ZTSSt6vectorIN8fastgltf5ImageESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5ImageESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!87 = !{!"_ZTSSt6vectorIN8fastgltf5LightESaIS1_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5LightESaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5LightESaIS1_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5LightESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!91 = !{!"_ZTSSt6vectorIN8fastgltf8MaterialESaIS1_EE", !92, i64 0}
!92 = !{!"_ZTSSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE12_Vector_implE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf8MaterialESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!95 = !{!"_ZTSSt6vectorIN8fastgltf4MeshESaIS1_EE", !96, i64 0}
!96 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE12_Vector_implE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4MeshESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!99 = !{!"_ZTSSt6vectorIN8fastgltf4NodeESaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE12_Vector_implE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4NodeESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!103 = !{!"_ZTSSt6vectorIN8fastgltf7SamplerESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7SamplerESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!107 = !{!"_ZTSSt6vectorIN8fastgltf5SceneESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE12_Vector_implE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf5SceneESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!111 = !{!"_ZTSSt6vectorIN8fastgltf4SkinESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE12_Vector_implE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf4SkinESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!115 = !{!"_ZTSSt6vectorIN8fastgltf7TextureESaIS1_EE", !116, i64 0}
!116 = !{!"_ZTSSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE12_Vector_implE", !118, i64 0}
!118 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf7TextureESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!119 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !120, i64 0}
!120 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LowerExpectIntrinsicPass,SCCPPass,SROAPass,SimplifyCFGPass