; 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::Node" = type { %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.376", %"class.std::vector.169", %"class.std::variant.379", %"class.std::vector", %"class.std::__cxx11::basic_string.74" }
%"class.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"class.std::vector.376" = type { %"struct.std::_Vector_base.377" }
%"struct.std::_Vector_base.377" = type { %"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.378", %"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.378" = type { ptr }
%"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_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::variant.379" = type { %"struct.std::__detail::__variant::_Variant_base.base.396", [3 x i8] }
%"struct.std::__detail::__variant::_Variant_base.base.396" = type { %"struct.std::__detail::__variant::_Move_assign_base.base.395" }
%"struct.std::__detail::__variant::_Move_assign_base.base.395" = type { %"struct.std::__detail::__variant::_Copy_assign_base.base.394" }
%"struct.std::__detail::__variant::_Copy_assign_base.base.394" = type { %"struct.std::__detail::__variant::_Move_ctor_base.base.393" }
%"struct.std::__detail::__variant::_Move_ctor_base.base.393" = type { %"struct.std::__detail::__variant::_Copy_ctor_base.base.392" }
%"struct.std::__detail::__variant::_Copy_ctor_base.base.392" = type { %"struct.std::__detail::__variant::_Variant_storage.base.391" }
%"struct.std::__detail::__variant::_Variant_storage.base.391" = type <{ %"union.std::__detail::__variant::_Variadic_union.386", i8 }>
%"union.std::__detail::__variant::_Variadic_union.386" = type { %"union.std::__detail::__variant::_Variadic_union.388" }
%"union.std::__detail::__variant::_Variadic_union.388" = type { %"struct.std::__detail::__variant::_Uninitialized.389" }
%"struct.std::__detail::__variant::_Uninitialized.389" = type { %"class.fastgltf::math::mat" }
%"class.fastgltf::math::mat" = type { %"struct.std::array.390" }
%"struct.std::array.390" = type { [4 x %"class.fastgltf::math::vec.267"] }
%"class.fastgltf::math::vec.267" = type { %"struct.std::array.268" }
%"struct.std::array.268" = type { [4 x float] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator", %"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator" = type { ptr }
%"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_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.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 }>
%"struct.fastgltf::TRS" = type { %"class.fastgltf::math::vec.264", %"class.fastgltf::math::quat", %"class.fastgltf::math::vec.264" }
%"class.fastgltf::math::quat" = type { %"struct.std::array.268" }
%"class.fastgltf::math::vec.264" = type { %"struct.std::array.265" }
%"struct.std::array.265" = type { [3 x float] }
%"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.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 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.55 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [7 x i8], align 1
@_ZN8fastgltf10extensionsL19KHR_lights_punctualE = external hidden constant %"class.std::basic_string_view", align 8
@.str.147 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZN8fastgltf10extensionsL23EXT_mesh_gpu_instancingE = external hidden constant %"class.std::basic_string_view", align 8

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: 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: 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 uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAttributesISt6vectorINS_9AttributeENSt3pmr21polymorphic_allocatorIS3_EEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #6 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 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 @_ZNKSt6vectorIN8fastgltf4NodeESaIS1_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 noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef, i64 noundef) #2

; 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 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_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 %"struct.fastgltf::Node", align 8
  %14 = alloca %"class.simdjson::dom::object", align 8
  %15 = alloca %"struct.simdjson::simdjson_result", align 8
  %16 = alloca i64, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %19 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %20 = alloca { i64, i32 }, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %24 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %25 = alloca { i64, i32 }, align 8
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %29 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %30 = alloca { i64, i32 }, align 8
  %31 = alloca i64, align 8
  %32 = alloca %"class.simdjson::dom::array", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.std::basic_string_view", align 8
  %35 = alloca %"class.std::vector.376", align 8
  %36 = alloca %"class.std::pmr::polymorphic_allocator.378", align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %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.7", align 8
  %44 = alloca { i64, i32 }, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca %"class.std::basic_string_view", align 8
  %48 = alloca %"class.std::vector.169", align 8
  %49 = alloca %"class.std::pmr::polymorphic_allocator.171", align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.simdjson::dom::array::iterator", align 8
  %52 = alloca %"class.simdjson::dom::array::iterator", align 8
  %53 = alloca %"class.simdjson::dom::element", align 8
  %54 = alloca double, align 8
  %55 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %56 = alloca { double, i32 }, align 8
  %57 = alloca float, align 4
  %58 = alloca i32, align 4
  %59 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %60 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %61 = alloca %"class.fastgltf::math::mat", align 4
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"class.simdjson::dom::array::iterator", align 8
  %66 = alloca %"class.simdjson::dom::array::iterator", align 8
  %67 = alloca %"class.simdjson::dom::element", align 8
  %68 = alloca double, align 8
  %69 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %70 = alloca { double, i32 }, align 8
  %71 = alloca %"struct.fastgltf::TRS", align 4
  %72 = alloca %"class.fastgltf::math::mat", align 4
  %73 = alloca %"struct.fastgltf::TRS", align 4
  %74 = alloca i32, align 4
  %75 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %76 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %77 = alloca i32, align 4
  %78 = alloca ptr, align 8
  %79 = alloca %"class.simdjson::dom::array::iterator", align 8
  %80 = alloca %"class.simdjson::dom::array::iterator", align 8
  %81 = alloca %"class.simdjson::dom::element", align 8
  %82 = alloca double, align 8
  %83 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %84 = alloca { double, i32 }, align 8
  %85 = alloca i32, align 4
  %86 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %87 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %88 = alloca i32, align 4
  %89 = alloca ptr, align 8
  %90 = alloca %"class.simdjson::dom::array::iterator", align 8
  %91 = alloca %"class.simdjson::dom::array::iterator", align 8
  %92 = alloca %"class.simdjson::dom::element", align 8
  %93 = alloca double, align 8
  %94 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %95 = alloca { double, i32 }, align 8
  %96 = alloca i32, align 4
  %97 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %98 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca %"class.simdjson::dom::array::iterator", align 8
  %102 = alloca %"class.simdjson::dom::array::iterator", align 8
  %103 = alloca %"class.simdjson::dom::element", align 8
  %104 = alloca double, align 8
  %105 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %106 = alloca { double, i32 }, align 8
  %107 = alloca %"class.simdjson::dom::object", align 8
  %108 = alloca %"struct.simdjson::simdjson_result", align 8
  %109 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %110 = alloca %"class.simdjson::dom::object", align 8
  %111 = alloca %"struct.simdjson::simdjson_result", align 8
  %112 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %113 = alloca %"class.std::basic_string_view", align 8
  %114 = alloca i64, align 8
  %115 = alloca i32, align 4
  %116 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %117 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %118 = alloca { i64, i32 }, align 8
  %119 = alloca i64, align 8
  %120 = alloca %"class.simdjson::dom::object", align 8
  %121 = alloca i32, align 4
  %122 = alloca %"struct.simdjson::simdjson_result", align 8
  %123 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %124 = alloca %"class.std::basic_string_view", align 8
  %125 = alloca %"class.simdjson::dom::object", align 8
  %126 = alloca %"struct.simdjson::simdjson_result", align 8
  %127 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %128 = alloca i64, align 8
  %129 = alloca %"class.simdjson::dom::object", align 8
  %130 = alloca i32, align 4
  %131 = alloca %"struct.simdjson::simdjson_result", align 8
  %132 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %133 = alloca %"class.std::basic_string_view", align 8
  %134 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %135 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %136 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %137 = 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
  %138 = load ptr, ptr %5, align 8
  %139 = load ptr, ptr %7, align 8, !tbaa !5
  %140 = getelementptr inbounds %"class.fastgltf::Asset", ptr %139, i32 0, i32 14
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %141) #8
  call void @_ZNSt6vectorIN8fastgltf4NodeESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %142)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %143 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %143, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #8
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %144) #8
  %146 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %9, i32 0, i32 0
  %147 = getelementptr inbounds { ptr, i64 }, ptr %146, i32 0, i32 0
  %148 = extractvalue { ptr, i64 } %145, 0
  store ptr %148, ptr %147, align 8
  %149 = getelementptr inbounds { ptr, i64 }, ptr %146, i32 0, i32 1
  %150 = extractvalue { ptr, i64 } %145, 1
  store i64 %150, ptr %149, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %151) #8
  %153 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %10, i32 0, i32 0
  %154 = getelementptr inbounds { ptr, i64 }, ptr %153, i32 0, i32 0
  %155 = extractvalue { ptr, i64 } %152, 0
  store ptr %155, ptr %154, align 8
  %156 = getelementptr inbounds { ptr, i64 }, ptr %153, i32 0, i32 1
  %157 = extractvalue { ptr, i64 } %152, 1
  store i64 %157, ptr %156, align 8
  br label %158

158:                                              ; preds = %886, %3
  %159 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br i1 %159, label %161, label %160

160:                                              ; preds = %158
  store i32 2, ptr %11, align 4
  br label %897

161:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #8
  %162 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  %163 = getelementptr inbounds %"class.simdjson::dom::element", ptr %12, i32 0, i32 0
  %164 = getelementptr inbounds { ptr, i64 }, ptr %163, i32 0, i32 0
  %165 = extractvalue { ptr, i64 } %162, 0
  store ptr %165, ptr %164, align 8
  %166 = getelementptr inbounds { ptr, i64 }, ptr %163, i32 0, i32 1
  %167 = extractvalue { ptr, i64 } %162, 1
  store i64 %167, ptr %166, align 8
  call void @llvm.lifetime.start.p0(i64 240, ptr %13) #8
  %168 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 0
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  %169 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 1
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #8
  %170 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 2
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %170) #8
  %171 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 3
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  %172 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 4
  call void @llvm.memset.p0.i64(ptr align 8 %172, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  %173 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 5
  call void @llvm.memset.p0.i64(ptr align 8 %173, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #8
  %174 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 6
  call void @llvm.memset.p0.i64(ptr align 8 %174, i8 0, i64 68, i1 false)
  call void @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEC2Ev(ptr noundef nonnull align 4 dereferenceable(65) %174) #8
  %175 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 7
  call void @llvm.memset.p0.i64(ptr align 8 %175, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf9AttributeENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #8
  %176 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %176) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #8
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  %177 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %15, ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  %178 = icmp ne i32 %177, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #8
  %179 = call i1 @llvm.expect.i1(i1 %178, i1 false)
  br i1 %179, label %180, label %181

180:                                              ; preds = %161
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %880

181:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.142) #8
  %182 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %19) #8
  store { i64, i32 } %182, ptr %20, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %20, i64 12, i1 false)
  %183 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  store i32 %183, ptr %17, align 4, !tbaa !9
  %184 = load i32, ptr %17, align 4, !tbaa !9
  %185 = icmp eq i32 %184, 0
  br i1 %185, label %186, label %190

186:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %187 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %187, ptr %21, align 8, !tbaa !11
  %188 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 0
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %196

190:                                              ; preds = %181
  %191 = load i32, ptr %17, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 20
  %193 = call i1 @llvm.expect.i1(i1 %192, i1 false)
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %197

195:                                              ; preds = %190
  br label %196

196:                                              ; preds = %195, %186
  store i32 0, ptr %11, align 4
  br label %197

197:                                              ; preds = %196, %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  %198 = load i32, ptr %11, align 4
  switch i32 %198, label %879 [
    i32 0, label %199
  ]

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.143) #8
  %200 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %24) #8
  store { i64, i32 } %200, ptr %25, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %25, i64 12, i1 false)
  %201 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  store i32 %201, ptr %22, align 4, !tbaa !9
  %202 = load i32, ptr %22, align 4, !tbaa !9
  %203 = icmp eq i32 %202, 0
  br i1 %203, label %204, label %208

204:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %205 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %205, ptr %26, align 8, !tbaa !11
  %206 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 1
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %214

208:                                              ; preds = %199
  %209 = load i32, ptr %22, align 4, !tbaa !9
  %210 = icmp ne i32 %209, 20
  %211 = call i1 @llvm.expect.i1(i1 %210, i1 false)
  br i1 %211, label %212, label %213

212:                                              ; preds = %208
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %215

213:                                              ; preds = %208
  br label %214

214:                                              ; preds = %213, %204
  store i32 0, ptr %11, align 4
  br label %215

215:                                              ; preds = %214, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  %216 = load i32, ptr %11, align 4
  switch i32 %216, label %879 [
    i32 0, label %217
  ]

217:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.144) #8
  %218 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %29) #8
  store { i64, i32 } %218, ptr %30, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %28, ptr align 8 %30, i64 12, i1 false)
  %219 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %28, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  store i32 %219, ptr %27, align 4, !tbaa !9
  %220 = load i32, ptr %27, align 4, !tbaa !9
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %222, label %226

222:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %223 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %223, ptr %31, align 8, !tbaa !11
  %224 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 2
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %232

226:                                              ; preds = %217
  %227 = load i32, ptr %27, align 4, !tbaa !9
  %228 = icmp ne i32 %227, 20
  %229 = call i1 @llvm.expect.i1(i1 %228, i1 false)
  br i1 %229, label %230, label %231

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

231:                                              ; preds = %226
  br label %232

232:                                              ; preds = %231, %222
  store i32 0, ptr %11, align 4
  br label %233

233:                                              ; preds = %232, %230
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  %234 = load i32, ptr %11, align 4
  switch i32 %234, label %879 [
    i32 0, label %235
  ]

235:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef @.str.145) #8
  %236 = getelementptr inbounds { i64, ptr }, ptr %34, i32 0, i32 0
  %237 = load i64, ptr %236, align 8
  %238 = getelementptr inbounds { i64, ptr }, ptr %34, i32 0, i32 1
  %239 = load ptr, ptr %238, align 8
  %240 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 %237, ptr %239, ptr noundef %32) #8
  store i64 %240, ptr %33, align 8, !tbaa !13
  %241 = load i64, ptr %33, align 8, !tbaa !13
  %242 = icmp eq i64 %241, 0
  %243 = call i1 @llvm.expect.i1(i1 %242, i1 true)
  br i1 %243, label %244, label %313

244:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %245 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 3
  %246 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %245) #8
  call void @_ZNSt3pmr21polymorphic_allocatorImEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %246) #8
  invoke void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %35, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %247 unwind label %271

247:                                              ; preds = %244
  %248 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 4
  %249 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %248, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %250 unwind label %275

250:                                              ; preds = %247
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  %251 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 4
  %252 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  invoke void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %251, i64 noundef %252)
          to label %253 unwind label %280

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

268:                                              ; preds = %304, %253
  %269 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  br i1 %269, label %284, label %270

270:                                              ; preds = %268
  store i32 4, ptr %11, align 4
  br label %310

271:                                              ; preds = %244
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %37, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %38, align 4
  br label %279

275:                                              ; preds = %247
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %37, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %38, align 4
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %279

279:                                              ; preds = %275, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %896

280:                                              ; preds = %250
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %37, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %38, align 4
  br label %896

284:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #8
  %285 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  %286 = getelementptr inbounds %"class.simdjson::dom::element", ptr %42, i32 0, i32 0
  %287 = getelementptr inbounds { ptr, i64 }, ptr %286, i32 0, i32 0
  %288 = extractvalue { ptr, i64 } %285, 0
  store ptr %288, ptr %287, align 8
  %289 = getelementptr inbounds { ptr, i64 }, ptr %286, i32 0, i32 1
  %290 = extractvalue { ptr, i64 } %285, 1
  store i64 %290, ptr %289, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  %291 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #8
  store { i64, i32 } %291, ptr %44, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %44, i64 12, i1 false)
  %292 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %293 = icmp ne i32 %292, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  %294 = call i1 @llvm.expect.i1(i1 %293, i1 false)
  br i1 %294, label %295, label %296

295:                                              ; preds = %284
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %301

296:                                              ; preds = %284
  %297 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %298 = load i64, ptr %16, align 8, !tbaa !11
  store i64 %298, ptr %45, align 8, !tbaa !11
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE12emplace_backIJmEEERmDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %300 unwind label %306

300:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  store i32 0, ptr %11, align 4
  br label %301

301:                                              ; preds = %300, %295
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #8
  %302 = load i32, ptr %11, align 4
  switch i32 %302, label %310 [
    i32 0, label %303
  ]

303:                                              ; preds = %301
  br label %304

304:                                              ; preds = %303
  %305 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  br label %268

306:                                              ; preds = %296
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %37, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #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 %896

310:                                              ; preds = %301, %270
  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
  %311 = load i32, ptr %11, align 4
  switch i32 %311, label %878 [
    i32 4, label %312
  ]

312:                                              ; preds = %310
  br label %319

313:                                              ; preds = %235
  %314 = load i64, ptr %33, align 8, !tbaa !13
  %315 = icmp ne i64 %314, 8
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = load i64, ptr %33, align 8, !tbaa !13
  store i64 %317, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %878

318:                                              ; preds = %313
  br label %319

319:                                              ; preds = %318, %312
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef @.str.56) #8
  %320 = getelementptr inbounds { i64, ptr }, ptr %47, i32 0, i32 0
  %321 = load i64, ptr %320, align 8
  %322 = getelementptr inbounds { i64, ptr }, ptr %47, i32 0, i32 1
  %323 = load ptr, ptr %322, align 8
  %324 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 %321, ptr %323, ptr noundef %32) #8
  store i64 %324, ptr %46, align 8, !tbaa !13
  %325 = load i64, ptr %46, align 8, !tbaa !13
  %326 = icmp ne i64 %325, 8
  br i1 %326, label %327, label %405

327:                                              ; preds = %319
  %328 = load i64, ptr %46, align 8, !tbaa !13
  %329 = icmp ne i64 %328, 0
  br i1 %329, label %330, label %403

330:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %331 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 3
  %332 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %331) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIfEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef %332) #8
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %48, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %333 unwind label %357

333:                                              ; preds = %330
  %334 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 5
  %335 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %334, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %336 unwind label %361

336:                                              ; preds = %333
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  %337 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 5
  %338 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %337, i64 noundef %338)
          to label %339 unwind label %366

339:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  store ptr %32, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #8
  %340 = load ptr, ptr %50, align 8, !tbaa !5
  %341 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %340) #8
  %342 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %51, i32 0, i32 0
  %343 = getelementptr inbounds { ptr, i64 }, ptr %342, i32 0, i32 0
  %344 = extractvalue { ptr, i64 } %341, 0
  store ptr %344, ptr %343, align 8
  %345 = getelementptr inbounds { ptr, i64 }, ptr %342, i32 0, i32 1
  %346 = extractvalue { ptr, i64 } %341, 1
  store i64 %346, ptr %345, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  %347 = load ptr, ptr %50, align 8, !tbaa !5
  %348 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %347) #8
  %349 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %52, i32 0, i32 0
  %350 = getelementptr inbounds { ptr, i64 }, ptr %349, i32 0, i32 0
  %351 = extractvalue { ptr, i64 } %348, 0
  store ptr %351, ptr %350, align 8
  %352 = getelementptr inbounds { ptr, i64 }, ptr %349, i32 0, i32 1
  %353 = extractvalue { ptr, i64 } %348, 1
  store i64 %353, ptr %352, align 8
  br label %354

354:                                              ; preds = %394, %339
  %355 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %52) #8
  br i1 %355, label %370, label %356

356:                                              ; preds = %354
  store i32 6, ptr %11, align 4
  br label %400

357:                                              ; preds = %330
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %37, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %38, align 4
  br label %365

361:                                              ; preds = %333
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %37, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %38, align 4
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %365

365:                                              ; preds = %361, %357
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %895

366:                                              ; preds = %336
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %37, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %38, align 4
  br label %895

370:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #8
  %371 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #8
  %372 = getelementptr inbounds %"class.simdjson::dom::element", ptr %53, i32 0, i32 0
  %373 = getelementptr inbounds { ptr, i64 }, ptr %372, i32 0, i32 0
  %374 = extractvalue { ptr, i64 } %371, 0
  store ptr %374, ptr %373, align 8
  %375 = getelementptr inbounds { ptr, i64 }, ptr %372, i32 0, i32 1
  %376 = extractvalue { ptr, i64 } %371, 1
  store i64 %376, ptr %375, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #8
  %377 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %53) #8
  store { double, i32 } %377, ptr %56, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %55, ptr align 8 %56, i64 12, i1 false)
  %378 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %55, ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  %379 = icmp ne i32 %378, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  %380 = call i1 @llvm.expect.i1(i1 %379, i1 false)
  br i1 %380, label %381, label %382

381:                                              ; preds = %370
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %388

382:                                              ; preds = %370
  %383 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %384 = load double, ptr %54, align 8, !tbaa !15
  %385 = fptrunc double %384 to float
  store float %385, ptr %57, align 4, !tbaa !17
  %386 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE12emplace_backIJfEEERfDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %383, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %387 unwind label %396

387:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  store i32 0, ptr %11, align 4
  br label %388

388:                                              ; preds = %387, %381
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  %389 = load i32, ptr %11, align 4
  switch i32 %389, label %391 [
    i32 0, label %390
  ]

390:                                              ; preds = %388
  store i32 0, ptr %11, align 4
  br label %391

391:                                              ; preds = %390, %388
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  %392 = load i32, ptr %11, align 4
  switch i32 %392, label %400 [
    i32 0, label %393
  ]

393:                                              ; preds = %391
  br label %394

394:                                              ; preds = %393
  %395 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #8
  br label %354

396:                                              ; preds = %382
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %37, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %895

400:                                              ; preds = %391, %356
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  %401 = load i32, ptr %11, align 4
  switch i32 %401, label %877 [
    i32 6, label %402
  ]

402:                                              ; preds = %400
  br label %404

403:                                              ; preds = %327
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %877

404:                                              ; preds = %402
  br label %405

405:                                              ; preds = %404, %319
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %60, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.146) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %59, ptr noundef nonnull align 8 dereferenceable(20) %60) #8
  %406 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %59, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #8
  store i32 %406, ptr %58, align 4, !tbaa !9
  %407 = load i32, ptr %58, align 4, !tbaa !9
  %408 = icmp eq i32 %407, 0
  %409 = call i1 @llvm.expect.i1(i1 %408, i1 true)
  br i1 %409, label %410, label %491

410:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 64, ptr %61) #8
  call void @_ZN8fastgltf4math3matIfLm4ELm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(64) %61, float noundef 1.000000e+00) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  store i64 0, ptr %62, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  store i64 0, ptr %63, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  store ptr %32, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #8
  %411 = load ptr, ptr %64, align 8, !tbaa !5
  %412 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %411) #8
  %413 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %65, i32 0, i32 0
  %414 = getelementptr inbounds { ptr, i64 }, ptr %413, i32 0, i32 0
  %415 = extractvalue { ptr, i64 } %412, 0
  store ptr %415, ptr %414, align 8
  %416 = getelementptr inbounds { ptr, i64 }, ptr %413, i32 0, i32 1
  %417 = extractvalue { ptr, i64 } %412, 1
  store i64 %417, ptr %416, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #8
  %418 = load ptr, ptr %64, align 8, !tbaa !5
  %419 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %418) #8
  %420 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %66, i32 0, i32 0
  %421 = getelementptr inbounds { ptr, i64 }, ptr %420, i32 0, i32 0
  %422 = extractvalue { ptr, i64 } %419, 0
  store ptr %422, ptr %421, align 8
  %423 = getelementptr inbounds { ptr, i64 }, ptr %420, i32 0, i32 1
  %424 = extractvalue { ptr, i64 } %419, 1
  store i64 %424, ptr %423, align 8
  br label %425

425:                                              ; preds = %460, %410
  %426 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  br i1 %426, label %428, label %427

427:                                              ; preds = %425
  store i32 8, ptr %11, align 4
  br label %462

428:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #8
  %429 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %65) #8
  %430 = getelementptr inbounds %"class.simdjson::dom::element", ptr %67, i32 0, i32 0
  %431 = getelementptr inbounds { ptr, i64 }, ptr %430, i32 0, i32 0
  %432 = extractvalue { ptr, i64 } %429, 0
  store ptr %432, ptr %431, align 8
  %433 = getelementptr inbounds { ptr, i64 }, ptr %430, i32 0, i32 1
  %434 = extractvalue { ptr, i64 } %429, 1
  store i64 %434, ptr %433, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #8
  %435 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  store { double, i32 } %435, ptr %70, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %69, ptr align 8 %70, i64 12, i1 false)
  %436 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %69, ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  %437 = icmp ne i32 %436, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #8
  %438 = call i1 @llvm.expect.i1(i1 %437, i1 false)
  br i1 %438, label %439, label %440

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

440:                                              ; preds = %428
  %441 = load double, ptr %68, align 8, !tbaa !15
  %442 = fptrunc double %441 to float
  %443 = load i64, ptr %62, align 8, !tbaa !11
  %444 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8fastgltf4math3matIfLm4ELm4EE3colEm(ptr noundef nonnull align 4 dereferenceable(64) %61, i64 noundef %443) #8
  %445 = load i64, ptr %63, align 8, !tbaa !11
  %446 = add i64 %445, 1
  store i64 %446, ptr %63, align 8, !tbaa !11
  %447 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %444, i64 noundef %445) #8
  store float %442, ptr %447, align 4, !tbaa !17
  %448 = load i64, ptr %63, align 8, !tbaa !11
  %449 = icmp eq i64 %448, 4
  br i1 %449, label %450, label %453

450:                                              ; preds = %440
  store i64 0, ptr %63, align 8, !tbaa !11
  %451 = load i64, ptr %62, align 8, !tbaa !11
  %452 = add i64 %451, 1
  store i64 %452, ptr %62, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %450, %440
  store i32 0, ptr %11, align 4
  br label %454

454:                                              ; preds = %453, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  %455 = load i32, ptr %11, align 4
  switch i32 %455, label %457 [
    i32 0, label %456
  ]

456:                                              ; preds = %454
  store i32 0, ptr %11, align 4
  br label %457

457:                                              ; preds = %456, %454
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #8
  %458 = load i32, ptr %11, align 4
  switch i32 %458, label %462 [
    i32 0, label %459
  ]

459:                                              ; preds = %457
  br label %460

460:                                              ; preds = %459
  %461 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %65) #8
  br label %425

462:                                              ; preds = %457, %427
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %463

463:                                              ; preds = %462
  %464 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 5
  %465 = load i64, ptr %464, align 8, !tbaa !19
  %466 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %465, i64 noundef 32)
          to label %467 unwind label %478

467:                                              ; preds = %463
  br i1 %466, label %468, label %486

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 40, ptr %71) #8
  %469 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 0
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %469, float noundef 0.000000e+00) #8
  %470 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 1
  call void @_ZN8fastgltf4math4quatIfEC2IJffffETnNSt9enable_ifIXeqsZT_Li4EEbE4typeELb1EEEDpT_(ptr noundef nonnull align 4 dereferenceable(16) %470, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00) #8
  %471 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 2
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %471, float noundef 1.000000e+00) #8
  call void @_ZN8fastgltf4math3matIfLm4ELm4EEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %72, ptr noundef nonnull align 4 dereferenceable(64) %61) #8
  %472 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 2
  %473 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 1
  %474 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %71, i32 0, i32 0
  invoke void @_ZN8fastgltf4math24decomposeTransformMatrixENS0_3matIfLm4ELm4EEERNS0_3vecIfLm3EEERNS0_4quatIfEES5_(ptr noundef %72, ptr noundef nonnull align 4 dereferenceable(12) %472, ptr noundef nonnull align 4 dereferenceable(16) %473, ptr noundef nonnull align 4 dereferenceable(12) %474)
          to label %475 unwind label %482

475:                                              ; preds = %468
  %476 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 6
  %477 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %476, ptr noundef nonnull align 4 dereferenceable(40) %71) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #8
  br label %489

478:                                              ; preds = %463
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %37, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %38, align 4
  br label %490

482:                                              ; preds = %468
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %37, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #8
  br label %490

486:                                              ; preds = %467
  %487 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 6
  %488 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS4_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %487, ptr noundef nonnull align 4 dereferenceable(64) %61) #8
  br label %489

489:                                              ; preds = %486, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %61) #8
  br label %705

490:                                              ; preds = %482, %478
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %61) #8
  br label %894

491:                                              ; preds = %405
  %492 = load i32, ptr %58, align 4, !tbaa !9
  %493 = icmp eq i32 %492, 20
  br i1 %493, label %494, label %704

494:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 40, ptr %73) #8
  %495 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 0
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %495, float noundef 0.000000e+00) #8
  %496 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 1
  call void @_ZN8fastgltf4math4quatIfEC2IJffffETnNSt9enable_ifIXeqsZT_Li4EEbE4typeELb1EEEDpT_(ptr noundef nonnull align 4 dereferenceable(16) %496, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00) #8
  %497 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 2
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %497, float noundef 1.000000e+00) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %76) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %76, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.3) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %75, ptr noundef nonnull align 8 dereferenceable(20) %76) #8
  %498 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %75, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #8
  store i32 %498, ptr %74, align 4, !tbaa !9
  %499 = load i32, ptr %74, align 4, !tbaa !9
  %500 = icmp eq i32 %499, 0
  %501 = call i1 @llvm.expect.i1(i1 %500, i1 true)
  br i1 %501, label %502, label %555

502:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #8
  store i32 0, ptr %77, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  store ptr %32, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #8
  %503 = load ptr, ptr %78, align 8, !tbaa !5
  %504 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %503) #8
  %505 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %79, i32 0, i32 0
  %506 = getelementptr inbounds { ptr, i64 }, ptr %505, i32 0, i32 0
  %507 = extractvalue { ptr, i64 } %504, 0
  store ptr %507, ptr %506, align 8
  %508 = getelementptr inbounds { ptr, i64 }, ptr %505, i32 0, i32 1
  %509 = extractvalue { ptr, i64 } %504, 1
  store i64 %509, ptr %508, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #8
  %510 = load ptr, ptr %78, align 8, !tbaa !5
  %511 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %510) #8
  %512 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %80, i32 0, i32 0
  %513 = getelementptr inbounds { ptr, i64 }, ptr %512, i32 0, i32 0
  %514 = extractvalue { ptr, i64 } %511, 0
  store ptr %514, ptr %513, align 8
  %515 = getelementptr inbounds { ptr, i64 }, ptr %512, i32 0, i32 1
  %516 = extractvalue { ptr, i64 } %511, 1
  store i64 %516, ptr %515, align 8
  br label %517

517:                                              ; preds = %547, %502
  %518 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 8 dereferenceable(16) %80) #8
  br i1 %518, label %520, label %519

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

520:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #8
  %521 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  %522 = getelementptr inbounds %"class.simdjson::dom::element", ptr %81, i32 0, i32 0
  %523 = getelementptr inbounds { ptr, i64 }, ptr %522, i32 0, i32 0
  %524 = extractvalue { ptr, i64 } %521, 0
  store ptr %524, ptr %523, align 8
  %525 = getelementptr inbounds { ptr, i64 }, ptr %522, i32 0, i32 1
  %526 = extractvalue { ptr, i64 } %521, 1
  store i64 %526, ptr %525, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #8
  %527 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %81) #8
  store { double, i32 } %527, ptr %84, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %84, i64 12, i1 false)
  %528 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %83, ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %529 = icmp ne i32 %528, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #8
  %530 = call i1 @llvm.expect.i1(i1 %529, i1 false)
  br i1 %530, label %531, label %532

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

532:                                              ; preds = %520
  %533 = load double, ptr %82, align 8, !tbaa !15
  %534 = fptrunc double %533 to float
  %535 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 2
  %536 = load i32, ptr %77, align 4, !tbaa !50
  %537 = zext i32 %536 to i64
  %538 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %535, i64 noundef %537) #8
  store float %534, ptr %538, align 4, !tbaa !17
  %539 = load i32, ptr %77, align 4, !tbaa !50
  %540 = add i32 %539, 1
  store i32 %540, ptr %77, align 4, !tbaa !50
  store i32 0, ptr %11, align 4
  br label %541

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

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

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

546:                                              ; preds = %544
  br label %547

547:                                              ; preds = %546
  %548 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  br label %517

549:                                              ; preds = %544, %519
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  %550 = load i32, ptr %11, align 4
  switch i32 %550, label %552 [
    i32 10, label %551
  ]

551:                                              ; preds = %549
  store i32 0, ptr %11, align 4
  br label %552

552:                                              ; preds = %551, %549
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #8
  %553 = load i32, ptr %11, align 4
  switch i32 %553, label %562 [
    i32 0, label %554
  ]

554:                                              ; preds = %552
  br label %561

555:                                              ; preds = %494
  %556 = load i32, ptr %74, align 4, !tbaa !9
  %557 = icmp ne i32 %556, 20
  %558 = call i1 @llvm.expect.i1(i1 %557, i1 false)
  br i1 %558, label %559, label %560

559:                                              ; preds = %555
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %562

560:                                              ; preds = %555
  br label %561

561:                                              ; preds = %560, %554
  store i32 0, ptr %11, align 4
  br label %562

562:                                              ; preds = %561, %559, %552
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  %563 = load i32, ptr %11, align 4
  switch i32 %563, label %701 [
    i32 0, label %564
  ]

564:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %87) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.55) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %86, ptr noundef nonnull align 8 dereferenceable(20) %87) #8
  %565 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %86, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %86) #8
  store i32 %565, ptr %85, align 4, !tbaa !9
  %566 = load i32, ptr %85, align 4, !tbaa !9
  %567 = icmp eq i32 %566, 0
  %568 = call i1 @llvm.expect.i1(i1 %567, i1 true)
  br i1 %568, label %569, label %622

569:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #8
  store i32 0, ptr %88, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  store ptr %32, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #8
  %570 = load ptr, ptr %89, align 8, !tbaa !5
  %571 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %570) #8
  %572 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %90, i32 0, i32 0
  %573 = getelementptr inbounds { ptr, i64 }, ptr %572, i32 0, i32 0
  %574 = extractvalue { ptr, i64 } %571, 0
  store ptr %574, ptr %573, align 8
  %575 = getelementptr inbounds { ptr, i64 }, ptr %572, i32 0, i32 1
  %576 = extractvalue { ptr, i64 } %571, 1
  store i64 %576, ptr %575, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #8
  %577 = load ptr, ptr %89, align 8, !tbaa !5
  %578 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %577) #8
  %579 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %91, i32 0, i32 0
  %580 = getelementptr inbounds { ptr, i64 }, ptr %579, i32 0, i32 0
  %581 = extractvalue { ptr, i64 } %578, 0
  store ptr %581, ptr %580, align 8
  %582 = getelementptr inbounds { ptr, i64 }, ptr %579, i32 0, i32 1
  %583 = extractvalue { ptr, i64 } %578, 1
  store i64 %583, ptr %582, align 8
  br label %584

584:                                              ; preds = %614, %569
  %585 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  br i1 %585, label %587, label %586

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

587:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #8
  %588 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  %589 = getelementptr inbounds %"class.simdjson::dom::element", ptr %92, i32 0, i32 0
  %590 = getelementptr inbounds { ptr, i64 }, ptr %589, i32 0, i32 0
  %591 = extractvalue { ptr, i64 } %588, 0
  store ptr %591, ptr %590, align 8
  %592 = getelementptr inbounds { ptr, i64 }, ptr %589, i32 0, i32 1
  %593 = extractvalue { ptr, i64 } %588, 1
  store i64 %593, ptr %592, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #8
  %594 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %92) #8
  store { double, i32 } %594, ptr %95, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %94, ptr align 8 %95, i64 12, i1 false)
  %595 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %94, ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  %596 = icmp ne i32 %595, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  %597 = call i1 @llvm.expect.i1(i1 %596, i1 false)
  br i1 %597, label %598, label %599

598:                                              ; preds = %587
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %608

599:                                              ; preds = %587
  %600 = load double, ptr %93, align 8, !tbaa !15
  %601 = fptrunc double %600 to float
  %602 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 0
  %603 = load i32, ptr %88, align 4, !tbaa !50
  %604 = zext i32 %603 to i64
  %605 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %602, i64 noundef %604) #8
  store float %601, ptr %605, align 4, !tbaa !17
  %606 = load i32, ptr %88, align 4, !tbaa !50
  %607 = add i32 %606, 1
  store i32 %607, ptr %88, align 4, !tbaa !50
  store i32 0, ptr %11, align 4
  br label %608

608:                                              ; preds = %599, %598
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  %609 = load i32, ptr %11, align 4
  switch i32 %609, label %611 [
    i32 0, label %610
  ]

610:                                              ; preds = %608
  store i32 0, ptr %11, align 4
  br label %611

611:                                              ; preds = %610, %608
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #8
  %612 = load i32, ptr %11, align 4
  switch i32 %612, label %616 [
    i32 0, label %613
  ]

613:                                              ; preds = %611
  br label %614

614:                                              ; preds = %613
  %615 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %90) #8
  br label %584

616:                                              ; preds = %611, %586
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  %617 = load i32, ptr %11, align 4
  switch i32 %617, label %619 [
    i32 12, label %618
  ]

618:                                              ; preds = %616
  store i32 0, ptr %11, align 4
  br label %619

619:                                              ; preds = %618, %616
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #8
  %620 = load i32, ptr %11, align 4
  switch i32 %620, label %629 [
    i32 0, label %621
  ]

621:                                              ; preds = %619
  br label %628

622:                                              ; preds = %564
  %623 = load i32, ptr %85, align 4, !tbaa !9
  %624 = icmp ne i32 %623, 20
  %625 = call i1 @llvm.expect.i1(i1 %624, i1 false)
  br i1 %625, label %626, label %627

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

627:                                              ; preds = %622
  br label %628

628:                                              ; preds = %627, %621
  store i32 0, ptr %11, align 4
  br label %629

629:                                              ; preds = %628, %626, %619
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  %630 = load i32, ptr %11, align 4
  switch i32 %630, label %701 [
    i32 0, label %631
  ]

631:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %98, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.6) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %97, ptr noundef nonnull align 8 dereferenceable(20) %98) #8
  %632 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %97, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #8
  store i32 %632, ptr %96, align 4, !tbaa !9
  %633 = load i32, ptr %96, align 4, !tbaa !9
  %634 = icmp eq i32 %633, 0
  %635 = call i1 @llvm.expect.i1(i1 %634, i1 true)
  br i1 %635, label %636, label %689

636:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #8
  store i32 0, ptr %99, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  store ptr %32, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #8
  %637 = load ptr, ptr %100, align 8, !tbaa !5
  %638 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %637) #8
  %639 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %101, i32 0, i32 0
  %640 = getelementptr inbounds { ptr, i64 }, ptr %639, i32 0, i32 0
  %641 = extractvalue { ptr, i64 } %638, 0
  store ptr %641, ptr %640, align 8
  %642 = getelementptr inbounds { ptr, i64 }, ptr %639, i32 0, i32 1
  %643 = extractvalue { ptr, i64 } %638, 1
  store i64 %643, ptr %642, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #8
  %644 = load ptr, ptr %100, align 8, !tbaa !5
  %645 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %644) #8
  %646 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %102, i32 0, i32 0
  %647 = getelementptr inbounds { ptr, i64 }, ptr %646, i32 0, i32 0
  %648 = extractvalue { ptr, i64 } %645, 0
  store ptr %648, ptr %647, align 8
  %649 = getelementptr inbounds { ptr, i64 }, ptr %646, i32 0, i32 1
  %650 = extractvalue { ptr, i64 } %645, 1
  store i64 %650, ptr %649, align 8
  br label %651

651:                                              ; preds = %681, %636
  %652 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 8 dereferenceable(16) %102) #8
  br i1 %652, label %654, label %653

653:                                              ; preds = %651
  store i32 14, ptr %11, align 4
  br label %683

654:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #8
  %655 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  %656 = getelementptr inbounds %"class.simdjson::dom::element", ptr %103, i32 0, i32 0
  %657 = getelementptr inbounds { ptr, i64 }, ptr %656, i32 0, i32 0
  %658 = extractvalue { ptr, i64 } %655, 0
  store ptr %658, ptr %657, align 8
  %659 = getelementptr inbounds { ptr, i64 }, ptr %656, i32 0, i32 1
  %660 = extractvalue { ptr, i64 } %655, 1
  store i64 %660, ptr %659, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #8
  %661 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %103) #8
  store { double, i32 } %661, ptr %106, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %106, i64 12, i1 false)
  %662 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %105, ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  %663 = icmp ne i32 %662, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #8
  %664 = call i1 @llvm.expect.i1(i1 %663, i1 false)
  br i1 %664, label %665, label %666

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

666:                                              ; preds = %654
  %667 = load double, ptr %104, align 8, !tbaa !15
  %668 = fptrunc double %667 to float
  %669 = getelementptr inbounds %"struct.fastgltf::TRS", ptr %73, i32 0, i32 1
  %670 = load i32, ptr %99, align 4, !tbaa !50
  %671 = zext i32 %670 to i64
  %672 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math4quatIfEixEm(ptr noundef nonnull align 4 dereferenceable(16) %669, i64 noundef %671) #8
  store float %668, ptr %672, align 4, !tbaa !17
  %673 = load i32, ptr %99, align 4, !tbaa !50
  %674 = add i32 %673, 1
  store i32 %674, ptr %99, align 4, !tbaa !50
  store i32 0, ptr %11, align 4
  br label %675

675:                                              ; preds = %666, %665
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  %676 = load i32, ptr %11, align 4
  switch i32 %676, label %678 [
    i32 0, label %677
  ]

677:                                              ; preds = %675
  store i32 0, ptr %11, align 4
  br label %678

678:                                              ; preds = %677, %675
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  %679 = load i32, ptr %11, align 4
  switch i32 %679, label %683 [
    i32 0, label %680
  ]

680:                                              ; preds = %678
  br label %681

681:                                              ; preds = %680
  %682 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  br label %651

683:                                              ; preds = %678, %653
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  %684 = load i32, ptr %11, align 4
  switch i32 %684, label %686 [
    i32 14, label %685
  ]

685:                                              ; preds = %683
  store i32 0, ptr %11, align 4
  br label %686

686:                                              ; preds = %685, %683
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  %687 = load i32, ptr %11, align 4
  switch i32 %687, label %696 [
    i32 0, label %688
  ]

688:                                              ; preds = %686
  br label %695

689:                                              ; preds = %631
  %690 = load i32, ptr %96, align 4, !tbaa !9
  %691 = icmp ne i32 %690, 20
  %692 = call i1 @llvm.expect.i1(i1 %691, i1 false)
  br i1 %692, label %693, label %694

693:                                              ; preds = %689
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %696

694:                                              ; preds = %689
  br label %695

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

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

698:                                              ; preds = %696
  %699 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 6
  %700 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %699, ptr noundef nonnull align 4 dereferenceable(40) %73) #8
  store i32 0, ptr %11, align 4
  br label %701

701:                                              ; preds = %698, %696, %629, %562
  call void @llvm.lifetime.end.p0(i64 40, ptr %73) #8
  %702 = load i32, ptr %11, align 4
  switch i32 %702, label %876 [
    i32 0, label %703
  ]

703:                                              ; preds = %701
  br label %704

704:                                              ; preds = %703, %491
  br label %705

705:                                              ; preds = %704, %489
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %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) %14, ptr noundef @.str.5) #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
  %706 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %108, ptr noundef nonnull align 8 dereferenceable(16) %107) #8
  %707 = icmp eq i32 %706, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #8
  %708 = call i1 @llvm.expect.i1(i1 %707, i1 true)
  br i1 %708, label %709, label %815

709:                                              ; preds = %705
  %710 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 1
  %711 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %710, i32 0, i32 5
  %712 = load i64, ptr %711, align 8, !tbaa !52
  %713 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %712, i64 noundef 64)
          to label %714 unwind label %733

714:                                              ; preds = %709
  br i1 %713, label %715, label %763

715:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #8
  call void @_ZN8simdjson3dom6objectC2Ev(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 @llvm.memcpy.p0.p0.i64(ptr align 8 %113, ptr align 8 @_ZN8fastgltf10extensionsL19KHR_lights_punctualE, i64 16, i1 false), !tbaa.struct !53
  %716 = getelementptr inbounds { i64, ptr }, ptr %113, i32 0, i32 0
  %717 = load i64, ptr %716, align 8
  %718 = getelementptr inbounds { i64, ptr }, ptr %113, i32 0, i32 1
  %719 = load ptr, ptr %718, align 8
  call void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %107, i64 %717, ptr %719) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %111, ptr noundef nonnull align 8 dereferenceable(20) %112) #8
  %720 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %111, ptr noundef nonnull align 8 dereferenceable(16) %110) #8
  %721 = icmp eq i32 %720, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #8
  %722 = call i1 @llvm.expect.i1(i1 %721, i1 true)
  br i1 %722, label %723, label %754

723:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %117) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %117, ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef @.str.147) #8
  %724 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %117) #8
  store { i64, i32 } %724, ptr %118, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %116, ptr align 8 %118, i64 12, i1 false)
  %725 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %116, ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #8
  store i32 %725, ptr %115, align 4, !tbaa !9
  %726 = load i32, ptr %115, align 4, !tbaa !9
  %727 = icmp eq i32 %726, 0
  %728 = call i1 @llvm.expect.i1(i1 %727, i1 true)
  br i1 %728, label %729, label %737

729:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %730 = load i64, ptr %114, align 8, !tbaa !11
  store i64 %730, ptr %119, align 8, !tbaa !11
  %731 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 3
  %732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %731, ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br label %747

733:                                              ; preds = %763, %709
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %37, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %38, align 4
  br label %893

737:                                              ; preds = %723
  %738 = load i32, ptr %115, align 4, !tbaa !9
  %739 = icmp eq i32 %738, 20
  br i1 %739, label %743, label %740

740:                                              ; preds = %737
  %741 = load i32, ptr %115, align 4, !tbaa !9
  %742 = icmp eq i32 %741, 17
  br label %743

743:                                              ; preds = %740, %737
  %744 = phi i1 [ true, %737 ], [ %742, %740 ]
  %745 = zext i1 %744 to i64
  %746 = select i1 %744, i64 5, i64 4
  store i64 %746, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %748

747:                                              ; preds = %729
  store i32 0, ptr %11, align 4
  br label %748

748:                                              ; preds = %747, %743
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  %749 = load i32, ptr %11, align 4
  switch i32 %749, label %751 [
    i32 0, label %750
  ]

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

751:                                              ; preds = %750, %748
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  %752 = load i32, ptr %11, align 4
  switch i32 %752, label %760 [
    i32 0, label %753
  ]

753:                                              ; preds = %751
  br label %759

754:                                              ; preds = %715
  %755 = load i32, ptr %58, align 4, !tbaa !9
  %756 = icmp ne i32 %755, 20
  br i1 %756, label %757, label %758

757:                                              ; preds = %754
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %760

758:                                              ; preds = %754
  br label %759

759:                                              ; preds = %758, %753
  store i32 0, ptr %11, align 4
  br label %760

760:                                              ; preds = %759, %757, %751
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #8
  %761 = load i32, ptr %11, align 4
  switch i32 %761, label %875 [
    i32 0, label %762
  ]

762:                                              ; preds = %760
  br label %763

763:                                              ; preds = %762, %714
  %764 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 1
  %765 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %764, i32 0, i32 5
  %766 = load i64, ptr %765, align 8, !tbaa !52
  %767 = invoke noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %766, i64 noundef 524288)
          to label %768 unwind label %733

768:                                              ; preds = %763
  br i1 %767, label %769, label %814

769:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %122) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %123) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %124, ptr align 8 @_ZN8fastgltf10extensionsL23EXT_mesh_gpu_instancingE, i64 16, i1 false), !tbaa.struct !53
  %770 = getelementptr inbounds { i64, ptr }, ptr %124, i32 0, i32 0
  %771 = load i64, ptr %770, align 8
  %772 = getelementptr inbounds { i64, ptr }, ptr %124, i32 0, i32 1
  %773 = load ptr, ptr %772, align 8
  call void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %123, ptr noundef nonnull align 8 dereferenceable(16) %107, i64 %771, ptr %773) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %122, ptr noundef nonnull align 8 dereferenceable(20) %123) #8
  %774 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %122, ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %122) #8
  store i32 %774, ptr %121, align 4, !tbaa !9
  %775 = load i32, ptr %121, align 4, !tbaa !9
  %776 = icmp eq i32 %775, 0
  %777 = call i1 @llvm.expect.i1(i1 %776, i1 true)
  br i1 %777, label %778, label %802

778:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %126) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %127) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %127, ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef @.str.138) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %126, ptr noundef nonnull align 8 dereferenceable(20) %127) #8
  %779 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %126, ptr noundef nonnull align 8 dereferenceable(16) %125) #8
  %780 = icmp ne i32 %779, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %126) #8
  %781 = call i1 @llvm.expect.i1(i1 %780, i1 false)
  br i1 %781, label %782, label %783

782:                                              ; preds = %778
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %799

783:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  %784 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 7
  %785 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesISt6vectorINS_9AttributeENSt3pmr21polymorphic_allocatorIS3_EEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %138, ptr noundef nonnull align 8 dereferenceable(16) %125, ptr noundef nonnull align 8 dereferenceable(32) %784)
          to label %786 unwind label %791

786:                                              ; preds = %783
  store i64 %785, ptr %128, align 8, !tbaa !13
  %787 = load i64, ptr %128, align 8, !tbaa !13
  %788 = icmp ne i64 %787, 0
  br i1 %788, label %789, label %795

789:                                              ; preds = %786
  %790 = load i64, ptr %128, align 8, !tbaa !13
  store i64 %790, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %796

791:                                              ; preds = %783
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %37, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #8
  br label %893

795:                                              ; preds = %786
  store i32 0, ptr %11, align 4
  br label %796

796:                                              ; preds = %795, %789
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  %797 = load i32, ptr %11, align 4
  switch i32 %797, label %799 [
    i32 0, label %798
  ]

798:                                              ; preds = %796
  store i32 0, ptr %11, align 4
  br label %799

799:                                              ; preds = %798, %796, %782
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #8
  %800 = load i32, ptr %11, align 4
  switch i32 %800, label %808 [
    i32 0, label %801
  ]

801:                                              ; preds = %799
  br label %807

802:                                              ; preds = %769
  %803 = load i32, ptr %121, align 4, !tbaa !9
  %804 = icmp ne i32 %803, 20
  br i1 %804, label %805, label %806

805:                                              ; preds = %802
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %808

806:                                              ; preds = %802
  br label %807

807:                                              ; preds = %806, %801
  store i32 0, ptr %11, align 4
  br label %808

808:                                              ; preds = %807, %805, %799
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #8
  %809 = load i32, ptr %11, align 4
  switch i32 %809, label %811 [
    i32 0, label %810
  ]

810:                                              ; preds = %808
  store i32 0, ptr %11, align 4
  br label %811

811:                                              ; preds = %810, %808
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #8
  %812 = load i32, ptr %11, align 4
  switch i32 %812, label %875 [
    i32 0, label %813
  ]

813:                                              ; preds = %811
  br label %814

814:                                              ; preds = %813, %768
  br label %815

815:                                              ; preds = %814, %705
  %816 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 1
  %817 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %816, i32 0, i32 3
  %818 = load ptr, ptr %817, align 8, !tbaa !54
  %819 = icmp ne ptr %818, null
  br i1 %819, label %820, label %851

820:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %131) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %132) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %132, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.48) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %131, ptr noundef nonnull align 8 dereferenceable(20) %132) #8
  %821 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %131, ptr noundef nonnull align 8 dereferenceable(16) %129) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %131) #8
  store i32 %821, ptr %130, align 4, !tbaa !9
  %822 = load i32, ptr %130, align 4, !tbaa !9
  %823 = icmp eq i32 %822, 0
  br i1 %823, label %824, label %839

824:                                              ; preds = %820
  %825 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 1
  %826 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %825, i32 0, i32 3
  %827 = load ptr, ptr %826, align 8, !tbaa !54
  %828 = load ptr, ptr %7, align 8, !tbaa !5
  %829 = getelementptr inbounds %"class.fastgltf::Asset", ptr %828, i32 0, i32 14
  %830 = call noundef i64 @_ZNKSt6vectorIN8fastgltf4NodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %829) #8
  %831 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 1
  %832 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %831, i32 0, i32 4
  %833 = load ptr, ptr %832, align 8, !tbaa !55
  invoke void %827(ptr noundef %129, i64 noundef %830, i32 noundef 2048, ptr noundef %833)
          to label %834 unwind label %835

834:                                              ; preds = %824
  br label %844

835:                                              ; preds = %824
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %37, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #8
  br label %893

839:                                              ; preds = %820
  %840 = load i32, ptr %130, align 4, !tbaa !9
  %841 = icmp ne i32 %840, 20
  br i1 %841, label %842, label %843

842:                                              ; preds = %839
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %845

843:                                              ; preds = %839
  br label %844

844:                                              ; preds = %843, %834
  store i32 0, ptr %11, align 4
  br label %845

845:                                              ; preds = %844, %842
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #8
  %846 = load i32, ptr %11, align 4
  switch i32 %846, label %848 [
    i32 0, label %847
  ]

847:                                              ; preds = %845
  store i32 0, ptr %11, align 4
  br label %848

848:                                              ; preds = %847, %845
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #8
  %849 = load i32, ptr %11, align 4
  switch i32 %849, label %875 [
    i32 0, label %850
  ]

850:                                              ; preds = %848
  br label %851

851:                                              ; preds = %850, %815
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %134) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %135) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %135, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef @.str.49) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %134, ptr noundef nonnull align 8 dereferenceable(20) %135) #8
  %852 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %134, ptr noundef nonnull align 8 dereferenceable(16) %133) #8
  %853 = icmp eq i32 %852, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %134) #8
  br i1 %853, label %854, label %870

854:                                              ; preds = %851
  call void @llvm.lifetime.start.p0(i64 40, ptr %136) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #8
  %855 = getelementptr inbounds %"class.fastgltf::Parser", ptr %138, i32 0, i32 3
  %856 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %855) #8
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef %856) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %136, ptr noundef nonnull align 8 dereferenceable(16) %133, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %857 unwind label %861

857:                                              ; preds = %854
  %858 = getelementptr inbounds %"struct.fastgltf::Node", ptr %13, i32 0, i32 8
  %859 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %858, ptr noundef nonnull align 8 dereferenceable(40) %136)
          to label %860 unwind label %865

860:                                              ; preds = %857
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %136) #8
  br label %870

861:                                              ; preds = %854
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %37, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %38, align 4
  br label %869

865:                                              ; preds = %857
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %37, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %38, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #8
  br label %869

869:                                              ; preds = %865, %861
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %136) #8
  br label %892

870:                                              ; preds = %860, %851
  %871 = load ptr, ptr %7, align 8, !tbaa !5
  %872 = getelementptr inbounds %"class.fastgltf::Asset", ptr %871, i32 0, i32 14
  %873 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZNSt6vectorIN8fastgltf4NodeESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %872, ptr noundef nonnull align 8 dereferenceable(240) %13)
          to label %874 unwind label %888

874:                                              ; preds = %870
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  store i32 0, ptr %11, align 4
  br label %875

875:                                              ; preds = %874, %848, %811, %760
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #8
  br label %876

876:                                              ; preds = %875, %701
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %877

877:                                              ; preds = %876, %403, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %878

878:                                              ; preds = %877, %316, %310
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  br label %879

879:                                              ; preds = %878, %233, %215, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %880

880:                                              ; preds = %879, %180
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %13) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %13) #8
  %881 = load i32, ptr %11, align 4
  switch i32 %881, label %883 [
    i32 0, label %882
  ]

882:                                              ; preds = %880
  store i32 0, ptr %11, align 4
  br label %883

883:                                              ; preds = %882, %880
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  %884 = load i32, ptr %11, align 4
  switch i32 %884, label %897 [
    i32 0, label %885
  ]

885:                                              ; preds = %883
  br label %886

886:                                              ; preds = %885
  %887 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br label %158

888:                                              ; preds = %870
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %37, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %38, align 4
  br label %892

892:                                              ; preds = %888, %869
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  br label %893

893:                                              ; preds = %892, %835, %791, %733
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #8
  br label %894

894:                                              ; preds = %893, %490
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %895

895:                                              ; preds = %894, %396, %366, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %896

896:                                              ; preds = %895, %306, %280, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %13) #8
  call void @llvm.lifetime.end.p0(i64 240, 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 %902

897:                                              ; preds = %883, %160
  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
  %898 = load i32, ptr %11, align 4
  switch i32 %898, label %907 [
    i32 2, label %899
    i32 1, label %900
  ]

899:                                              ; preds = %897
  store i64 0, ptr %4, align 8
  br label %900

900:                                              ; preds = %899, %897
  %901 = load i64, ptr %4, align 8
  ret i64 %901

902:                                              ; preds = %896
  %903 = load ptr, ptr %37, align 8
  %904 = load i32, ptr %38, align 4
  %905 = insertvalue { ptr, i32 } poison, ptr %903, 0
  %906 = insertvalue { ptr, i32 } %905, i32 %904, 1
  resume { ptr, i32 } %906

907:                                              ; preds = %897
  unreachable
}

; 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12), float noundef) unnamed_addr #2 align 2

; 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 nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16), i64 noundef) #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_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 void @_ZNSt6vectorIN8fastgltf4NodeESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3pmr21polymorphic_allocatorImEC2EPNS_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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2EmRKS2_(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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEaSEOS3_(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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math3matIfLm4ELm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(64), float noundef) unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZN8fastgltf4math3matIfLm4ELm4EE3colEm(ptr noundef nonnull align 4 dereferenceable(64), i64 noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math24decomposeTransformMatrixENS0_3matIfLm4ELm4EEERNS0_3vecIfLm3EEERNS0_4quatIfEES5_(ptr noundef, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(12)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math3matIfLm4ELm4EEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65), ptr noundef nonnull align 4 dereferenceable(40)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS4_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65), ptr noundef nonnull align 4 dereferenceable(64)) #2 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240)) 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 = !{!"_ZTSN8simdjson10error_codeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN8fastgltf5ErrorE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"float", !7, i64 0}
!19 = !{!20, !49, i64 304}
!20 = !{!"_ZTSN8fastgltf6ParserE", !21, i64 0, !27, i64 8, !29, i64 56, !36, i64 248, !39, i64 264, !49, i64 304}
!21 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !22, i64 0}
!22 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !25, i64 0}
!25 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !6, i64 0}
!27 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !28, i64 40}
!28 = !{!"_ZTSN8fastgltf10ExtensionsE", !7, i64 0}
!29 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !30, i64 0}
!30 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !31, i64 0}
!31 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !32, i64 0}
!32 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !33, i64 0}
!33 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !34, i64 0}
!34 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !35, i64 0}
!35 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !7, i64 0, !7, i64 184}
!36 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !37, i64 0}
!37 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !38, i64 8}
!38 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!39 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !40, i64 0, !42, i64 32}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !41, i64 0, !12, i64 8, !7, i64 16}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!42 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !43, i64 0}
!43 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !44, i64 0}
!44 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !45, i64 0}
!45 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !46, i64 0}
!46 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !47, i64 0}
!47 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !48, i64 0}
!48 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !6, i64 0}
!49 = !{!"_ZTSN8fastgltf7OptionsE", !7, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"int", !7, i64 0}
!52 = !{!20, !28, i64 48}
!53 = !{i64 0, i64 8, !11, i64 8, i64 8, !5}
!54 = !{!20, !6, i64 32}
!55 = !{!20, !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::Node" = type { %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.376", %"class.std::vector.169", %"class.std::variant.379", %"class.std::vector", %"class.std::__cxx11::basic_string.74" }
%"class.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"class.std::vector.376" = type { %"struct.std::_Vector_base.377" }
%"struct.std::_Vector_base.377" = type { %"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.378", %"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.378" = type { ptr }
%"struct.std::_Vector_base<unsigned long, std::pmr::polymorphic_allocator<unsigned long>>::_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::variant.379" = type { %"struct.std::__detail::__variant::_Variant_base.base.396", [3 x i8] }
%"struct.std::__detail::__variant::_Variant_base.base.396" = type { %"struct.std::__detail::__variant::_Move_assign_base.base.395" }
%"struct.std::__detail::__variant::_Move_assign_base.base.395" = type { %"struct.std::__detail::__variant::_Copy_assign_base.base.394" }
%"struct.std::__detail::__variant::_Copy_assign_base.base.394" = type { %"struct.std::__detail::__variant::_Move_ctor_base.base.393" }
%"struct.std::__detail::__variant::_Move_ctor_base.base.393" = type { %"struct.std::__detail::__variant::_Copy_ctor_base.base.392" }
%"struct.std::__detail::__variant::_Copy_ctor_base.base.392" = type { %"struct.std::__detail::__variant::_Variant_storage.base.391" }
%"struct.std::__detail::__variant::_Variant_storage.base.391" = type <{ %"union.std::__detail::__variant::_Variadic_union.386", i8 }>
%"union.std::__detail::__variant::_Variadic_union.386" = type { %"union.std::__detail::__variant::_Variadic_union.388" }
%"union.std::__detail::__variant::_Variadic_union.388" = type { %"struct.std::__detail::__variant::_Uninitialized.389" }
%"struct.std::__detail::__variant::_Uninitialized.389" = type { %"class.fastgltf::math::mat" }
%"class.fastgltf::math::mat" = type { %"struct.std::array.390" }
%"struct.std::array.390" = type { [4 x %"class.fastgltf::math::vec.267"] }
%"class.fastgltf::math::vec.267" = type { %"struct.std::array.268" }
%"struct.std::array.268" = type { [4 x float] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator", %"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator" = type { ptr }
%"struct.std::_Vector_base<fastgltf::Attribute, std::pmr::polymorphic_allocator<fastgltf::Attribute>>::_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.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 }>
%"struct.fastgltf::TRS" = type { %"class.fastgltf::math::vec.264", %"class.fastgltf::math::quat", %"class.fastgltf::math::vec.264" }
%"class.fastgltf::math::quat" = type { %"struct.std::array.268" }
%"class.fastgltf::math::vec.264" = type { %"struct.std::array.265" }
%"struct.std::array.265" = type { [3 x float] }

@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 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.55 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [7 x i8], align 1
@_ZN8fastgltf10extensionsL19KHR_lights_punctualE = external hidden local_unnamed_addr constant %"class.std::basic_string_view", align 8
@.str.147 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZN8fastgltf10extensionsL23EXT_mesh_gpu_instancingE = external hidden local_unnamed_addr constant %"class.std::basic_string_view", align 8

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: 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: 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 uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser15parseAttributesISt6vectorINS_9AttributeENSt3pmr21polymorphic_allocatorIS3_EEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 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 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 @_ZNKSt6vectorIN8fastgltf4NodeESaIS1_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 noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef, i64 noundef) local_unnamed_addr #1

; 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 @_ZN8fastgltf6Parser10parseNodesERN8simdjson3dom5arrayERNS_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 %"struct.fastgltf::Node", align 8
  %8 = alloca %"class.simdjson::dom::object", align 8
  %9 = alloca %"struct.simdjson::simdjson_result", align 8
  %10 = alloca i64, align 8
  %11 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %12 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %13 = alloca i64, align 8
  %14 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %15 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %16 = alloca i64, align 8
  %17 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %18 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %19 = alloca i64, align 8
  %20 = alloca %"class.simdjson::dom::array", align 8
  %21 = alloca %"class.std::basic_string_view", align 8
  %22 = alloca %"class.std::vector.376", align 8
  %23 = alloca %"class.std::pmr::polymorphic_allocator.378", 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.simdjson::simdjson_result.7", align 8
  %28 = alloca i64, align 8
  %29 = alloca %"class.std::basic_string_view", align 8
  %30 = alloca %"class.std::vector.169", align 8
  %31 = alloca %"class.std::pmr::polymorphic_allocator.171", align 8
  %32 = alloca %"class.simdjson::dom::array::iterator", align 8
  %33 = alloca %"class.simdjson::dom::array::iterator", align 8
  %34 = alloca %"class.simdjson::dom::element", align 8
  %35 = alloca double, align 8
  %36 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %37 = alloca float, align 4
  %38 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %39 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %40 = alloca %"class.fastgltf::math::mat", align 4
  %41 = alloca %"class.simdjson::dom::array::iterator", align 8
  %42 = alloca %"class.simdjson::dom::array::iterator", align 8
  %43 = alloca %"class.simdjson::dom::element", align 8
  %44 = alloca double, align 8
  %45 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %46 = alloca %"struct.fastgltf::TRS", align 4
  %47 = alloca %"class.fastgltf::math::mat", align 4
  %48 = alloca %"struct.fastgltf::TRS", align 4
  %49 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %50 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %51 = alloca %"class.simdjson::dom::array::iterator", align 8
  %52 = alloca %"class.simdjson::dom::array::iterator", align 8
  %53 = alloca %"class.simdjson::dom::element", align 8
  %54 = alloca double, align 8
  %55 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %56 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %57 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %58 = alloca %"class.simdjson::dom::array::iterator", align 8
  %59 = alloca %"class.simdjson::dom::array::iterator", align 8
  %60 = alloca %"class.simdjson::dom::element", align 8
  %61 = alloca double, align 8
  %62 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %63 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %64 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %65 = alloca %"class.simdjson::dom::array::iterator", align 8
  %66 = alloca %"class.simdjson::dom::array::iterator", align 8
  %67 = alloca %"class.simdjson::dom::element", align 8
  %68 = alloca double, align 8
  %69 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %70 = alloca %"class.simdjson::dom::object", align 8
  %71 = alloca %"struct.simdjson::simdjson_result", align 8
  %72 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %73 = alloca %"class.simdjson::dom::object", align 8
  %74 = alloca %"struct.simdjson::simdjson_result", align 8
  %75 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %76 = alloca i64, align 8
  %77 = alloca %"struct.simdjson::simdjson_result.7", align 8
  %78 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %79 = alloca i64, align 8
  %80 = alloca %"class.simdjson::dom::object", align 8
  %81 = alloca %"struct.simdjson::simdjson_result", align 8
  %82 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %83 = alloca %"class.simdjson::dom::object", align 8
  %84 = alloca %"struct.simdjson::simdjson_result", align 8
  %85 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %86 = alloca %"class.simdjson::dom::object", align 8
  %87 = alloca %"struct.simdjson::simdjson_result", align 8
  %88 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %89 = alloca %"class.std::basic_string_view", align 8
  %90 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %91 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %92 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %93 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %94 = getelementptr inbounds i8, ptr %2, i64 432
  %95 = tail call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  tail call void @_ZNSt6vectorIN8fastgltf4NodeESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %95)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #6
  %96 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %97 = extractvalue { ptr, i64 } %96, 0
  store ptr %97, ptr %4, align 8
  %98 = getelementptr inbounds i8, ptr %4, i64 8
  %99 = extractvalue { ptr, i64 } %96, 1
  store i64 %99, ptr %98, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %100 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %101 = extractvalue { ptr, i64 } %100, 0
  store ptr %101, ptr %5, align 8
  %102 = getelementptr inbounds i8, ptr %5, i64 8
  %103 = extractvalue { ptr, i64 } %100, 1
  store i64 %103, ptr %102, align 8
  %104 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %104, label %.lr.ph424, label %.loopexit402

.lr.ph424:                                        ; preds = %3
  %105 = getelementptr inbounds i8, ptr %6, i64 8
  %106 = getelementptr inbounds i8, ptr %7, i64 8
  %107 = getelementptr inbounds i8, ptr %7, i64 16
  %108 = getelementptr inbounds i8, ptr %7, i64 24
  %109 = getelementptr inbounds i8, ptr %7, i64 32
  %110 = getelementptr inbounds i8, ptr %7, i64 64
  %111 = getelementptr inbounds i8, ptr %7, i64 96
  %112 = getelementptr inbounds i8, ptr %7, i64 168
  %113 = getelementptr inbounds i8, ptr %7, i64 200
  %.sroa.2137.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.2131.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  %.sroa.2125.0..sroa_idx = getelementptr inbounds i8, ptr %17, i64 8
  %114 = getelementptr inbounds i8, ptr %21, i64 8
  %115 = getelementptr inbounds i8, ptr %0, i64 248
  %116 = getelementptr inbounds i8, ptr %24, i64 8
  %117 = getelementptr inbounds i8, ptr %25, i64 8
  %118 = getelementptr inbounds i8, ptr %26, i64 8
  %.sroa.2114.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8
  %119 = getelementptr inbounds i8, ptr %29, i64 8
  %120 = getelementptr inbounds i8, ptr %32, i64 8
  %121 = getelementptr inbounds i8, ptr %33, i64 8
  %122 = getelementptr inbounds i8, ptr %34, i64 8
  %.sroa.2106.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  %123 = getelementptr inbounds i8, ptr %48, i64 12
  %124 = getelementptr inbounds i8, ptr %48, i64 28
  %125 = getelementptr inbounds i8, ptr %51, i64 8
  %126 = getelementptr inbounds i8, ptr %52, i64 8
  %127 = getelementptr inbounds i8, ptr %53, i64 8
  %.sroa.283.0..sroa_idx = getelementptr inbounds i8, ptr %55, i64 8
  %128 = getelementptr inbounds i8, ptr %58, i64 8
  %129 = getelementptr inbounds i8, ptr %59, i64 8
  %130 = getelementptr inbounds i8, ptr %60, i64 8
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %62, i64 8
  %131 = getelementptr inbounds i8, ptr %65, i64 8
  %132 = getelementptr inbounds i8, ptr %66, i64 8
  %133 = getelementptr inbounds i8, ptr %67, i64 8
  %.sroa.264.0..sroa_idx = getelementptr inbounds i8, ptr %69, i64 8
  %134 = getelementptr inbounds i8, ptr %41, i64 8
  %135 = getelementptr inbounds i8, ptr %42, i64 8
  %136 = getelementptr inbounds i8, ptr %43, i64 8
  %.sroa.293.0..sroa_idx = getelementptr inbounds i8, ptr %45, i64 8
  %137 = getelementptr inbounds i8, ptr %0, i64 304
  %138 = getelementptr inbounds i8, ptr %46, i64 12
  %139 = getelementptr inbounds i8, ptr %46, i64 28
  %140 = getelementptr inbounds i8, ptr %0, i64 48
  %.sroa.059.0.copyload = load i64, ptr @_ZN8fastgltf10extensionsL19KHR_lights_punctualE, align 8
  %.sroa.260.0.copyload = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN8fastgltf10extensionsL19KHR_lights_punctualE, i64 8), align 8
  %.sroa.255.0..sroa_idx = getelementptr inbounds i8, ptr %77, i64 8
  %.sroa.0.0.copyload = load i64, ptr @_ZN8fastgltf10extensionsL23EXT_mesh_gpu_instancingE, align 8
  %.sroa.2.0.copyload = load ptr, ptr getelementptr inbounds (i8, ptr @_ZN8fastgltf10extensionsL23EXT_mesh_gpu_instancingE, i64 8), align 8
  %141 = getelementptr inbounds i8, ptr %0, i64 32
  %142 = getelementptr inbounds i8, ptr %0, i64 40
  br label %143

143:                                              ; preds = %.lr.ph424, %408
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  %144 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %145 = extractvalue { ptr, i64 } %144, 0
  store ptr %145, ptr %6, align 8
  %146 = extractvalue { ptr, i64 } %144, 1
  store i64 %146, ptr %105, align 8
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %7) #6
  call void @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #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 @_ZN8fastgltf21OptionalWithFlagValueImEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %109, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %110, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(68) %111, i8 0, i64 68, i1 false)
  call void @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEC2Ev(ptr noundef nonnull align 4 dereferenceable(65) %111) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %112, i8 0, i64 32, i1 false)
  call void @_ZNSt6vectorIN8fastgltf9AttributeENSt3pmr21polymorphic_allocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %113) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %6) #6
  %147 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %9, ptr noundef nonnull align 8 dereferenceable(16) %8) #6
  %.not = icmp eq i32 %147, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  br i1 %.not, label %148, label %.thread383, !prof !5

.thread383:                                       ; preds = %143
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit402

148:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str.142) #6
  %149 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %12) #6
  %.fca.0.extract134 = extractvalue { i64, i32 } %149, 0
  %.fca.1.extract135 = extractvalue { i64, i32 } %149, 1
  store i64 %.fca.0.extract134, ptr %11, align 8
  store i32 %.fca.1.extract135, ptr %.sroa.2137.0..sroa_idx, align 8
  %150 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  switch i32 %150, label %.thread388 [
    i32 0, label %151
    i32 20, label %154
  ], !prof !6

151:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %152 = load i64, ptr %10, align 8, !tbaa !7
  store i64 %152, ptr %13, align 8, !tbaa !7
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %154

154:                                              ; preds = %151, %148
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str.143) #6
  %155 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %15) #6
  %.fca.0.extract128 = extractvalue { i64, i32 } %155, 0
  %.fca.1.extract129 = extractvalue { i64, i32 } %155, 1
  store i64 %.fca.0.extract128, ptr %14, align 8
  store i32 %.fca.1.extract129, ptr %.sroa.2131.0..sroa_idx, align 8
  %156 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  switch i32 %156, label %.thread388 [
    i32 0, label %157
    i32 20, label %160
  ], !prof !6

157:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %158 = load i64, ptr %10, align 8, !tbaa !7
  store i64 %158, ptr %16, align 8, !tbaa !7
  %159 = 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) %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %160

160:                                              ; preds = %157, %154
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str.144) #6
  %161 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %18) #6
  %.fca.0.extract122 = extractvalue { i64, i32 } %161, 0
  %.fca.1.extract123 = extractvalue { i64, i32 } %161, 1
  store i64 %.fca.0.extract122, ptr %17, align 8
  store i32 %.fca.1.extract123, ptr %.sroa.2125.0..sroa_idx, align 8
  %162 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  switch i32 %162, label %.thread388 [
    i32 0, label %163
    i32 20, label %166
  ], !prof !6

163:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %164 = load i64, ptr %10, align 8, !tbaa !7
  store i64 %164, ptr %19, align 8, !tbaa !7
  %165 = 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) %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  br label %166

166:                                              ; preds = %163, %160
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef @.str.145) #6
  %167 = load i64, ptr %21, align 8
  %168 = load ptr, ptr %114, align 8
  %169 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 %167, ptr %168, ptr noundef nonnull %20) #6
  switch i64 %169, label %.thread393 [
    i64 0, label %170
    i64 8, label %204
  ], !prof !11

170:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %171 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %115) #6
  call void @_ZNSt3pmr21polymorphic_allocatorImEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %171) #6
  invoke void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %172 unwind label %184

172:                                              ; preds = %170
  %173 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %174 unwind label %186

174:                                              ; preds = %172
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  %175 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  invoke void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %109, i64 noundef %175)
          to label %176 unwind label %189

176:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #6
  %177 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %178 = extractvalue { ptr, i64 } %177, 0
  store ptr %178, ptr %24, align 8
  %179 = extractvalue { ptr, i64 } %177, 1
  store i64 %179, ptr %116, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  %180 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %181 = extractvalue { ptr, i64 } %180, 0
  store ptr %181, ptr %25, align 8
  %182 = extractvalue { ptr, i64 } %180, 1
  store i64 %182, ptr %117, align 8
  %183 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  br i1 %183, label %.lr.ph, label %._crit_edge

184:                                              ; preds = %170
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %188

186:                                              ; preds = %172
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %188

188:                                              ; preds = %186, %184
  %.pn = phi { ptr, i32 } [ %187, %186 ], [ %185, %184 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br label %415

189:                                              ; preds = %174
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %415

.lr.ph:                                           ; preds = %176, %199
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #6
  %191 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  %192 = extractvalue { ptr, i64 } %191, 0
  store ptr %192, ptr %26, align 8
  %193 = extractvalue { ptr, i64 } %191, 1
  store i64 %193, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  %194 = call { i64, i32 } @_ZNK8simdjson3dom7element10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  %.fca.0.extract111 = extractvalue { i64, i32 } %194, 0
  %.fca.1.extract112 = extractvalue { i64, i32 } %194, 1
  store i64 %.fca.0.extract111, ptr %27, align 8
  store i32 %.fca.1.extract112, ptr %.sroa.2114.0..sroa_idx, align 8
  %195 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %27, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  %.not263 = icmp eq i32 %195, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  br i1 %.not263, label %196, label %.thread305, !prof !5

196:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  %197 = load i64, ptr %10, align 8, !tbaa !7
  store i64 %197, ptr %28, align 8, !tbaa !7
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE12emplace_backIJmEEERmDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %199 unwind label %202

.thread305:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br label %.thread393

199:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  %200 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  %201 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  br i1 %201, label %.lr.ph, label %._crit_edge

202:                                              ; preds = %196
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br label %415

._crit_edge:                                      ; preds = %199, %176
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br label %204

204:                                              ; preds = %._crit_edge, %166
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef @.str.56) #6
  %205 = load i64, ptr %29, align 8
  %206 = load ptr, ptr %119, align 8
  %207 = call noundef i64 @_ZN8fastgltf12getJsonArrayERKN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS1_5arrayE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 %205, ptr %206, ptr noundef nonnull %20) #6
  switch i64 %207, label %208 [
    i64 8, label %243
    i64 0, label %.thread393
  ]

208:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  %209 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %115) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIfEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef %209) #6
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(32) %30, i64 noundef 0, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %210 unwind label %222

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %212 unwind label %224

212:                                              ; preds = %210
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  %213 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  invoke void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %110, i64 noundef %213)
          to label %214 unwind label %227

214:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #6
  %215 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %216 = extractvalue { ptr, i64 } %215, 0
  store ptr %216, ptr %32, align 8
  %217 = extractvalue { ptr, i64 } %215, 1
  store i64 %217, ptr %120, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #6
  %218 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %219 = extractvalue { ptr, i64 } %218, 0
  store ptr %219, ptr %33, align 8
  %220 = extractvalue { ptr, i64 } %218, 1
  store i64 %220, ptr %121, align 8
  %221 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  br i1 %221, label %.lr.ph405, label %._crit_edge406

222:                                              ; preds = %208
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %210
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %226

226:                                              ; preds = %224, %222
  %.pn266 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %415

227:                                              ; preds = %212
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %415

.lr.ph405:                                        ; preds = %214, %238
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #6
  %229 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  %230 = extractvalue { ptr, i64 } %229, 0
  store ptr %230, ptr %34, align 8
  %231 = extractvalue { ptr, i64 } %229, 1
  store i64 %231, ptr %122, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #6
  %232 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %34) #6
  %.fca.0.extract103 = extractvalue { double, i32 } %232, 0
  %.fca.1.extract104 = extractvalue { double, i32 } %232, 1
  store double %.fca.0.extract103, ptr %36, align 8
  store i32 %.fca.1.extract104, ptr %.sroa.2106.0..sroa_idx, align 8
  %233 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %36, ptr noundef nonnull align 8 dereferenceable(8) %35) #6
  %.not268 = icmp eq i32 %233, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #6
  br i1 %.not268, label %234, label %.thread311, !prof !5

234:                                              ; preds = %.lr.ph405
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  %235 = load double, ptr %35, align 8, !tbaa !12
  %236 = fptrunc double %235 to float
  store float %236, ptr %37, align 4, !tbaa !14
  %237 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfNSt3pmr21polymorphic_allocatorIfEEE12emplace_backIJfEEERfDpOT_(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %238 unwind label %241

.thread311:                                       ; preds = %.lr.ph405
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #6
  br label %.thread393

238:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #6
  %239 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  %240 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %33) #6
  br i1 %240, label %.lr.ph405, label %._crit_edge406

241:                                              ; preds = %234
  %242 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #6
  br label %415

._crit_edge406:                                   ; preds = %238, %214
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #6
  br label %243

243:                                              ; preds = %._crit_edge406, %204
  call void @llvm.lifetime.start.p0(i64 24, 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) %8, ptr noundef nonnull @.str.146) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %38, ptr noundef nonnull align 8 dereferenceable(20) %39) #6
  %244 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %38, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #6
  switch i32 %244, label %347 [
    i32 0, label %245
    i32 20, label %276
  ], !prof !11

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %40) #6
  call void @_ZN8fastgltf4math3matIfLm4ELm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(64) %40, float noundef 1.000000e+00) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  %246 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %247 = extractvalue { ptr, i64 } %246, 0
  store ptr %247, ptr %41, align 8
  %248 = extractvalue { ptr, i64 } %246, 1
  store i64 %248, ptr %134, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #6
  %249 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %250 = extractvalue { ptr, i64 } %249, 0
  store ptr %250, ptr %42, align 8
  %251 = extractvalue { ptr, i64 } %249, 1
  store i64 %251, ptr %135, align 8
  %252 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  br i1 %252, label %.lr.ph422, label %.loopexit

.lr.ph422:                                        ; preds = %245, %259
  %.0232420 = phi i64 [ %spec.select289, %259 ], [ 0, %245 ]
  %.0235419 = phi i64 [ %spec.select, %259 ], [ 0, %245 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #6
  %253 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  %254 = extractvalue { ptr, i64 } %253, 0
  store ptr %254, ptr %43, align 8
  %255 = extractvalue { ptr, i64 } %253, 1
  store i64 %255, ptr %136, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #6
  %256 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  %.fca.0.extract90 = extractvalue { double, i32 } %256, 0
  %.fca.1.extract91 = extractvalue { double, i32 } %256, 1
  store double %.fca.0.extract90, ptr %45, align 8
  store i32 %.fca.1.extract91, ptr %.sroa.293.0..sroa_idx, align 8
  %257 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %45, ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  %.not275 = icmp eq i32 %257, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #6
  br i1 %.not275, label %259, label %258, !prof !5

258:                                              ; preds = %.lr.ph422
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #6
  br label %.loopexit

259:                                              ; preds = %.lr.ph422
  %260 = load double, ptr %44, align 8, !tbaa !12
  %261 = fptrunc double %260 to float
  %262 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8fastgltf4math3matIfLm4ELm4EE3colEm(ptr noundef nonnull align 4 dereferenceable(64) %40, i64 noundef %.0232420) #6
  %263 = add i64 %.0235419, 1
  %264 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %262, i64 noundef %.0235419) #6
  store float %261, ptr %264, align 4, !tbaa !14
  %265 = icmp eq i64 %263, 4
  %spec.select = select i1 %265, i64 0, i64 %263
  %266 = zext i1 %265 to i64
  %spec.select289 = add i64 %.0232420, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #6
  %267 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  %268 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  br i1 %268, label %.lr.ph422, label %.loopexit

.loopexit:                                        ; preds = %259, %245, %258
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  %269 = load i64, ptr %137, align 8, !tbaa !16
  %270 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_7OptionsES1_EEbT_T0_(i64 noundef %269, i64 noundef 32)
  br i1 %270, label %271, label %273

271:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %46) #6
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %46, float noundef 0.000000e+00) #6
  call void @_ZN8fastgltf4math4quatIfEC2IJffffETnNSt9enable_ifIXeqsZT_Li4EEbE4typeELb1EEEDpT_(ptr noundef nonnull align 4 dereferenceable(16) %138, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00) #6
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %139, float noundef 1.000000e+00) #6
  call void @_ZN8fastgltf4math3matIfLm4ELm4EEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %47, ptr noundef nonnull align 4 dereferenceable(64) %40) #6
  call void @_ZN8fastgltf4math24decomposeTransformMatrixENS0_3matIfLm4ELm4EEERNS0_3vecIfLm3EEERNS0_4quatIfEES5_(ptr noundef nonnull %47, ptr noundef nonnull align 4 dereferenceable(12) %139, ptr noundef nonnull align 4 dereferenceable(16) %138, ptr noundef nonnull align 4 dereferenceable(12) %46)
  %272 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %111, ptr noundef nonnull align 4 dereferenceable(40) %46) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %46) #6
  br label %275

273:                                              ; preds = %.loopexit
  %274 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS4_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %111, ptr noundef nonnull align 4 dereferenceable(64) %40) #6
  br label %275

275:                                              ; preds = %273, %271
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %40) #6
  br label %347

276:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %48) #6
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %48, float noundef 0.000000e+00) #6
  call void @_ZN8fastgltf4math4quatIfEC2IJffffETnNSt9enable_ifIXeqsZT_Li4EEbE4typeELb1EEEDpT_(ptr noundef nonnull align 4 dereferenceable(16) %123, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00) #6
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %124, float noundef 1.000000e+00) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %50) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str.3) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %49, ptr noundef nonnull align 8 dereferenceable(20) %50) #6
  %277 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %49, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #6
  switch i32 %277, label %.thread361 [
    i32 0, label %278
    i32 20, label %299
  ], !prof !48

278:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #6
  %279 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %280 = extractvalue { ptr, i64 } %279, 0
  store ptr %280, ptr %51, align 8
  %281 = extractvalue { ptr, i64 } %279, 1
  store i64 %281, ptr %125, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #6
  %282 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %283 = extractvalue { ptr, i64 } %282, 0
  store ptr %283, ptr %52, align 8
  %284 = extractvalue { ptr, i64 } %282, 1
  store i64 %284, ptr %126, align 8
  %285 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  br i1 %285, label %.lr.ph409, label %._crit_edge410

.lr.ph409:                                        ; preds = %278, %291
  %.0238407 = phi i32 [ %296, %291 ], [ 0, %278 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #6
  %286 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  %287 = extractvalue { ptr, i64 } %286, 0
  store ptr %287, ptr %53, align 8
  %288 = extractvalue { ptr, i64 } %286, 1
  store i64 %288, ptr %127, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #6
  %289 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  %.fca.0.extract80 = extractvalue { double, i32 } %289, 0
  %.fca.1.extract81 = extractvalue { double, i32 } %289, 1
  store double %.fca.0.extract80, ptr %55, align 8
  store i32 %.fca.1.extract81, ptr %.sroa.283.0..sroa_idx, align 8
  %290 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %55, ptr noundef nonnull align 8 dereferenceable(8) %54) #6
  %.not270 = icmp eq i32 %290, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #6
  br i1 %.not270, label %291, label %.thread324, !prof !5

.thread324:                                       ; preds = %.lr.ph409
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #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
  br label %.thread361

291:                                              ; preds = %.lr.ph409
  %292 = load double, ptr %54, align 8, !tbaa !12
  %293 = fptrunc double %292 to float
  %294 = zext i32 %.0238407 to i64
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %124, i64 noundef %294) #6
  store float %293, ptr %295, align 4, !tbaa !14
  %296 = add i32 %.0238407, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  %297 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  %298 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  br i1 %298, label %.lr.ph409, label %._crit_edge410

._crit_edge410:                                   ; preds = %291, %278
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  br label %299

299:                                              ; preds = %276, %._crit_edge410
  call void @llvm.lifetime.start.p0(i64 24, 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) %8, ptr noundef nonnull @.str.55) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %56, ptr noundef nonnull align 8 dereferenceable(20) %57) #6
  %300 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %56, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #6
  switch i32 %300, label %.thread361 [
    i32 0, label %301
    i32 20, label %322
  ], !prof !48

301:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #6
  %302 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %303 = extractvalue { ptr, i64 } %302, 0
  store ptr %303, ptr %58, align 8
  %304 = extractvalue { ptr, i64 } %302, 1
  store i64 %304, ptr %128, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #6
  %305 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %306 = extractvalue { ptr, i64 } %305, 0
  store ptr %306, ptr %59, align 8
  %307 = extractvalue { ptr, i64 } %305, 1
  store i64 %307, ptr %129, align 8
  %308 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  br i1 %308, label %.lr.ph413, label %._crit_edge414

.lr.ph413:                                        ; preds = %301, %314
  %.0240411 = phi i32 [ %319, %314 ], [ 0, %301 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #6
  %309 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  %310 = extractvalue { ptr, i64 } %309, 0
  store ptr %310, ptr %60, align 8
  %311 = extractvalue { ptr, i64 } %309, 1
  store i64 %311, ptr %130, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #6
  %312 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %60) #6
  %.fca.0.extract70 = extractvalue { double, i32 } %312, 0
  %.fca.1.extract71 = extractvalue { double, i32 } %312, 1
  store double %.fca.0.extract70, ptr %62, align 8
  store i32 %.fca.1.extract71, ptr %.sroa.273.0..sroa_idx, align 8
  %313 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %62, ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  %.not272 = icmp eq i32 %313, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #6
  br i1 %.not272, label %314, label %.thread337, !prof !5

.thread337:                                       ; preds = %.lr.ph413
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  br label %.thread361

314:                                              ; preds = %.lr.ph413
  %315 = load double, ptr %61, align 8, !tbaa !12
  %316 = fptrunc double %315 to float
  %317 = zext i32 %.0240411 to i64
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %48, i64 noundef %317) #6
  store float %316, ptr %318, align 4, !tbaa !14
  %319 = add i32 %.0240411, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  %320 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  %321 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  br i1 %321, label %.lr.ph413, label %._crit_edge414

._crit_edge414:                                   ; preds = %314, %301
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #6
  br label %322

322:                                              ; preds = %299, %._crit_edge414
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %64) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str.6) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %63, ptr noundef nonnull align 8 dereferenceable(20) %64) #6
  %323 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %63, ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #6
  switch i32 %323, label %.thread361 [
    i32 0, label %324
    i32 20, label %345
  ], !prof !48

324:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #6
  %325 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %326 = extractvalue { ptr, i64 } %325, 0
  store ptr %326, ptr %65, align 8
  %327 = extractvalue { ptr, i64 } %325, 1
  store i64 %327, ptr %131, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #6
  %328 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  %329 = extractvalue { ptr, i64 } %328, 0
  store ptr %329, ptr %66, align 8
  %330 = extractvalue { ptr, i64 } %328, 1
  store i64 %330, ptr %132, align 8
  %331 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  br i1 %331, label %.lr.ph417, label %._crit_edge418

.lr.ph417:                                        ; preds = %324, %337
  %.0242415 = phi i32 [ %342, %337 ], [ 0, %324 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #6
  %332 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %65) #6
  %333 = extractvalue { ptr, i64 } %332, 0
  store ptr %333, ptr %67, align 8
  %334 = extractvalue { ptr, i64 } %332, 1
  store i64 %334, ptr %133, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #6
  %335 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %67) #6
  %.fca.0.extract61 = extractvalue { double, i32 } %335, 0
  %.fca.1.extract62 = extractvalue { double, i32 } %335, 1
  store double %.fca.0.extract61, ptr %69, align 8
  store i32 %.fca.1.extract62, ptr %.sroa.264.0..sroa_idx, align 8
  %336 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %69, ptr noundef nonnull align 8 dereferenceable(8) %68) #6
  %.not274 = icmp eq i32 %336, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #6
  br i1 %.not274, label %337, label %.thread351, !prof !5

.thread351:                                       ; preds = %.lr.ph417
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #6
  br label %.thread361

337:                                              ; preds = %.lr.ph417
  %338 = load double, ptr %68, align 8, !tbaa !12
  %339 = fptrunc double %338 to float
  %340 = zext i32 %.0242415 to i64
  %341 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math4quatIfEixEm(ptr noundef nonnull align 4 dereferenceable(16) %123, i64 noundef %340) #6
  store float %339, ptr %341, align 4, !tbaa !14
  %342 = add i32 %.0242415, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #6
  %343 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %65) #6
  %344 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %66) #6
  br i1 %344, label %.lr.ph417, label %._crit_edge418

._crit_edge418:                                   ; preds = %337, %324
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #6
  br label %345

.thread361:                                       ; preds = %276, %299, %322, %.thread324, %.thread337, %.thread351
  %.27.ph = phi i64 [ 5, %.thread351 ], [ 5, %.thread337 ], [ 5, %.thread324 ], [ 4, %276 ], [ 5, %299 ], [ 5, %322 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %48) #6
  br label %.thread393

345:                                              ; preds = %322, %._crit_edge418
  %346 = call noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65) %111, ptr noundef nonnull align 4 dereferenceable(40) %48) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %48) #6
  br label %347

347:                                              ; preds = %345, %243, %275
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %72) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %8, 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 %71, ptr noundef nonnull align 8 dereferenceable(20) %72) #6
  %348 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %71, ptr noundef nonnull align 8 dereferenceable(16) %70) #6
  %349 = icmp eq i32 %348, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #6
  br i1 %349, label %350, label %382, !prof !5

350:                                              ; preds = %347
  %351 = load i64, ptr %140, align 8, !tbaa !49
  %352 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %351, i64 noundef 64)
  br i1 %352, label %353, label %369

353:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %74) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %75) #6
  call void @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %70, i64 %.sroa.059.0.copyload, ptr %.sroa.260.0.copyload) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %74, ptr noundef nonnull align 8 dereferenceable(20) %75) #6
  %354 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %74, ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  %355 = icmp eq i32 %354, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %74) #6
  br i1 %355, label %356, label %367, !prof !5

356:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull @.str.147) #6
  %357 = call { i64, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_uint64Ev(ptr noundef nonnull align 8 dereferenceable(20) %78) #6
  %.fca.0.extract = extractvalue { i64, i32 } %357, 0
  %.fca.1.extract = extractvalue { i64, i32 } %357, 1
  store i64 %.fca.0.extract, ptr %77, align 8
  store i32 %.fca.1.extract, ptr %.sroa.255.0..sroa_idx, align 8
  %358 = call noundef i32 @_ZNO8simdjson15simdjson_resultImE3getERm(ptr noundef nonnull align 8 dereferenceable(12) %77, ptr noundef nonnull align 8 dereferenceable(8) %76) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #6
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %.thread365, label %362, !prof !5

.thread365:                                       ; preds = %356
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #6
  %360 = load i64, ptr %76, align 8, !tbaa !7
  store i64 %360, ptr %79, align 8, !tbaa !7
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8fastgltf21OptionalWithFlagValueImEaSImTnNSt9enable_ifIXsr3stdE18is_constructible_vImOT_EEiE4typeELi0EEERS1_S5_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  br label %368

362:                                              ; preds = %356
  %363 = icmp eq i32 %358, 20
  %364 = icmp eq i32 %358, 17
  %365 = or i1 %363, %364
  %366 = select i1 %365, i64 5, i64 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  br label %.thread368

367:                                              ; preds = %353
  %.not276 = icmp eq i32 %244, 20
  br i1 %.not276, label %368, label %.thread368

.thread368:                                       ; preds = %367, %362
  %.31.ph = phi i64 [ %366, %362 ], [ 5, %367 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #6
  br label %.thread398

368:                                              ; preds = %367, %.thread365
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #6
  br label %369

369:                                              ; preds = %368, %350
  %370 = load i64, ptr %140, align 8, !tbaa !49
  %371 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %370, i64 noundef 524288)
  br i1 %371, label %372, label %382

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #6
  call void @_ZN8simdjson3dom6objectC2Ev(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 @_ZNK8simdjson3dom6objectixESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %70, i64 %.sroa.0.0.copyload, ptr %.sroa.2.0.copyload) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %81, ptr noundef nonnull align 8 dereferenceable(20) %82) #6
  %373 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %81, ptr noundef nonnull align 8 dereferenceable(16) %80) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %81) #6
  switch i32 %373, label %.loopexit403 [
    i32 0, label %374
    i32 20, label %.thread377
  ], !prof !11

374:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %83) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %84) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %85) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %85, ptr noundef nonnull align 8 dereferenceable(16) %80, 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 %84, ptr noundef nonnull align 8 dereferenceable(20) %85) #6
  %375 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %84, ptr noundef nonnull align 8 dereferenceable(16) %83) #6
  %.not278 = icmp eq i32 %375, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #6
  br i1 %.not278, label %376, label %.thread372, !prof !5

376:                                              ; preds = %374
  %377 = invoke noundef i64 @_ZN8fastgltf6Parser15parseAttributesISt6vectorINS_9AttributeENSt3pmr21polymorphic_allocatorIS3_EEEEENS_5ErrorERN8simdjson3dom6objectERT_(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(32) %112)
          to label %378 unwind label %379

378:                                              ; preds = %376
  %.not279 = icmp eq i64 %377, 0
  br i1 %.not279, label %381, label %.thread372

379:                                              ; preds = %376
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #6
  br label %414

.thread372:                                       ; preds = %378, %374
  %.34.ph = phi i64 [ 5, %374 ], [ %377, %378 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #6
  br label %.loopexit403

381:                                              ; preds = %378
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #6
  br label %.thread377

.thread377:                                       ; preds = %381, %372
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #6
  br label %382

.loopexit403:                                     ; preds = %372, %.thread372
  %.36 = phi i64 [ %.34.ph, %.thread372 ], [ 5, %372 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #6
  br label %.thread398

382:                                              ; preds = %.thread377, %369, %347
  %383 = load ptr, ptr %141, align 8, !tbaa !50
  %.not280 = icmp eq ptr %383, null
  br i1 %.not280, label %393, label %384

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %87) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %88) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %88, ptr noundef nonnull align 8 dereferenceable(16) %8, 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 %87, ptr noundef nonnull align 8 dereferenceable(20) %88) #6
  %385 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %87, ptr noundef nonnull align 8 dereferenceable(16) %86) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %88) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %87) #6
  switch i32 %385, label %392 [
    i32 0, label %386
    i32 20, label %.thread380
  ]

386:                                              ; preds = %384
  %387 = load ptr, ptr %141, align 8, !tbaa !50
  %388 = call noundef i64 @_ZNKSt6vectorIN8fastgltf4NodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #6
  %389 = load ptr, ptr %142, align 8, !tbaa !51
  invoke void %387(ptr noundef nonnull %86, i64 noundef %388, i32 noundef 2048, ptr noundef %389)
          to label %.thread380 unwind label %390

390:                                              ; preds = %386
  %391 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #6
  br label %414

.thread380:                                       ; preds = %386, %384
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #6
  br label %393

392:                                              ; preds = %384
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #6
  br label %.thread398

393:                                              ; preds = %.thread380, %382
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %90) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %91) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %91, ptr noundef nonnull align 8 dereferenceable(16) %8, 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 %90, ptr noundef nonnull align 8 dereferenceable(20) %91) #6
  %394 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %90, ptr noundef nonnull align 8 dereferenceable(16) %89) #6
  %395 = icmp eq i32 %394, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #6
  br i1 %395, label %396, label %406

396:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %92) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #6
  %397 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %115) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef %397) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %92, ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %398 unwind label %401

398:                                              ; preds = %396
  %399 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %113, ptr noundef nonnull align 8 dereferenceable(40) %92)
          to label %400 unwind label %403

400:                                              ; preds = %398
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %92) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %92) #6
  br label %406

401:                                              ; preds = %396
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %405

403:                                              ; preds = %398
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %92) #6
  br label %405

405:                                              ; preds = %403, %401
  %.pn282 = phi { ptr, i32 } [ %404, %403 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %92) #6
  br label %413

406:                                              ; preds = %400, %393
  %407 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZNSt6vectorIN8fastgltf4NodeESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr noundef nonnull align 8 dereferenceable(240) %7)
          to label %408 unwind label %411

.thread388:                                       ; preds = %148, %154, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit402

.thread393:                                       ; preds = %166, %204, %.thread305, %.thread311, %.thread361
  %.43.ph = phi i64 [ %.27.ph, %.thread361 ], [ 5, %.thread311 ], [ 5, %.thread305 ], [ %169, %166 ], [ 5, %204 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit402

.thread398:                                       ; preds = %392, %.loopexit403, %.thread368
  %.40.ph = phi i64 [ %.31.ph, %.thread368 ], [ %.36, %.loopexit403 ], [ 5, %392 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit402

408:                                              ; preds = %406
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  %409 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %410 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %410, label %143, label %.loopexit402

411:                                              ; preds = %406
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %413

413:                                              ; preds = %411, %405
  %.pn284 = phi { ptr, i32 } [ %412, %411 ], [ %.pn282, %405 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #6
  br label %414

414:                                              ; preds = %413, %390, %379
  %.pn284.pn = phi { ptr, i32 } [ %.pn284, %413 ], [ %391, %390 ], [ %380, %379 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #6
  br label %415

415:                                              ; preds = %226, %227, %241, %414, %202, %189, %188
  %.pn284.pn.pn.pn = phi { ptr, i32 } [ %203, %202 ], [ %190, %189 ], [ %.pn, %188 ], [ %.pn284.pn, %414 ], [ %242, %241 ], [ %228, %227 ], [ %.pn266, %226 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240) %7) #6
  call void @llvm.lifetime.end.p0(i64 240, 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 } %.pn284.pn.pn.pn

.loopexit402:                                     ; preds = %408, %3, %.thread398, %.thread393, %.thread388, %.thread383
  %spec.select290 = phi i64 [ 5, %.thread383 ], [ 5, %.thread388 ], [ %.43.ph, %.thread393 ], [ %.40.ph, %.thread398 ], [ 0, %3 ], [ 0, %408 ]
  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.select290
}

; 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12), float noundef) unnamed_addr #1 align 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 nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16), i64 noundef) local_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_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 void @_ZNSt6vectorIN8fastgltf4NodeESaIS1_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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3pmr21polymorphic_allocatorImEC2EPNS_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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEC2EmRKS2_(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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEEaSEOS3_(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 @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE7reserveEm(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(8) ptr @_ZNSt6vectorImNSt3pmr21polymorphic_allocatorImEEE12emplace_backIJmEEERmDpOT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math24decomposeTransformMatrixENS0_3matIfLm4ELm4EEERNS0_3vecIfLm3EEERNS0_4quatIfEES5_(ptr noundef, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4math3matIfLm4ELm4EEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS1_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65), ptr noundef nonnull align 4 dereferenceable(40)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(65) ptr @_ZNSt7variantIJN8fastgltf3TRSENS0_4math3matIfLm4ELm4EEEEEaSIRS4_EENSt9enable_ifIXaaaa14__exactly_onceINSt9_Nth_typeIX16__accepted_indexIOT_EEJS1_S4_EE4typeEE18is_constructible_vISD_SA_E15is_assignable_vIRSD_SA_EERS5_E4typeESB_(ptr noundef nonnull align 4 dereferenceable(65), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(240)) 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 = !{!"branch_weights", i32 1, i32 2001, i32 2000}
!7 = !{!8, !8, i64 0}
!8 = !{!"long", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"branch_weights", i32 1, i32 4000, i32 1}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !9, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !9, i64 0}
!16 = !{!17, !47, i64 304}
!17 = !{!"_ZTSN8fastgltf6ParserE", !18, i64 0, !25, i64 8, !27, i64 56, !34, i64 248, !37, i64 264, !47, i64 304}
!18 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !20, i64 0}
!20 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !22, i64 0}
!22 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !23, i64 0}
!23 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !24, i64 0}
!24 = !{!"any pointer", !9, i64 0}
!25 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !24, i64 0, !24, i64 8, !24, i64 16, !24, i64 24, !24, i64 32, !26, i64 40}
!26 = !{!"_ZTSN8fastgltf10ExtensionsE", !9, i64 0}
!27 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !28, i64 0}
!28 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !29, i64 0}
!29 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !30, i64 0}
!30 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !31, i64 0}
!31 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !32, i64 0}
!32 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !33, i64 0}
!33 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !9, i64 0, !9, i64 184}
!34 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !35, i64 0}
!35 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !24, i64 0, !36, i64 8}
!36 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !24, i64 0}
!37 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !38, i64 0, !40, i64 32}
!38 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !39, i64 0, !8, i64 8, !9, i64 16}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !24, i64 0}
!40 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !41, i64 0}
!41 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !42, i64 0}
!42 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !44, i64 0}
!44 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !45, i64 0}
!45 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !46, i64 0}
!46 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !24, i64 0}
!47 = !{!"_ZTSN8fastgltf7OptionsE", !9, i64 0}
!48 = !{!"branch_weights", i32 1, i32 4002000, i32 2000}
!49 = !{!17, !26, i64 48}
!50 = !{!17, !24, i64 32}
!51 = !{!17, !24, i64 40}


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