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

%"class.std::basic_string_view" = type { i64, ptr }
%"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" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"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" }
%"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" }
%"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.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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 }
%"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] }
%"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.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"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 }
%"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 }>
%"struct.simdjson::simdjson_result.16" = type { %"struct.simdjson::internal::simdjson_result_base.base.21", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.21" = type { %"struct.std::pair.base.20" }
%"struct.std::pair.base.20" = type <{ double, i32 }>
%"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::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.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 }
%"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" }
%"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] }
%"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 }

@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN8fastgltf10extensionsL22KHR_materials_variantsE = external hidden constant %"class.std::basic_string_view", align 8
@.str.46 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [9 x i8], align 1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64, ptr) #4 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)) #3 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)) #3 align 2

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

; 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 { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20)) #3 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)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 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 #2 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: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(224)) #6 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)) #2 align 2

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

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

; 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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2 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)) #3 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)) #3 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: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #2 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
define dso_local noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(580) %2) #6 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.simdjson::dom::array::iterator", align 8
  %10 = alloca %"class.simdjson::dom::array::iterator", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.simdjson::dom::element", align 8
  %13 = alloca %"class.simdjson::dom::object", align 8
  %14 = alloca %"struct.simdjson::simdjson_result", align 8
  %15 = alloca %"struct.fastgltf::Mesh", align 8
  %16 = alloca %"class.simdjson::dom::array", align 8
  %17 = alloca i64, align 8
  %18 = alloca %"class.std::basic_string_view", align 8
  %19 = alloca %"class.std::vector.166", align 8
  %20 = alloca %"class.std::pmr::polymorphic_allocator.168", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca %"class.simdjson::dom::array::iterator", align 8
  %25 = alloca %"class.simdjson::dom::array::iterator", align 8
  %26 = alloca %"class.simdjson::dom::element", align 8
  %27 = alloca %"struct.fastgltf::Primitive", align 8
  %28 = alloca %"class.simdjson::dom::object", align 8
  %29 = alloca %"struct.simdjson::simdjson_result", align 8
  %30 = alloca %"class.simdjson::dom::object", align 8
  %31 = alloca %"struct.simdjson::simdjson_result", align 8
  %32 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.simdjson::dom::array", align 8
  %35 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %36 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %37 = alloca %"class.std::vector.173", align 8
  %38 = alloca %"class.std::pmr::polymorphic_allocator.175", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.simdjson::dom::array::iterator", align 8
  %41 = alloca %"class.simdjson::dom::array::iterator", align 8
  %42 = alloca %"class.simdjson::dom::element", align 8
  %43 = alloca %"struct.simdjson::simdjson_result", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i32, align 4
  %48 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %49 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %50 = alloca { i64, i32 }, align 8
  %51 = alloca i32, align 4
  %52 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %53 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %54 = alloca { i64, i32 }, align 8
  %55 = alloca i64, align 8
  %56 = alloca i32, align 4
  %57 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %58 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %59 = alloca { i64, i32 }, align 8
  %60 = alloca i64, align 8
  %61 = alloca %"class.simdjson::dom::object", align 8
  %62 = alloca i32, align 4
  %63 = alloca %"struct.simdjson::simdjson_result", align 8
  %64 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %65 = alloca %"class.simdjson::dom::object", align 8
  %66 = alloca i32, align 4
  %67 = alloca %"struct.simdjson::simdjson_result", align 8
  %68 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %69 = alloca %"class.std::basic_string_view", align 8
  %70 = alloca %"class.simdjson::dom::array", align 8
  %71 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %72 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %73 = alloca ptr, align 8
  %74 = alloca %"class.simdjson::dom::array::iterator", align 8
  %75 = alloca %"class.simdjson::dom::array::iterator", align 8
  %76 = alloca %"class.simdjson::dom::element", align 8
  %77 = alloca %"class.simdjson::dom::object", align 8
  %78 = alloca %"struct.simdjson::simdjson_result", align 8
  %79 = alloca i64, align 8
  %80 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %81 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %82 = alloca { i64, i32 }, align 8
  %83 = alloca %"class.simdjson::dom::array", align 8
  %84 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %85 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"class.simdjson::dom::array::iterator", align 8
  %88 = alloca %"class.simdjson::dom::array::iterator", align 8
  %89 = alloca %"class.simdjson::dom::element", align 8
  %90 = alloca i64, align 8
  %91 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %92 = alloca { i64, i32 }, align 8
  %93 = alloca i64, align 8
  %94 = alloca i64, align 8
  %95 = alloca %"class.std::basic_string_view", align 8
  %96 = alloca %"class.std::vector.169", align 8
  %97 = alloca %"class.std::pmr::polymorphic_allocator.171", align 8
  %98 = alloca ptr, align 8
  %99 = alloca %"class.simdjson::dom::array::iterator", align 8
  %100 = alloca %"class.simdjson::dom::array::iterator", align 8
  %101 = alloca %"class.simdjson::dom::element", align 8
  %102 = alloca double, align 8
  %103 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %104 = alloca { double, i32 }, align 8
  %105 = alloca float, align 4
  %106 = alloca %"class.simdjson::dom::object", align 8
  %107 = alloca i32, align 4
  %108 = alloca %"struct.simdjson::simdjson_result", align 8
  %109 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %110 = alloca %"class.std::basic_string_view", align 8
  %111 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %112 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %113 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %114 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %115 = load ptr, ptr %5, align 8
  %116 = load ptr, ptr %7, align 8, !tbaa !5
  %117 = getelementptr inbounds %"class.fastgltf::Asset", ptr %116, i32 0, i32 13
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %118) #8
  call void @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %119)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %120, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #8
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %121) #8
  %123 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %9, i32 0, i32 0
  %124 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 0
  %125 = extractvalue { ptr, i64 } %122, 0
  store ptr %125, ptr %124, align 8
  %126 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 1
  %127 = extractvalue { ptr, i64 } %122, 1
  store i64 %127, ptr %126, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %128) #8
  %130 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %10, i32 0, i32 0
  %131 = getelementptr inbounds { ptr, i64 }, ptr %130, i32 0, i32 0
  %132 = extractvalue { ptr, i64 } %129, 0
  store ptr %132, ptr %131, align 8
  %133 = getelementptr inbounds { ptr, i64 }, ptr %130, i32 0, i32 1
  %134 = extractvalue { ptr, i64 } %129, 1
  store i64 %134, ptr %133, align 8
  br label %135

135:                                              ; preds = %734, %3
  %136 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br i1 %136, label %138, label %137

137:                                              ; preds = %135
  store i32 2, ptr %11, align 4
  br label %742

138:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #8
  %139 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  %140 = getelementptr inbounds %"class.simdjson::dom::element", ptr %12, i32 0, i32 0
  %141 = getelementptr inbounds { ptr, i64 }, ptr %140, i32 0, i32 0
  %142 = extractvalue { ptr, i64 } %139, 0
  store ptr %142, ptr %141, align 8
  %143 = getelementptr inbounds { ptr, i64 }, ptr %140, i32 0, i32 1
  %144 = extractvalue { ptr, i64 } %139, 1
  store i64 %144, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #8
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  %145 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %14, ptr noundef nonnull align 8 dereferenceable(16) %13) #8
  %146 = icmp ne i32 %145, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  %147 = call i1 @llvm.expect.i1(i1 %146, i1 false)
  br i1 %147, label %148, label %149

148:                                              ; preds = %138
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %728

149:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 104, ptr %15) #8
  %150 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %150, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #8
  %151 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %151, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #8
  %152 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %152) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.137) #8
  %153 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 0
  %154 = load i64, ptr %153, align 8
  %155 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 1
  %156 = load ptr, ptr %155, align 8
  %157 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 %154, ptr %156, ptr noundef %16) #8
  store i64 %157, ptr %17, align 8, !tbaa !9
  %158 = load i64, ptr %17, align 8, !tbaa !9
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %160, label %168

160:                                              ; preds = %149
  %161 = load i64, ptr %17, align 8, !tbaa !9
  %162 = icmp eq i64 %161, 8
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  br label %166

164:                                              ; preds = %160
  %165 = load i64, ptr %17, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %164, %163
  %167 = phi i64 [ 5, %163 ], [ %165, %164 ]
  store i64 %167, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %727

168:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %169 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 3
  %170 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %169) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIN8fastgltf9PrimitiveEEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef %170) #8
  invoke void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %171 unwind label %195

171:                                              ; preds = %168
  %172 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 0
  %173 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %174 unwind label %199

174:                                              ; preds = %171
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  %175 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 0
  %176 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #8
  invoke void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %175, i64 noundef %176)
          to label %177 unwind label %204

177:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  store ptr %16, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #8
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %178) #8
  %180 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %24, i32 0, i32 0
  %181 = getelementptr inbounds { ptr, i64 }, ptr %180, i32 0, i32 0
  %182 = extractvalue { ptr, i64 } %179, 0
  store ptr %182, ptr %181, align 8
  %183 = getelementptr inbounds { ptr, i64 }, ptr %180, i32 0, i32 1
  %184 = extractvalue { ptr, i64 } %179, 1
  store i64 %184, ptr %183, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #8
  %185 = load ptr, ptr %23, align 8, !tbaa !5
  %186 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %185) #8
  %187 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %25, i32 0, i32 0
  %188 = getelementptr inbounds { ptr, i64 }, ptr %187, i32 0, i32 0
  %189 = extractvalue { ptr, i64 } %186, 0
  store ptr %189, ptr %188, align 8
  %190 = getelementptr inbounds { ptr, i64 }, ptr %187, i32 0, i32 1
  %191 = extractvalue { ptr, i64 } %186, 1
  store i64 %191, ptr %190, align 8
  br label %192

192:                                              ; preds = %573, %177
  %193 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br i1 %193, label %208, label %194

194:                                              ; preds = %192
  store i32 4, ptr %11, align 4
  br label %579

195:                                              ; preds = %168
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %21, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %22, align 4
  br label %203

199:                                              ; preds = %171
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %21, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %22, align 4
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %203

203:                                              ; preds = %199, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %741

204:                                              ; preds = %596, %174
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %21, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %22, align 4
  br label %741

208:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %209 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  %210 = getelementptr inbounds %"class.simdjson::dom::element", ptr %26, i32 0, i32 0
  %211 = getelementptr inbounds { ptr, i64 }, ptr %210, i32 0, i32 0
  %212 = extractvalue { ptr, i64 } %209, 0
  store ptr %212, ptr %211, align 8
  %213 = getelementptr inbounds { ptr, i64 }, ptr %210, i32 0, i32 1
  %214 = extractvalue { ptr, i64 } %209, 1
  store i64 %214, ptr %213, align 8
  call void @llvm.lifetime.start.p0(i64 304, ptr %27) #8
  %215 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 0
  invoke void @_ZN8fastgltf11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(224) %215)
          to label %216 unwind label %226

216:                                              ; preds = %208
  %217 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 1
  store i8 4, ptr %217, align 8, !tbaa !11
  %218 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %218, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  %219 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 3
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #8
  %220 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 4
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %220) #8
  %221 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %221, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %221) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  %222 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %29, ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  %223 = icmp ne i32 %222, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  %224 = call i1 @llvm.expect.i1(i1 %223, i1 false)
  br i1 %224, label %225, label %230

225:                                              ; preds = %216
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %567

226:                                              ; preds = %208
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %21, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %22, align 4
  br label %578

230:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %32, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.138) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %31, ptr noundef nonnull align 8 dereferenceable(20) %32) #8
  %231 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %31, ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  %232 = icmp ne i32 %231, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #8
  %233 = call i1 @llvm.expect.i1(i1 %232, i1 false)
  br i1 %233, label %234, label %235

234:                                              ; preds = %230
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %566

235:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %236 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 0
  %237 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %115, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(224) %236)
          to label %238 unwind label %243

238:                                              ; preds = %235
  store i64 %237, ptr %33, align 8, !tbaa !9
  %239 = load i64, ptr %33, align 8, !tbaa !9
  %240 = icmp ne i64 %239, 0
  br i1 %240, label %241, label %247

241:                                              ; preds = %238
  %242 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %242, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %248

243:                                              ; preds = %235
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %21, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %577

247:                                              ; preds = %238
  store i32 0, ptr %11, align 4
  br label %248

248:                                              ; preds = %247, %241
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  %249 = load i32, ptr %11, align 4
  switch i32 %249, label %566 [
    i32 0, label %250
  ]

250:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.139) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %35, ptr noundef nonnull align 8 dereferenceable(20) %36) #8
  %251 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %35, ptr noundef nonnull align 8 dereferenceable(16) %34) #8
  %252 = icmp eq i32 %251, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #8
  %253 = call i1 @llvm.expect.i1(i1 %252, i1 true)
  br i1 %253, label %254, label %340

254:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %255 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 3
  %256 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %255) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIN8fastgltf11SmallVectorINS1_9AttributeELm4ENS0_IS3_EEEEEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %256) #8
  invoke void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEC2EmRKS7_(ptr noundef nonnull align 8 dereferenceable(32) %37, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %257 unwind label %281

257:                                              ; preds = %254
  %258 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 2
  %259 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEaSEOS8_(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %260 unwind label %285

260:                                              ; preds = %257
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  %261 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 2
  %262 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %34) #8
  invoke void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %261, i64 noundef %262)
          to label %263 unwind label %290

263:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  store ptr %34, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #8
  %264 = load ptr, ptr %39, align 8, !tbaa !5
  %265 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %264) #8
  %266 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %40, i32 0, i32 0
  %267 = getelementptr inbounds { ptr, i64 }, ptr %266, i32 0, i32 0
  %268 = extractvalue { ptr, i64 } %265, 0
  store ptr %268, ptr %267, align 8
  %269 = getelementptr inbounds { ptr, i64 }, ptr %266, i32 0, i32 1
  %270 = extractvalue { ptr, i64 } %265, 1
  store i64 %270, ptr %269, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #8
  %271 = load ptr, ptr %39, align 8, !tbaa !5
  %272 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %271) #8
  %273 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %41, i32 0, i32 0
  %274 = getelementptr inbounds { ptr, i64 }, ptr %273, i32 0, i32 0
  %275 = extractvalue { ptr, i64 } %272, 0
  store ptr %275, ptr %274, align 8
  %276 = getelementptr inbounds { ptr, i64 }, ptr %273, i32 0, i32 1
  %277 = extractvalue { ptr, i64 } %272, 1
  store i64 %277, ptr %276, align 8
  br label %278

278:                                              ; preds = %334, %263
  %279 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  br i1 %279, label %294, label %280

280:                                              ; preds = %278
  store i32 6, ptr %11, align 4
  br label %337

281:                                              ; preds = %254
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %21, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %22, align 4
  br label %289

285:                                              ; preds = %257
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %21, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %22, align 4
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %289

289:                                              ; preds = %285, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  br label %576

290:                                              ; preds = %260
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %21, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %22, align 4
  br label %576

294:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #8
  %295 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  %296 = getelementptr inbounds %"class.simdjson::dom::element", ptr %42, i32 0, i32 0
  %297 = getelementptr inbounds { ptr, i64 }, ptr %296, i32 0, i32 0
  %298 = extractvalue { ptr, i64 } %295, 0
  store ptr %298, ptr %297, align 8
  %299 = getelementptr inbounds { ptr, i64 }, ptr %296, i32 0, i32 1
  %300 = extractvalue { ptr, i64 } %295, 1
  store i64 %300, ptr %299, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #8
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %42) #8
  %301 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %43, ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  %302 = icmp ne i32 %301, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  %303 = call i1 @llvm.expect.i1(i1 %302, i1 false)
  br i1 %303, label %304, label %305

304:                                              ; preds = %294
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %331

305:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %306 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 2
  %307 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE12emplace_backIJEEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %306)
          to label %308 unwind label %316

308:                                              ; preds = %305
  store ptr %307, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %309 = load ptr, ptr %44, align 8, !tbaa !5
  %310 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %115, ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(224) %309)
          to label %311 unwind label %320

311:                                              ; preds = %308
  store i64 %310, ptr %45, align 8, !tbaa !9
  %312 = load i64, ptr %45, align 8, !tbaa !9
  %313 = icmp ne i64 %312, 0
  br i1 %313, label %314, label %324

314:                                              ; preds = %311
  %315 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %315, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %325

316:                                              ; preds = %305
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %21, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %22, align 4
  br label %336

320:                                              ; preds = %308
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %21, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %336

324:                                              ; preds = %311
  store i32 0, ptr %11, align 4
  br label %325

325:                                              ; preds = %324, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  %326 = load i32, ptr %11, align 4
  switch i32 %326, label %328 [
    i32 0, label %327
  ]

327:                                              ; preds = %325
  store i32 0, ptr %11, align 4
  br label %328

328:                                              ; preds = %327, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  %329 = load i32, ptr %11, align 4
  switch i32 %329, label %331 [
    i32 0, label %330
  ]

330:                                              ; preds = %328
  store i32 0, ptr %11, align 4
  br label %331

331:                                              ; preds = %330, %328, %304
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  %332 = load i32, ptr %11, align 4
  switch i32 %332, label %337 [
    i32 0, label %333
  ]

333:                                              ; preds = %331
  br label %334

334:                                              ; preds = %333
  %335 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  br label %278

336:                                              ; preds = %320, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %576

337:                                              ; preds = %331, %280
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  %338 = load i32, ptr %11, align 4
  switch i32 %338, label %565 [
    i32 6, label %339
  ]

339:                                              ; preds = %337
  br label %340

340:                                              ; preds = %339, %250
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.68) #8
  %341 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %49) #8
  store { i64, i32 } %341, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %48, ptr align 8 %50, i64 12, i1 false)
  %342 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %48, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  store i32 %342, ptr %47, align 4, !tbaa !28
  %343 = load i32, ptr %47, align 4, !tbaa !28
  %344 = icmp eq i32 %343, 0
  %345 = call i1 @llvm.expect.i1(i1 %344, i1 true)
  br i1 %345, label %346, label %350

346:                                              ; preds = %340
  %347 = load i64, ptr %46, align 8, !tbaa !30
  %348 = trunc i64 %347 to i8
  %349 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 1
  store i8 %348, ptr %349, align 8, !tbaa !11
  br label %356

350:                                              ; preds = %340
  %351 = load i32, ptr %47, align 4, !tbaa !28
  %352 = icmp ne i32 %351, 20
  %353 = call i1 @llvm.expect.i1(i1 %352, i1 false)
  br i1 %353, label %354, label %355

354:                                              ; preds = %350
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %357

355:                                              ; preds = %350
  br label %356

356:                                              ; preds = %355, %346
  store i32 0, ptr %11, align 4
  br label %357

357:                                              ; preds = %356, %354
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  %358 = load i32, ptr %11, align 4
  switch i32 %358, label %564 [
    i32 0, label %359
  ]

359:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.46) #8
  %360 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %53) #8
  store { i64, i32 } %360, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %54, i64 12, i1 false)
  %361 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %52, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  store i32 %361, ptr %51, align 4, !tbaa !28
  %362 = load i32, ptr %51, align 4, !tbaa !28
  %363 = icmp eq i32 %362, 0
  %364 = call i1 @llvm.expect.i1(i1 %363, i1 true)
  br i1 %364, label %365, label %369

365:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %366 = load i64, ptr %46, align 8, !tbaa !30
  store i64 %366, ptr %55, align 8, !tbaa !30
  %367 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 3
  %368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %367, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %374

369:                                              ; preds = %359
  %370 = load i32, ptr %51, align 4, !tbaa !28
  %371 = icmp ne i32 %370, 20
  br i1 %371, label %372, label %373

372:                                              ; preds = %369
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %375

373:                                              ; preds = %369
  br label %374

374:                                              ; preds = %373, %365
  store i32 0, ptr %11, align 4
  br label %375

375:                                              ; preds = %374, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  %376 = load i32, ptr %11, align 4
  switch i32 %376, label %564 [
    i32 0, label %377
  ]

377:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %58, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.140) #8
  %378 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %58) #8
  store { i64, i32 } %378, ptr %59, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %57, ptr align 8 %59, i64 12, i1 false)
  %379 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %57, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #8
  store i32 %379, ptr %56, align 4, !tbaa !28
  %380 = load i32, ptr %56, align 4, !tbaa !28
  %381 = icmp eq i32 %380, 0
  %382 = call i1 @llvm.expect.i1(i1 %381, i1 true)
  br i1 %382, label %383, label %387

383:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %384 = load i64, ptr %46, align 8, !tbaa !30
  store i64 %384, ptr %60, align 8, !tbaa !30
  %385 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 4
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %392

387:                                              ; preds = %377
  %388 = load i32, ptr %56, align 4, !tbaa !28
  %389 = icmp ne i32 %388, 20
  br i1 %389, label %390, label %391

390:                                              ; preds = %387
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %393

391:                                              ; preds = %387
  br label %392

392:                                              ; preds = %391, %383
  store i32 0, ptr %11, align 4
  br label %393

393:                                              ; preds = %392, %390
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  %394 = load i32, ptr %11, align 4
  switch i32 %394, label %564 [
    i32 0, label %395
  ]

395:                                              ; preds = %393
  %396 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 1
  %397 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %396, i32 0, i32 5
  %398 = load i64, ptr %397, align 8, !tbaa !31
  %399 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %398, i64 noundef 16777216)
          to label %400 unwind label %418

400:                                              ; preds = %395
  br i1 %399, label %401, label %560

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %64) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.5) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %63, ptr noundef nonnull align 8 dereferenceable(20) %64) #8
  %402 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %63, ptr noundef nonnull align 8 dereferenceable(16) %61) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #8
  store i32 %402, ptr %62, align 4, !tbaa !28
  %403 = load i32, ptr %62, align 4, !tbaa !28
  %404 = icmp eq i32 %403, 0
  br i1 %404, label %405, label %548

405:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %68) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %69, ptr align 8 @_ZN8fastgltf10extensionsL22KHR_materials_variantsE, i64 16, i1 false), !tbaa.struct !62
  %406 = getelementptr inbounds { i64, ptr }, ptr %69, i32 0, i32 0
  %407 = load i64, ptr %406, align 8
  %408 = getelementptr inbounds { i64, ptr }, ptr %69, i32 0, i32 1
  %409 = load ptr, ptr %408, align 8
  call void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %61, i64 %407, ptr %409) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %67, ptr noundef nonnull align 8 dereferenceable(20) %68) #8
  %410 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %67, ptr noundef nonnull align 8 dereferenceable(16) %65) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #8
  store i32 %410, ptr %66, align 4, !tbaa !28
  %411 = load i32, ptr %66, align 4, !tbaa !28
  %412 = icmp eq i32 %411, 0
  br i1 %412, label %413, label %536

413:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %72) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef @.str.141) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %71, ptr noundef nonnull align 8 dereferenceable(20) %72) #8
  %414 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %71, ptr noundef nonnull align 8 dereferenceable(16) %70) #8
  %415 = icmp ne i32 %414, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #8
  %416 = call i1 @llvm.expect.i1(i1 %415, i1 false)
  br i1 %416, label %417, label %422

417:                                              ; preds = %413
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %533

418:                                              ; preds = %560, %395
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %21, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %22, align 4
  br label %575

422:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  store ptr %70, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #8
  %423 = load ptr, ptr %73, align 8, !tbaa !5
  %424 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %423) #8
  %425 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %74, i32 0, i32 0
  %426 = getelementptr inbounds { ptr, i64 }, ptr %425, i32 0, i32 0
  %427 = extractvalue { ptr, i64 } %424, 0
  store ptr %427, ptr %426, align 8
  %428 = getelementptr inbounds { ptr, i64 }, ptr %425, i32 0, i32 1
  %429 = extractvalue { ptr, i64 } %424, 1
  store i64 %429, ptr %428, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #8
  %430 = load ptr, ptr %73, align 8, !tbaa !5
  %431 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %430) #8
  %432 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %75, i32 0, i32 0
  %433 = getelementptr inbounds { ptr, i64 }, ptr %432, i32 0, i32 0
  %434 = extractvalue { ptr, i64 } %431, 0
  store ptr %434, ptr %433, align 8
  %435 = getelementptr inbounds { ptr, i64 }, ptr %432, i32 0, i32 1
  %436 = extractvalue { ptr, i64 } %431, 1
  store i64 %436, ptr %435, align 8
  br label %437

437:                                              ; preds = %528, %422
  %438 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 8 dereferenceable(16) %75) #8
  br i1 %438, label %440, label %439

439:                                              ; preds = %437
  store i32 8, ptr %11, align 4
  br label %530

440:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #8
  %441 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #8
  %442 = getelementptr inbounds %"class.simdjson::dom::element", ptr %76, i32 0, i32 0
  %443 = getelementptr inbounds { ptr, i64 }, ptr %442, i32 0, i32 0
  %444 = extractvalue { ptr, i64 } %441, 0
  store ptr %444, ptr %443, align 8
  %445 = getelementptr inbounds { ptr, i64 }, ptr %442, i32 0, i32 1
  %446 = extractvalue { ptr, i64 } %441, 1
  store i64 %446, ptr %445, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #8
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  %447 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %78, ptr noundef nonnull align 8 dereferenceable(16) %77) #8
  %448 = icmp ne i32 %447, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #8
  %449 = call i1 @llvm.expect.i1(i1 %448, i1 false)
  br i1 %449, label %450, label %451

450:                                              ; preds = %440
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %522

451:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef @.str.140) #8
  %452 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %81) #8
  store { i64, i32 } %452, ptr %82, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %80, ptr align 8 %82, i64 12, i1 false)
  %453 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %80, ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  %454 = icmp ne i32 %453, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  %455 = call i1 @llvm.expect.i1(i1 %454, i1 false)
  br i1 %455, label %456, label %457

456:                                              ; preds = %451
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %521

457:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %85) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %85, ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef @.str.79) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %84, ptr noundef nonnull align 8 dereferenceable(20) %85) #8
  %458 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %84, ptr noundef nonnull align 8 dereferenceable(16) %83) #8
  %459 = icmp ne i32 %458, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #8
  %460 = call i1 @llvm.expect.i1(i1 %459, i1 false)
  br i1 %460, label %461, label %462

461:                                              ; preds = %457
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %520

462:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  store ptr %83, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #8
  %463 = load ptr, ptr %86, align 8, !tbaa !5
  %464 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %463) #8
  %465 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %87, i32 0, i32 0
  %466 = getelementptr inbounds { ptr, i64 }, ptr %465, i32 0, i32 0
  %467 = extractvalue { ptr, i64 } %464, 0
  store ptr %467, ptr %466, align 8
  %468 = getelementptr inbounds { ptr, i64 }, ptr %465, i32 0, i32 1
  %469 = extractvalue { ptr, i64 } %464, 1
  store i64 %469, ptr %468, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #8
  %470 = load ptr, ptr %86, align 8, !tbaa !5
  %471 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %470) #8
  %472 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %88, i32 0, i32 0
  %473 = getelementptr inbounds { ptr, i64 }, ptr %472, i32 0, i32 0
  %474 = extractvalue { ptr, i64 } %471, 0
  store ptr %474, ptr %473, align 8
  %475 = getelementptr inbounds { ptr, i64 }, ptr %472, i32 0, i32 1
  %476 = extractvalue { ptr, i64 } %471, 1
  store i64 %476, ptr %475, align 8
  br label %477

477:                                              ; preds = %511, %462
  %478 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %88) #8
  br i1 %478, label %480, label %479

479:                                              ; preds = %477
  store i32 10, ptr %11, align 4
  br label %517

480:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #8
  %481 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  %482 = getelementptr inbounds %"class.simdjson::dom::element", ptr %89, i32 0, i32 0
  %483 = getelementptr inbounds { ptr, i64 }, ptr %482, i32 0, i32 0
  %484 = extractvalue { ptr, i64 } %481, 0
  store ptr %484, ptr %483, align 8
  %485 = getelementptr inbounds { ptr, i64 }, ptr %482, i32 0, i32 1
  %486 = extractvalue { ptr, i64 } %481, 1
  store i64 %486, ptr %485, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #8
  %487 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #8
  store { i64, i32 } %487, ptr %92, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %91, ptr align 8 %92, i64 12, i1 false)
  %488 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %91, ptr noundef nonnull align 8 dereferenceable(8) %90) #8
  %489 = icmp ne i32 %488, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  %490 = call i1 @llvm.expect.i1(i1 %489, i1 false)
  br i1 %490, label %491, label %492

491:                                              ; preds = %480
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %505

492:                                              ; preds = %480
  %493 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %494 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 5
  %495 = call noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %494) #8
  store i64 %495, ptr %93, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %496 = load i64, ptr %90, align 8, !tbaa !30
  %497 = add i64 %496, 1
  store i64 %497, ptr %94, align 8, !tbaa !30
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf3maxImEERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  %499 = load i64, ptr %498, align 8, !tbaa !30
  invoke void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %493, i64 noundef %499)
          to label %500 unwind label %513

500:                                              ; preds = %492
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  %501 = getelementptr inbounds %"struct.fastgltf::Primitive", ptr %27, i32 0, i32 5
  %502 = load i64, ptr %90, align 8, !tbaa !30
  %503 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %501, i64 noundef %502) #8
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSIRmTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S6_(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  store i32 0, ptr %11, align 4
  br label %505

505:                                              ; preds = %500, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  %506 = load i32, ptr %11, align 4
  switch i32 %506, label %508 [
    i32 0, label %507
  ]

507:                                              ; preds = %505
  store i32 0, ptr %11, align 4
  br label %508

508:                                              ; preds = %507, %505
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  %509 = load i32, ptr %11, align 4
  switch i32 %509, label %517 [
    i32 0, label %510
  ]

510:                                              ; preds = %508
  br label %511

511:                                              ; preds = %510
  %512 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  br label %477

513:                                              ; preds = %492
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %21, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #8
  br label %575

517:                                              ; preds = %508, %479
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  %518 = load i32, ptr %11, align 4
  switch i32 %518, label %520 [
    i32 10, label %519
  ]

519:                                              ; preds = %517
  store i32 0, ptr %11, align 4
  br label %520

520:                                              ; preds = %519, %517, %461
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #8
  br label %521

521:                                              ; preds = %520, %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %522

522:                                              ; preds = %521, %450
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #8
  %523 = load i32, ptr %11, align 4
  switch i32 %523, label %525 [
    i32 0, label %524
  ]

524:                                              ; preds = %522
  store i32 0, ptr %11, align 4
  br label %525

525:                                              ; preds = %524, %522
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  %526 = load i32, ptr %11, align 4
  switch i32 %526, label %530 [
    i32 0, label %527
  ]

527:                                              ; preds = %525
  br label %528

528:                                              ; preds = %527
  %529 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #8
  br label %437

530:                                              ; preds = %525, %439
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  %531 = load i32, ptr %11, align 4
  switch i32 %531, label %533 [
    i32 8, label %532
  ]

532:                                              ; preds = %530
  store i32 0, ptr %11, align 4
  br label %533

533:                                              ; preds = %532, %530, %417
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #8
  %534 = load i32, ptr %11, align 4
  switch i32 %534, label %542 [
    i32 0, label %535
  ]

535:                                              ; preds = %533
  br label %541

536:                                              ; preds = %405
  %537 = load i32, ptr %66, align 4, !tbaa !28
  %538 = icmp ne i32 %537, 20
  br i1 %538, label %539, label %540

539:                                              ; preds = %536
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %542

540:                                              ; preds = %536
  br label %541

541:                                              ; preds = %540, %535
  store i32 0, ptr %11, align 4
  br label %542

542:                                              ; preds = %541, %539, %533
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  %543 = load i32, ptr %11, align 4
  switch i32 %543, label %545 [
    i32 0, label %544
  ]

544:                                              ; preds = %542
  store i32 0, ptr %11, align 4
  br label %545

545:                                              ; preds = %544, %542
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #8
  %546 = load i32, ptr %11, align 4
  switch i32 %546, label %554 [
    i32 0, label %547
  ]

547:                                              ; preds = %545
  br label %553

548:                                              ; preds = %401
  %549 = load i32, ptr %62, align 4, !tbaa !28
  %550 = icmp ne i32 %549, 20
  br i1 %550, label %551, label %552

551:                                              ; preds = %548
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %554

552:                                              ; preds = %548
  br label %553

553:                                              ; preds = %552, %547
  store i32 0, ptr %11, align 4
  br label %554

554:                                              ; preds = %553, %551, %545
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  %555 = load i32, ptr %11, align 4
  switch i32 %555, label %557 [
    i32 0, label %556
  ]

556:                                              ; preds = %554
  store i32 0, ptr %11, align 4
  br label %557

557:                                              ; preds = %556, %554
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #8
  %558 = load i32, ptr %11, align 4
  switch i32 %558, label %564 [
    i32 0, label %559
  ]

559:                                              ; preds = %557
  br label %560

560:                                              ; preds = %559, %400
  %561 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 0
  %562 = invoke noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %561, ptr noundef nonnull align 8 dereferenceable(304) %27)
          to label %563 unwind label %418

563:                                              ; preds = %560
  store i32 0, ptr %11, align 4
  br label %564

564:                                              ; preds = %563, %557, %393, %375, %357
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %565

565:                                              ; preds = %564, %337
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  br label %566

566:                                              ; preds = %565, %248, %234
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %567

567:                                              ; preds = %566, %225
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %27) #8
  call void @llvm.lifetime.end.p0(i64 304, ptr %27) #8
  %568 = load i32, ptr %11, align 4
  switch i32 %568, label %570 [
    i32 0, label %569
  ]

569:                                              ; preds = %567
  store i32 0, ptr %11, align 4
  br label %570

570:                                              ; preds = %569, %567
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  %571 = load i32, ptr %11, align 4
  switch i32 %571, label %579 [
    i32 0, label %572
  ]

572:                                              ; preds = %570
  br label %573

573:                                              ; preds = %572
  %574 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  br label %192

575:                                              ; preds = %513, %418
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %576

576:                                              ; preds = %575, %336, %290, %289
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #8
  br label %577

577:                                              ; preds = %576, %243
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %27) #8
  br label %578

578:                                              ; preds = %577, %226
  call void @llvm.lifetime.end.p0(i64 304, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %741

579:                                              ; preds = %570, %194
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %580 = load i32, ptr %11, align 4
  switch i32 %580, label %727 [
    i32 4, label %581
  ]

581:                                              ; preds = %579
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef @.str.56) #8
  %582 = getelementptr inbounds { i64, ptr }, ptr %95, i32 0, i32 0
  %583 = load i64, ptr %582, align 8
  %584 = getelementptr inbounds { i64, ptr }, ptr %95, i32 0, i32 1
  %585 = load ptr, ptr %584, align 8
  %586 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 %583, ptr %585, ptr noundef %16) #8
  store i64 %586, ptr %17, align 8, !tbaa !9
  %587 = load i64, ptr %17, align 8, !tbaa !9
  %588 = icmp eq i64 %587, 0
  %589 = call i1 @llvm.expect.i1(i1 %588, i1 true)
  br i1 %589, label %590, label %659

590:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %591 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 3
  %592 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %591) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIfEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef %592) #8
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %96, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %593 unwind label %617

593:                                              ; preds = %590
  %594 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 1
  %595 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %594, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %596 unwind label %621

596:                                              ; preds = %593
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  %597 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 1
  %598 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #8
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %597, i64 noundef %598)
          to label %599 unwind label %204

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

614:                                              ; preds = %650, %599
  %615 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  br i1 %615, label %626, label %616

616:                                              ; preds = %614
  store i32 12, ptr %11, align 4
  br label %656

617:                                              ; preds = %590
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %21, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %22, align 4
  br label %625

621:                                              ; preds = %593
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %21, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %22, align 4
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  br label %625

625:                                              ; preds = %621, %617
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #8
  br label %741

626:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #8
  %627 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %99) #8
  %628 = getelementptr inbounds %"class.simdjson::dom::element", ptr %101, i32 0, i32 0
  %629 = getelementptr inbounds { ptr, i64 }, ptr %628, i32 0, i32 0
  %630 = extractvalue { ptr, i64 } %627, 0
  store ptr %630, ptr %629, align 8
  %631 = getelementptr inbounds { ptr, i64 }, ptr %628, i32 0, i32 1
  %632 = extractvalue { ptr, i64 } %627, 1
  store i64 %632, ptr %631, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #8
  %633 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  store { double, i32 } %633, ptr %104, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %104, i64 12, i1 false)
  %634 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %103, ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  %635 = icmp ne i32 %634, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  %636 = call i1 @llvm.expect.i1(i1 %635, i1 false)
  br i1 %636, label %637, label %638

637:                                              ; preds = %626
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %644

638:                                              ; preds = %626
  %639 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %640 = load double, ptr %102, align 8, !tbaa !63
  %641 = fptrunc double %640 to float
  store float %641, ptr %105, align 4, !tbaa !65
  %642 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE12emplace_backIJfEEERfDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %639, ptr noundef nonnull align 4 dereferenceable(4) %105)
          to label %643 unwind label %652

643:                                              ; preds = %638
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  store i32 0, ptr %11, align 4
  br label %644

644:                                              ; preds = %643, %637
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  %645 = load i32, ptr %11, align 4
  switch i32 %645, label %647 [
    i32 0, label %646
  ]

646:                                              ; preds = %644
  store i32 0, ptr %11, align 4
  br label %647

647:                                              ; preds = %646, %644
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  %648 = load i32, ptr %11, align 4
  switch i32 %648, label %656 [
    i32 0, label %649
  ]

649:                                              ; preds = %647
  br label %650

650:                                              ; preds = %649
  %651 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %99) #8
  br label %614

652:                                              ; preds = %638
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %21, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %741

656:                                              ; preds = %647, %616
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  %657 = load i32, ptr %11, align 4
  switch i32 %657, label %727 [
    i32 12, label %658
  ]

658:                                              ; preds = %656
  br label %667

659:                                              ; preds = %581
  %660 = load i64, ptr %17, align 8, !tbaa !9
  %661 = icmp ne i64 %660, 8
  br i1 %661, label %662, label %666

662:                                              ; preds = %659
  %663 = load i64, ptr %17, align 8, !tbaa !9
  %664 = icmp ne i64 %663, 0
  br i1 %664, label %665, label %666

665:                                              ; preds = %662
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %727

666:                                              ; preds = %662, %659
  br label %667

667:                                              ; preds = %666, %658
  %668 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 1
  %669 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %668, i32 0, i32 3
  %670 = load ptr, ptr %669, align 8, !tbaa !67
  %671 = icmp ne ptr %670, null
  br i1 %671, label %672, label %703

672:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %108) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %109) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %109, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.48) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %108, ptr noundef nonnull align 8 dereferenceable(20) %109) #8
  %673 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %108, ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  store i32 %673, ptr %107, align 4, !tbaa !28
  %674 = load i32, ptr %107, align 4, !tbaa !28
  %675 = icmp eq i32 %674, 0
  br i1 %675, label %676, label %691

676:                                              ; preds = %672
  %677 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 1
  %678 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %677, i32 0, i32 3
  %679 = load ptr, ptr %678, align 8, !tbaa !67
  %680 = load ptr, ptr %7, align 8, !tbaa !5
  %681 = getelementptr inbounds %"class.fastgltf::Asset", ptr %680, i32 0, i32 13
  %682 = call noundef i64 @_ZNKSt6vectorIN8fastgltf4MeshESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %681) #8
  %683 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 1
  %684 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %683, i32 0, i32 4
  %685 = load ptr, ptr %684, align 8, !tbaa !68
  invoke void %679(ptr noundef %106, i64 noundef %682, i32 noundef 512, ptr noundef %685)
          to label %686 unwind label %687

686:                                              ; preds = %676
  br label %696

687:                                              ; preds = %676
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %21, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #8
  br label %741

691:                                              ; preds = %672
  %692 = load i32, ptr %107, align 4, !tbaa !28
  %693 = icmp ne i32 %692, 20
  br i1 %693, label %694, label %695

694:                                              ; preds = %691
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %697

695:                                              ; preds = %691
  br label %696

696:                                              ; preds = %695, %686
  store i32 0, ptr %11, align 4
  br label %697

697:                                              ; preds = %696, %694
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  %698 = load i32, ptr %11, align 4
  switch i32 %698, label %700 [
    i32 0, label %699
  ]

699:                                              ; preds = %697
  store i32 0, ptr %11, align 4
  br label %700

700:                                              ; preds = %699, %697
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #8
  %701 = load i32, ptr %11, align 4
  switch i32 %701, label %727 [
    i32 0, label %702
  ]

702:                                              ; preds = %700
  br label %703

703:                                              ; preds = %702, %667
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %112) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.49) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %111, ptr noundef nonnull align 8 dereferenceable(20) %112) #8
  %704 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %111, ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  %705 = icmp eq i32 %704, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #8
  br i1 %705, label %706, label %722

706:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 40, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  %707 = getelementptr inbounds %"class.fastgltf::Parser", ptr %115, i32 0, i32 3
  %708 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %707) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef %708) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %113, ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %709 unwind label %713

709:                                              ; preds = %706
  %710 = getelementptr inbounds %"struct.fastgltf::Mesh", ptr %15, i32 0, i32 2
  %711 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %710, ptr noundef nonnull align 8 dereferenceable(40) %113)
          to label %712 unwind label %717

712:                                              ; preds = %709
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %113) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %113) #8
  br label %722

713:                                              ; preds = %706
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %21, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %22, align 4
  br label %721

717:                                              ; preds = %709
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %21, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %113) #8
  br label %721

721:                                              ; preds = %717, %713
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %113) #8
  br label %740

722:                                              ; preds = %712, %703
  %723 = load ptr, ptr %7, align 8, !tbaa !5
  %724 = getelementptr inbounds %"class.fastgltf::Asset", ptr %723, i32 0, i32 13
  %725 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %724, ptr noundef nonnull align 8 dereferenceable(104) %15)
          to label %726 unwind label %736

726:                                              ; preds = %722
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #8
  store i32 0, ptr %11, align 4
  br label %727

727:                                              ; preds = %726, %700, %665, %656, %579, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  call void @_ZN8fastgltf4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %15) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr %15) #8
  br label %728

728:                                              ; preds = %727, %148
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #8
  %729 = load i32, ptr %11, align 4
  switch i32 %729, label %731 [
    i32 0, label %730
  ]

730:                                              ; preds = %728
  store i32 0, ptr %11, align 4
  br label %731

731:                                              ; preds = %730, %728
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  %732 = load i32, ptr %11, align 4
  switch i32 %732, label %742 [
    i32 0, label %733
  ]

733:                                              ; preds = %731
  br label %734

734:                                              ; preds = %733
  %735 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br label %135

736:                                              ; preds = %722
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %21, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %22, align 4
  br label %740

740:                                              ; preds = %736, %721
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #8
  br label %741

741:                                              ; preds = %740, %687, %652, %625, %578, %204, %203
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #8
  call void @_ZN8fastgltf4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %15) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  br label %747

742:                                              ; preds = %731, %137
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %743 = load i32, ptr %11, align 4
  switch i32 %743, label %752 [
    i32 2, label %744
    i32 1, label %745
  ]

744:                                              ; preds = %742
  store i64 0, ptr %4, align 8
  br label %745

745:                                              ; preds = %744, %742
  %746 = load i64, ptr %4, align 8
  ret i64 %746

747:                                              ; preds = %741
  %748 = load ptr, ptr %21, align 8
  %749 = load i32, ptr %22, align 4
  %750 = insertvalue { ptr, i32 } poison, ptr %748, 0
  %751 = insertvalue { ptr, i32 } %750, i32 %749, 1
  resume { ptr, i32 } %751

752:                                              ; preds = %742
  unreachable
}

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16), i64, ptr, ptr noundef) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 = { 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 #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 = { nocallback nofree nosync nounwind willreturn memory(none) }
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 = { 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 = !{!"_ZTSN8fastgltf5ErrorE", !7, i64 0}
!11 = !{!12, !17, i64 224}
!12 = !{!"_ZTSN8fastgltf9PrimitiveE", !13, i64 0, !17, i64 224, !18, i64 232, !23, i64 264, !23, i64 272, !24, i64 280}
!13 = !{!"_ZTSN8fastgltf11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS1_EEEE", !14, i64 0, !15, i64 192, !6, i64 200, !16, i64 208, !16, i64 216}
!14 = !{!"_ZTSSt5arrayISt4byteLm192EE", !7, i64 0}
!15 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIN8fastgltf9AttributeEEE", !6, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSN8fastgltf13PrimitiveTypeE", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE12_Vector_implE", !21, i64 0, !22, i64 8}
!21 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIN8fastgltf11SmallVectorINS1_9AttributeELm4ENS0_IS3_EEEEEE", !6, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSN8fastgltf21OptionalWithFlagValueImEE", !7, i64 0}
!24 = !{!"_ZTSSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!29, !29, i64 0}
!29 = !{!"_ZTSN8simdjson10error_codeE", !7, i64 0}
!30 = !{!16, !16, i64 0}
!31 = !{!32, !40, i64 48}
!32 = !{!"_ZTSN8fastgltf6ParserE", !33, i64 0, !39, i64 8, !41, i64 56, !48, i64 248, !51, i64 264, !61, i64 304}
!33 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !34, i64 0}
!34 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !37, i64 0}
!37 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !38, i64 0}
!38 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !6, i64 0}
!39 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !40, i64 40}
!40 = !{!"_ZTSN8fastgltf10ExtensionsE", !7, i64 0}
!41 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !42, i64 0}
!42 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !43, i64 0}
!43 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !44, i64 0}
!44 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !45, i64 0}
!45 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !46, i64 0}
!46 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !47, i64 0}
!47 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !7, i64 0, !7, i64 184}
!48 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !49, i64 0}
!49 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !50, i64 8}
!50 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!51 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !52, i64 0, !54, i64 32}
!52 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !53, i64 0, !16, i64 8, !7, i64 16}
!53 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!54 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !55, i64 0}
!55 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !57, i64 0}
!57 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !58, i64 0}
!58 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !59, i64 0}
!59 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !60, i64 0}
!60 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !6, i64 0}
!61 = !{!"_ZTSN8fastgltf7OptionsE", !7, i64 0}
!62 = !{i64 0, i64 8, !30, i64 8, i64 8, !5}
!63 = !{!64, !64, i64 0}
!64 = !{!"double", !7, i64 0}
!65 = !{!66, !66, i64 0}
!66 = !{!"float", !7, i64 0}
!67 = !{!32, !6, i64 32}
!68 = !{!32, !6, i64 40}


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

%"class.std::basic_string_view" = type { i64, ptr }
%"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" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"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" }
%"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" }
%"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.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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 }
%"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] }
%"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.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"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 }
%"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 }>
%"struct.simdjson::simdjson_result.16" = type { %"struct.simdjson::internal::simdjson_result_base.base.21", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.21" = type { %"struct.std::pair.base.20" }
%"struct.std::pair.base.20" = type <{ double, i32 }>

@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN8fastgltf10extensionsL22KHR_materials_variantsE = external hidden local_unnamed_addr constant %"class.std::basic_string_view", align 8
@.str.46 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [9 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64, ptr) local_unnamed_addr #3 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 #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)) local_unnamed_addr #2 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 #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20)) 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 #2 align 2

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

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

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

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

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

; 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 #1 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 #3 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 #1 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: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #4 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 #1 align 2

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

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

; 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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 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 #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)) local_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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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 #1 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 #3 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 #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN8fastgltf6Parser11parseMeshesERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(580) %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.simdjson::dom::array::iterator", align 8
  %5 = alloca %"class.simdjson::dom::array::iterator", align 8
  %6 = alloca %"class.simdjson::dom::element", align 8
  %7 = alloca %"class.simdjson::dom::object", align 8
  %8 = alloca %"struct.simdjson::simdjson_result", align 8
  %9 = alloca %"struct.fastgltf::Mesh", align 8
  %10 = alloca %"class.simdjson::dom::array", align 8
  %11 = alloca %"class.std::basic_string_view", align 8
  %12 = alloca %"class.std::vector.166", align 8
  %13 = alloca %"class.std::pmr::polymorphic_allocator.168", align 8
  %14 = alloca %"class.simdjson::dom::array::iterator", align 8
  %15 = alloca %"class.simdjson::dom::array::iterator", align 8
  %16 = alloca %"class.simdjson::dom::element", align 8
  %17 = alloca %"struct.fastgltf::Primitive", align 8
  %18 = alloca %"class.simdjson::dom::object", align 8
  %19 = alloca %"struct.simdjson::simdjson_result", align 8
  %20 = alloca %"class.simdjson::dom::object", align 8
  %21 = alloca %"struct.simdjson::simdjson_result", align 8
  %22 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %23 = alloca %"class.simdjson::dom::array", align 8
  %24 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %25 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %26 = alloca %"class.std::vector.173", align 8
  %27 = alloca %"class.std::pmr::polymorphic_allocator.175", align 8
  %28 = alloca %"class.simdjson::dom::array::iterator", align 8
  %29 = alloca %"class.simdjson::dom::array::iterator", align 8
  %30 = alloca %"class.simdjson::dom::element", align 8
  %31 = alloca %"struct.simdjson::simdjson_result", align 8
  %32 = alloca i64, align 8
  %33 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %34 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %35 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %36 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %37 = alloca i64, align 8
  %38 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %39 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %40 = alloca i64, align 8
  %41 = alloca %"class.simdjson::dom::object", align 8
  %42 = alloca %"struct.simdjson::simdjson_result", align 8
  %43 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %44 = alloca %"class.simdjson::dom::object", align 8
  %45 = alloca %"struct.simdjson::simdjson_result", align 8
  %46 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %47 = alloca %"class.simdjson::dom::array", align 8
  %48 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %49 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %50 = alloca %"class.simdjson::dom::array::iterator", align 8
  %51 = alloca %"class.simdjson::dom::array::iterator", align 8
  %52 = alloca %"class.simdjson::dom::element", align 8
  %53 = alloca %"class.simdjson::dom::object", align 8
  %54 = alloca %"struct.simdjson::simdjson_result", align 8
  %55 = alloca i64, align 8
  %56 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %57 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %58 = alloca %"class.simdjson::dom::array", align 8
  %59 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %60 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %61 = alloca %"class.simdjson::dom::array::iterator", align 8
  %62 = alloca %"class.simdjson::dom::array::iterator", align 8
  %63 = alloca %"class.simdjson::dom::element", align 8
  %64 = alloca i64, align 8
  %65 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca %"class.std::basic_string_view", align 8
  %69 = alloca %"class.std::vector.169", align 8
  %70 = alloca %"class.std::pmr::polymorphic_allocator.171", align 8
  %71 = alloca %"class.simdjson::dom::array::iterator", align 8
  %72 = alloca %"class.simdjson::dom::array::iterator", align 8
  %73 = alloca %"class.simdjson::dom::element", align 8
  %74 = alloca double, align 8
  %75 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %76 = alloca float, align 4
  %77 = alloca %"class.simdjson::dom::object", align 8
  %78 = alloca %"struct.simdjson::simdjson_result", align 8
  %79 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %80 = alloca %"class.std::basic_string_view", align 8
  %81 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %82 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %83 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %84 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %85 = getelementptr inbounds i8, ptr %2, i64 408
  %86 = tail call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  tail call void @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %86)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #6
  %87 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %88 = extractvalue { ptr, i64 } %87, 0
  store ptr %88, ptr %4, align 8
  %89 = getelementptr inbounds i8, ptr %4, i64 8
  %90 = extractvalue { ptr, i64 } %87, 1
  store i64 %90, ptr %89, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %91 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %92 = extractvalue { ptr, i64 } %91, 0
  store ptr %92, ptr %5, align 8
  %93 = getelementptr inbounds i8, ptr %5, i64 8
  %94 = extractvalue { ptr, i64 } %91, 1
  store i64 %94, ptr %93, align 8
  %95 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %95, label %.lr.ph375, label %.loopexit329

.lr.ph375:                                        ; preds = %3
  %96 = getelementptr inbounds i8, ptr %6, i64 8
  %97 = getelementptr inbounds i8, ptr %9, i64 32
  %98 = getelementptr inbounds i8, ptr %9, i64 64
  %99 = getelementptr inbounds i8, ptr %11, i64 8
  %100 = getelementptr inbounds i8, ptr %0, i64 248
  %101 = getelementptr inbounds i8, ptr %14, i64 8
  %102 = getelementptr inbounds i8, ptr %15, i64 8
  %103 = getelementptr inbounds i8, ptr %16, i64 8
  %104 = getelementptr inbounds i8, ptr %17, i64 224
  %105 = getelementptr inbounds i8, ptr %17, i64 232
  %106 = getelementptr inbounds i8, ptr %17, i64 264
  %107 = getelementptr inbounds i8, ptr %17, i64 272
  %108 = getelementptr inbounds i8, ptr %17, i64 280
  %109 = getelementptr inbounds i8, ptr %28, i64 8
  %110 = getelementptr inbounds i8, ptr %29, i64 8
  %111 = getelementptr inbounds i8, ptr %30, i64 8
  %.sroa.276.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  %.sroa.270.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8
  %.sroa.264.0..sroa_idx = getelementptr inbounds i8, ptr %38, i64 8
  %112 = getelementptr inbounds i8, ptr %0, i64 48
  %.sroa.055.0.copyload = load i64, ptr @_ZN8fastgltf10extensionsL22KHR_materials_variantsE, align 8
  %.sroa.256.0.copyload = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN8fastgltf10extensionsL22KHR_materials_variantsE, i64 8), align 8
  %113 = getelementptr inbounds i8, ptr %50, i64 8
  %114 = getelementptr inbounds i8, ptr %51, i64 8
  %115 = getelementptr inbounds i8, ptr %52, i64 8
  %.sroa.252.0..sroa_idx = getelementptr inbounds i8, ptr %56, i64 8
  %116 = getelementptr inbounds i8, ptr %61, i64 8
  %117 = getelementptr inbounds i8, ptr %62, i64 8
  %118 = getelementptr inbounds i8, ptr %63, i64 8
  %.sroa.246.0..sroa_idx = getelementptr inbounds i8, ptr %65, i64 8
  %119 = getelementptr inbounds i8, ptr %68, i64 8
  %120 = getelementptr inbounds i8, ptr %71, i64 8
  %121 = getelementptr inbounds i8, ptr %72, i64 8
  %122 = getelementptr inbounds i8, ptr %73, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8
  %123 = getelementptr inbounds i8, ptr %0, i64 32
  %124 = getelementptr inbounds i8, ptr %0, i64 40
  br label %125

125:                                              ; preds = %.lr.ph375, %356
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  %126 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %127 = extractvalue { ptr, i64 } %126, 0
  store ptr %127, ptr %6, align 8
  %128 = extractvalue { ptr, i64 } %126, 1
  store i64 %128, ptr %96, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %6) #6
  %129 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %8, ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  %.not = icmp eq i32 %129, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  br i1 %.not, label %130, label %.thread319, !prof !5

.thread319:                                       ; preds = %125
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit329

130:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %9) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %97, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %98) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef @.str.137) #6
  %131 = load i64, ptr %11, align 8
  %132 = load ptr, ptr %99, align 8
  %133 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %131, ptr %132, ptr noundef nonnull %10) #6
  %.not192 = icmp eq i64 %133, 0
  br i1 %.not192, label %137, label %134

134:                                              ; preds = %130
  %135 = icmp eq i64 %133, 8
  %136 = select i1 %135, i64 5, i64 %133
  br label %.thread324

137:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %138 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIN8fastgltf9PrimitiveEEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef %138) #6
  invoke void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %139 unwind label %151

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %141 unwind label %153

141:                                              ; preds = %139
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  %142 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  invoke void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %9, i64 noundef %142)
          to label %143 unwind label %156

143:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  %144 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  %145 = extractvalue { ptr, i64 } %144, 0
  store ptr %145, ptr %14, align 8
  %146 = extractvalue { ptr, i64 } %144, 1
  store i64 %146, ptr %101, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  %147 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  %148 = extractvalue { ptr, i64 } %147, 0
  store ptr %148, ptr %15, align 8
  %149 = extractvalue { ptr, i64 } %147, 1
  store i64 %149, ptr %102, align 8
  %150 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  br i1 %150, label %.lr.ph369, label %._crit_edge370

151:                                              ; preds = %137
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %155

153:                                              ; preds = %139
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %155

155:                                              ; preds = %153, %151
  %.pn = phi { ptr, i32 } [ %154, %153 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %362

156:                                              ; preds = %301, %141
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %362

.lr.ph369:                                        ; preds = %143, %288
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  %158 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  %159 = extractvalue { ptr, i64 } %158, 0
  store ptr %159, ptr %16, align 8
  %160 = extractvalue { ptr, i64 } %158, 1
  store i64 %160, ptr %103, align 8
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %17) #6
  call void @_ZN8fastgltf11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(224) %17)
  store i8 4, ptr %104, align 8, !tbaa !6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %105, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #6
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #6
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %108, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  %161 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %19, ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %.not194 = icmp eq i32 %161, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #6
  br i1 %.not194, label %162, label %.thread287, !prof !5

.thread287:                                       ; preds = %.lr.ph369
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %.thread306

162:                                              ; preds = %.lr.ph369
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #6
  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) %18, ptr noundef nonnull @.str.138) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %21, ptr noundef nonnull align 8 dereferenceable(20) %22) #6
  %163 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %21, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %.not195 = icmp eq i32 %163, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br i1 %.not195, label %164, label %.thread292, !prof !5

164:                                              ; preds = %162
  %165 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(224) %17)
          to label %166 unwind label %167

166:                                              ; preds = %164
  %.not196 = icmp eq i64 %165, 0
  br i1 %.not196, label %169, label %.thread292

167:                                              ; preds = %164
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %293

169:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.139) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %24, ptr noundef nonnull align 8 dereferenceable(20) %25) #6
  %170 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %24, ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  %171 = icmp eq i32 %170, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br i1 %171, label %172, label %210, !prof !5

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  %173 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIN8fastgltf11SmallVectorINS1_9AttributeELm4ENS0_IS3_EEEEEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef %173) #6
  invoke void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEC2EmRKS7_(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %174 unwind label %186

174:                                              ; preds = %172
  %175 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEEaSEOS8_(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %176 unwind label %188

176:                                              ; preds = %174
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  %177 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  invoke void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %105, i64 noundef %177)
          to label %178 unwind label %191

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #6
  %179 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  %180 = extractvalue { ptr, i64 } %179, 0
  store ptr %180, ptr %28, align 8
  %181 = extractvalue { ptr, i64 } %179, 1
  store i64 %181, ptr %109, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #6
  %182 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  %183 = extractvalue { ptr, i64 } %182, 0
  store ptr %183, ptr %29, align 8
  %184 = extractvalue { ptr, i64 } %182, 1
  store i64 %184, ptr %110, align 8
  %185 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  br i1 %185, label %.lr.ph, label %._crit_edge

186:                                              ; preds = %172
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %190

188:                                              ; preds = %174
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %190

190:                                              ; preds = %188, %186
  %.pn197 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %292

191:                                              ; preds = %176
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %292

.lr.ph:                                           ; preds = %178, %206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  %193 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  %194 = extractvalue { ptr, i64 } %193, 0
  store ptr %194, ptr %30, align 8
  %195 = extractvalue { ptr, i64 } %193, 1
  store i64 %195, ptr %111, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  %196 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %31, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %.not199 = icmp eq i32 %196, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br i1 %.not199, label %197, label %.thread296, !prof !5

197:                                              ; preds = %.lr.ph
  %198 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZNSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE12emplace_backIJEEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %105)
          to label %199 unwind label %202

199:                                              ; preds = %197
  %200 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesINS_11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS3_EEEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(224) %198)
          to label %201 unwind label %204

201:                                              ; preds = %199
  %.not202 = icmp eq i64 %200, 0
  br i1 %.not202, label %206, label %.thread296

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

204:                                              ; preds = %199
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %209

.thread296:                                       ; preds = %201, %.lr.ph
  %.5.ph = phi i64 [ 5, %.lr.ph ], [ %200, %201 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %.thread306

206:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  %207 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  %208 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  br i1 %208, label %.lr.ph, label %._crit_edge

209:                                              ; preds = %204, %202
  %.pn200 = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  br label %292

._crit_edge:                                      ; preds = %206, %178
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  br label %210

210:                                              ; preds = %._crit_edge, %169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.68) #6
  %211 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %34) #6
  %.fca.0.extract73 = extractvalue { i64, i32 } %211, 0
  %.fca.1.extract74 = extractvalue { i64, i32 } %211, 1
  store i64 %.fca.0.extract73, ptr %33, align 8
  store i32 %.fca.1.extract74, ptr %.sroa.276.0..sroa_idx, align 8
  %212 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %33, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  switch i32 %212, label %.thread301 [
    i32 0, label %213
    i32 20, label %216
  ], !prof !26

213:                                              ; preds = %210
  %214 = load i64, ptr %32, align 8, !tbaa !27
  %215 = trunc i64 %214 to i8
  store i8 %215, ptr %104, align 8, !tbaa !6
  br label %216

216:                                              ; preds = %213, %210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.46) #6
  %217 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %36) #6
  %.fca.0.extract67 = extractvalue { i64, i32 } %217, 0
  %.fca.1.extract68 = extractvalue { i64, i32 } %217, 1
  store i64 %.fca.0.extract67, ptr %35, align 8
  store i32 %.fca.1.extract68, ptr %.sroa.270.0..sroa_idx, align 8
  %218 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %35, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  switch i32 %218, label %.thread301 [
    i32 0, label %219
    i32 20, label %222
  ], !prof !28

219:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  %220 = load i64, ptr %32, align 8, !tbaa !27
  store i64 %220, ptr %37, align 8, !tbaa !27
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  br label %222

222:                                              ; preds = %219, %216
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.140) #6
  %223 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %39) #6
  %.fca.0.extract61 = extractvalue { i64, i32 } %223, 0
  %.fca.1.extract62 = extractvalue { i64, i32 } %223, 1
  store i64 %.fca.0.extract61, ptr %38, align 8
  store i32 %.fca.1.extract62, ptr %.sroa.264.0..sroa_idx, align 8
  %224 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %38, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #6
  switch i32 %224, label %.thread301 [
    i32 0, label %225
    i32 20, label %228
  ], !prof !28

225:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  %226 = load i64, ptr %32, align 8, !tbaa !27
  store i64 %226, ptr %40, align 8, !tbaa !27
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  br label %228

228:                                              ; preds = %225, %222
  %229 = load i64, ptr %112, align 8, !tbaa !29
  %230 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %229, i64 noundef 16777216)
  br i1 %230, label %231, label %286

231:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.5) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %42, ptr noundef nonnull align 8 dereferenceable(20) %43) #6
  %232 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %42, ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #6
  switch i32 %232, label %.loopexit [
    i32 0, label %233
    i32 20, label %.thread283
  ]

233:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %46) #6
  call void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %41, i64 %.sroa.055.0.copyload, ptr %.sroa.256.0.copyload) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %45, ptr noundef nonnull align 8 dereferenceable(20) %46) #6
  %234 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %45, ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #6
  switch i32 %234, label %.loopexit328 [
    i32 0, label %235
    i32 20, label %.thread278
  ]

235:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull @.str.141) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %48, ptr noundef nonnull align 8 dereferenceable(20) %49) #6
  %236 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %48, ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  %.not208 = icmp eq i32 %236, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #6
  br i1 %.not208, label %239, label %.thread273, !prof !5

237:                                              ; preds = %286
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %291

239:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #6
  %240 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  %241 = extractvalue { ptr, i64 } %240, 0
  store ptr %241, ptr %50, align 8
  %242 = extractvalue { ptr, i64 } %240, 1
  store i64 %242, ptr %113, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #6
  %243 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %47) #6
  %244 = extractvalue { ptr, i64 } %243, 0
  store ptr %244, ptr %51, align 8
  %245 = extractvalue { ptr, i64 } %243, 1
  store i64 %245, ptr %114, align 8
  %246 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  br i1 %246, label %.lr.ph366, label %._crit_edge367

.lr.ph366:                                        ; preds = %239, %._crit_edge364
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #6
  %247 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  %248 = extractvalue { ptr, i64 } %247, 0
  store ptr %248, ptr %52, align 8
  %249 = extractvalue { ptr, i64 } %247, 1
  store i64 %249, ptr %115, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  %250 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %54, ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  %.not209 = icmp eq i32 %250, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #6
  br i1 %.not209, label %251, label %.thread249, !prof !5

.thread249:                                       ; preds = %.lr.ph366
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  br label %.thread267

251:                                              ; preds = %.lr.ph366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull @.str.140) #6
  %252 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %57) #6
  %.fca.0.extract49 = extractvalue { i64, i32 } %252, 0
  %.fca.1.extract50 = extractvalue { i64, i32 } %252, 1
  store i64 %.fca.0.extract49, ptr %56, align 8
  store i32 %.fca.1.extract50, ptr %.sroa.252.0..sroa_idx, align 8
  %253 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %56, ptr noundef nonnull align 8 dereferenceable(8) %55) #6
  %.not210 = icmp eq i32 %253, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #6
  br i1 %.not210, label %254, label %.thread253, !prof !5

.thread253:                                       ; preds = %251
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  br label %.thread267

254:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %60) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %60, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull @.str.79) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %59, ptr noundef nonnull align 8 dereferenceable(20) %60) #6
  %255 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %59, ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  %.not211 = icmp eq i32 %255, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #6
  br i1 %.not211, label %256, label %.thread257, !prof !5

.thread257:                                       ; preds = %254
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  br label %.thread267

256:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #6
  %257 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  %258 = extractvalue { ptr, i64 } %257, 0
  store ptr %258, ptr %61, align 8
  %259 = extractvalue { ptr, i64 } %257, 1
  store i64 %259, ptr %116, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #6
  %260 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  %261 = extractvalue { ptr, i64 } %260, 0
  store ptr %261, ptr %62, align 8
  %262 = extractvalue { ptr, i64 } %260, 1
  store i64 %262, ptr %117, align 8
  %263 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  br i1 %263, label %.lr.ph363, label %._crit_edge364

.lr.ph363:                                        ; preds = %256, %275
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #6
  %264 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %61) #6
  %265 = extractvalue { ptr, i64 } %264, 0
  store ptr %265, ptr %63, align 8
  %266 = extractvalue { ptr, i64 } %264, 1
  store i64 %266, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #6
  %267 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #6
  %.fca.0.extract43 = extractvalue { i64, i32 } %267, 0
  %.fca.1.extract44 = extractvalue { i64, i32 } %267, 1
  store i64 %.fca.0.extract43, ptr %65, align 8
  store i32 %.fca.1.extract44, ptr %.sroa.246.0..sroa_idx, align 8
  %268 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %65, ptr noundef nonnull align 8 dereferenceable(8) %64) #6
  %.not212 = icmp eq i32 %268, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #6
  br i1 %.not212, label %269, label %283, !prof !5

269:                                              ; preds = %.lr.ph363
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #6
  %270 = call noundef i64 @_ZNKSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  store i64 %270, ptr %66, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #6
  %271 = load i64, ptr %64, align 8, !tbaa !27
  %272 = add i64 %271, 1
  store i64 %272, ptr %67, align 8, !tbaa !27
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf3maxImEERKT_S3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #6
  %274 = load i64, ptr %273, align 8, !tbaa !27
  invoke void @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %274)
          to label %275 unwind label %281

275:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #6
  %276 = load i64, ptr %64, align 8, !tbaa !27
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %276) #6
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSIRmTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S6_(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(8) %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #6
  %279 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %61) #6
  %280 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull align 8 dereferenceable(16) %62) #6
  br i1 %280, label %.lr.ph363, label %._crit_edge364

281:                                              ; preds = %269
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  br label %291

283:                                              ; preds = %.lr.ph363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  br label %.thread267

._crit_edge364:                                   ; preds = %275, %256
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  %284 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  %285 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  br i1 %285, label %.lr.ph366, label %._crit_edge367

.thread267:                                       ; preds = %283, %.thread249, %.thread253, %.thread257
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  br label %.thread273

.thread273:                                       ; preds = %235, %.thread267
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  br label %.loopexit328

._crit_edge367:                                   ; preds = %._crit_edge364, %239
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  br label %.thread278

.thread278:                                       ; preds = %._crit_edge367, %233
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  br label %.thread283

.loopexit328:                                     ; preds = %233, %.thread273
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  br label %.loopexit

.thread283:                                       ; preds = %.thread278, %231
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  br label %286

.loopexit:                                        ; preds = %231, %.loopexit328
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  br label %.thread301

286:                                              ; preds = %.thread283, %228
  %287 = invoke noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN8fastgltf9PrimitiveENSt3pmr21polymorphic_allocatorIS1_EEE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(304) %17)
          to label %288 unwind label %237

.thread292:                                       ; preds = %166, %162
  %.27.ph = phi i64 [ 5, %162 ], [ %165, %166 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %.thread306

.thread301:                                       ; preds = %210, %216, %222, %.loopexit
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %.thread306

288:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  %289 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  %290 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  br i1 %290, label %.lr.ph369, label %._crit_edge370

291:                                              ; preds = %281, %237
  %.pn213 = phi { ptr, i32 } [ %238, %237 ], [ %282, %281 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  br label %292

292:                                              ; preds = %291, %209, %191, %190
  %.pn213.pn = phi { ptr, i32 } [ %.pn213, %291 ], [ %.pn200, %209 ], [ %192, %191 ], [ %.pn197, %190 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #6
  br label %293

293:                                              ; preds = %292, %167
  %.pn213.pn.pn = phi { ptr, i32 } [ %.pn213.pn, %292 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @_ZN8fastgltf9PrimitiveD2Ev(ptr noundef nonnull align 8 dereferenceable(304) %17) #6
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %362

.thread306:                                       ; preds = %.thread287, %.thread292, %.thread296, %.thread301
  %.29.ph = phi i64 [ 5, %.thread301 ], [ %.5.ph, %.thread296 ], [ %.27.ph, %.thread292 ], [ 5, %.thread287 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %.thread324

._crit_edge370:                                   ; preds = %288, %143
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef @.str.56) #6
  %294 = load i64, ptr %68, align 8
  %295 = load ptr, ptr %119, align 8
  %296 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %294, ptr %295, ptr noundef nonnull %10) #6
  switch i64 %296, label %.thread324 [
    i64 0, label %297
    i64 8, label %330
  ], !prof !28

297:                                              ; preds = %._crit_edge370
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #6
  %298 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIfEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef %298) #6
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %69, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %299 unwind label %311

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %301 unwind label %313

301:                                              ; preds = %299
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #6
  %302 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %97, i64 noundef %302)
          to label %303 unwind label %156

303:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #6
  %304 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  %305 = extractvalue { ptr, i64 } %304, 0
  store ptr %305, ptr %71, align 8
  %306 = extractvalue { ptr, i64 } %304, 1
  store i64 %306, ptr %120, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #6
  %307 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  %308 = extractvalue { ptr, i64 } %307, 0
  store ptr %308, ptr %72, align 8
  %309 = extractvalue { ptr, i64 } %307, 1
  store i64 %309, ptr %121, align 8
  %310 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(16) %72) #6
  br i1 %310, label %.lr.ph372, label %._crit_edge373

311:                                              ; preds = %297
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %315

313:                                              ; preds = %299
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  br label %315

315:                                              ; preds = %313, %311
  %.pn218 = phi { ptr, i32 } [ %314, %313 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #6
  br label %362

.lr.ph372:                                        ; preds = %303, %325
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #6
  %316 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %317 = extractvalue { ptr, i64 } %316, 0
  store ptr %317, ptr %73, align 8
  %318 = extractvalue { ptr, i64 } %316, 1
  store i64 %318, ptr %122, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #6
  %319 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  %.fca.0.extract = extractvalue { double, i32 } %319, 0
  %.fca.1.extract = extractvalue { double, i32 } %319, 1
  store double %.fca.0.extract, ptr %75, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %320 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %75, ptr noundef nonnull align 8 dereferenceable(8) %74) #6
  %.not220 = icmp eq i32 %320, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #6
  br i1 %.not220, label %321, label %.thread313, !prof !5

321:                                              ; preds = %.lr.ph372
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %76) #6
  %322 = load double, ptr %74, align 8, !tbaa !60
  %323 = fptrunc double %322 to float
  store float %323, ptr %76, align 4, !tbaa !62
  %324 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE12emplace_backIJfEEERfDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %325 unwind label %328

.thread313:                                       ; preds = %.lr.ph372
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #6
  br label %.thread324

325:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #6
  %326 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  %327 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(16) %72) #6
  br i1 %327, label %.lr.ph372, label %._crit_edge373

328:                                              ; preds = %321
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #6
  br label %362

._crit_edge373:                                   ; preds = %325, %303
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #6
  br label %330

330:                                              ; preds = %._crit_edge373, %._crit_edge370
  %331 = load ptr, ptr %123, align 8, !tbaa !64
  %.not221 = icmp eq ptr %331, null
  br i1 %.not221, label %341, label %332

332:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %79) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %79, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.48) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %78, ptr noundef nonnull align 8 dereferenceable(20) %79) #6
  %333 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %78, ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #6
  switch i32 %333, label %340 [
    i32 0, label %334
    i32 20, label %.thread316
  ]

334:                                              ; preds = %332
  %335 = load ptr, ptr %123, align 8, !tbaa !64
  %336 = call noundef i64 @_ZNKSt6vectorIN8fastgltf4MeshESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #6
  %337 = load ptr, ptr %124, align 8, !tbaa !65
  invoke void %335(ptr noundef nonnull %77, i64 noundef %336, i32 noundef 512, ptr noundef %337)
          to label %.thread316 unwind label %338

338:                                              ; preds = %334
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  br label %362

.thread316:                                       ; preds = %334, %332
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  br label %341

340:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  br label %.thread324

341:                                              ; preds = %.thread316, %330
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %81) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %82) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.49) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %81, ptr noundef nonnull align 8 dereferenceable(20) %82) #6
  %342 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %81, ptr noundef nonnull align 8 dereferenceable(16) %80) #6
  %343 = icmp eq i32 %342, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %81) #6
  br i1 %343, label %344, label %354

344:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %83) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #6
  %345 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %345) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %83, ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %346 unwind label %349

346:                                              ; preds = %344
  %347 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %98, ptr noundef nonnull align 8 dereferenceable(40) %83)
          to label %348 unwind label %351

348:                                              ; preds = %346
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %83) #6
  br label %354

349:                                              ; preds = %344
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %353

351:                                              ; preds = %346
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %83) #6
  br label %353

353:                                              ; preds = %351, %349
  %.pn223 = phi { ptr, i32 } [ %352, %351 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %83) #6
  br label %361

354:                                              ; preds = %348, %341
  %355 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNSt6vectorIN8fastgltf4MeshESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(104) %9)
          to label %356 unwind label %359

.thread324:                                       ; preds = %._crit_edge370, %134, %340, %.thread306, %.thread313
  %.36.ph = phi i64 [ 5, %.thread313 ], [ %.29.ph, %.thread306 ], [ 5, %340 ], [ %136, %134 ], [ 5, %._crit_edge370 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %9) #6
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit329

356:                                              ; preds = %354
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %9) #6
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  %357 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %358 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %358, label %125, label %.loopexit329

359:                                              ; preds = %354
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %361

361:                                              ; preds = %359, %353
  %.pn225 = phi { ptr, i32 } [ %360, %359 ], [ %.pn223, %353 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #6
  br label %362

362:                                              ; preds = %361, %338, %328, %315, %293, %156, %155
  %.pn225.pn = phi { ptr, i32 } [ %.pn225, %361 ], [ %339, %338 ], [ %329, %328 ], [ %157, %156 ], [ %.pn218, %315 ], [ %.pn213.pn.pn, %293 ], [ %.pn, %155 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf4MeshD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %9) #6
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  resume { ptr, i32 } %.pn225.pn

.loopexit329:                                     ; preds = %356, %3, %.thread324, %.thread319
  %spec.select = phi i64 [ 5, %.thread319 ], [ %.36.ph, %.thread324 ], [ 0, %3 ], [ 0, %356 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  ret i64 %spec.select
}

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { 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 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!6 = !{!7, !15, i64 224}
!7 = !{!"_ZTSN8fastgltf9PrimitiveE", !8, i64 0, !15, i64 224, !16, i64 232, !21, i64 264, !21, i64 272, !22, i64 280}
!8 = !{!"_ZTSN8fastgltf11SmallVectorINS_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS1_EEEE", !9, i64 0, !12, i64 192, !13, i64 200, !14, i64 208, !14, i64 216}
!9 = !{!"_ZTSSt5arrayISt4byteLm192EE", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIN8fastgltf9AttributeEEE", !13, i64 0}
!13 = !{!"any pointer", !10, i64 0}
!14 = !{!"long", !10, i64 0}
!15 = !{!"_ZTSN8fastgltf13PrimitiveTypeE", !10, i64 0}
!16 = !{!"_ZTSSt6vectorIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE12_Vector_implE", !19, i64 0, !20, i64 8}
!19 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIN8fastgltf11SmallVectorINS1_9AttributeELm4ENS0_IS3_EEEEEE", !13, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf11SmallVectorINS0_9AttributeELm4ENSt3pmr21polymorphic_allocatorIS2_EEEENS4_IS6_EEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!21 = !{!"_ZTSN8fastgltf21OptionalWithFlagValueImEE", !10, i64 0}
!22 = !{!"_ZTSSt6vectorIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN8fastgltf21OptionalWithFlagValueImEESaIS2_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!26 = !{!"branch_weights", i32 1, i32 4002000, i32 2000}
!27 = !{!14, !14, i64 0}
!28 = !{!"branch_weights", i32 1, i32 4000, i32 1}
!29 = !{!30, !38, i64 48}
!30 = !{!"_ZTSN8fastgltf6ParserE", !31, i64 0, !37, i64 8, !39, i64 56, !46, i64 248, !49, i64 264, !59, i64 304}
!31 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !32, i64 0}
!32 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !33, i64 0}
!33 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !34, i64 0}
!34 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !35, i64 0}
!35 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !36, i64 0}
!36 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !13, i64 0}
!37 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !38, i64 40}
!38 = !{!"_ZTSN8fastgltf10ExtensionsE", !10, i64 0}
!39 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !40, i64 0}
!40 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !41, i64 0}
!41 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !42, i64 0}
!42 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !43, i64 0}
!43 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !44, i64 0}
!44 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !45, i64 0}
!45 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !10, i64 0, !10, i64 184}
!46 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !47, i64 0}
!47 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0, !48, i64 8}
!48 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !13, i64 0}
!49 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !50, i64 0, !52, i64 32}
!50 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !51, i64 0, !14, i64 8, !10, i64 16}
!51 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !13, i64 0}
!52 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !53, i64 0}
!53 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !54, i64 0}
!54 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !56, i64 0}
!56 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !57, i64 0}
!57 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !58, i64 0}
!58 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !13, i64 0}
!59 = !{!"_ZTSN8fastgltf7OptionsE", !10, i64 0}
!60 = !{!61, !61, i64 0}
!61 = !{!"double", !10, i64 0}
!62 = !{!63, !63, i64 0}
!63 = !{!"float", !10, i64 0}
!64 = !{!30, !13, i64 32}
!65 = !{!30, !13, i64 40}


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