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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.409" = type { %"struct.simdjson::internal::simdjson_result_base.base.414", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.414" = type { %"struct.std::pair.base.413" }
%"struct.std::pair.base.413" = type <{ %"class.std::basic_string_view", i32 }>
%"class.std::basic_string_view" = type { i64, ptr }
%"class.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"struct.fastgltf::Material" = type { %"struct.fastgltf::PBRData", %"class.std::optional.279", %"class.std::optional.289", %"class.std::optional.269", %"class.fastgltf::math::vec.264", i8, i8, i8, float, float, float, float, %"class.std::unique_ptr.299", %"class.std::unique_ptr.307", %"class.std::unique_ptr.315", %"class.std::unique_ptr.323", %"class.std::unique_ptr.331", %"class.std::unique_ptr.339", %"class.std::unique_ptr.347", %"class.std::optional.269", %"class.std::unique_ptr.355", %"class.std::__cxx11::basic_string.74" }
%"struct.fastgltf::PBRData" = type { %"class.fastgltf::math::vec.267", float, float, %"class.std::optional.269", %"class.std::optional.269" }
%"class.fastgltf::math::vec.267" = type { %"struct.std::array.268" }
%"struct.std::array.268" = type { [4 x float] }
%"class.std::optional.279" = type { %"struct.std::_Optional_base.280" }
%"struct.std::_Optional_base.280" = type { %"struct.std::_Optional_payload.282" }
%"struct.std::_Optional_payload.282" = type { %"struct.std::_Optional_payload.base.286", [7 x i8] }
%"struct.std::_Optional_payload.base.286" = type { %"struct.std::_Optional_payload_base.base.285" }
%"struct.std::_Optional_payload_base.base.285" = type { %"union.std::_Optional_payload_base<fastgltf::NormalTextureInfo>::_Storage", i8 }
%"union.std::_Optional_payload_base<fastgltf::NormalTextureInfo>::_Storage" = type { %"struct.fastgltf::NormalTextureInfo" }
%"struct.fastgltf::NormalTextureInfo" = type <{ %"struct.fastgltf::TextureInfo", float, [4 x i8] }>
%"struct.fastgltf::TextureInfo" = type { i64, i64, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.15" }
%"struct.std::_Head_base.15" = type { ptr }
%"class.std::optional.289" = type { %"struct.std::_Optional_base.290" }
%"struct.std::_Optional_base.290" = type { %"struct.std::_Optional_payload.292" }
%"struct.std::_Optional_payload.292" = type { %"struct.std::_Optional_payload.base.296", [7 x i8] }
%"struct.std::_Optional_payload.base.296" = type { %"struct.std::_Optional_payload_base.base.295" }
%"struct.std::_Optional_payload_base.base.295" = type { %"union.std::_Optional_payload_base<fastgltf::OcclusionTextureInfo>::_Storage", i8 }
%"union.std::_Optional_payload_base<fastgltf::OcclusionTextureInfo>::_Storage" = type { %"struct.fastgltf::OcclusionTextureInfo" }
%"struct.fastgltf::OcclusionTextureInfo" = type <{ %"struct.fastgltf::TextureInfo", float, [4 x i8] }>
%"class.fastgltf::math::vec.264" = type { %"struct.std::array.265" }
%"struct.std::array.265" = type { [3 x float] }
%"class.std::unique_ptr.299" = type { %"struct.std::__uniq_ptr_data.300" }
%"struct.std::__uniq_ptr_data.300" = type { %"class.std::__uniq_ptr_impl.301" }
%"class.std::__uniq_ptr_impl.301" = type { %"class.std::tuple.302" }
%"class.std::tuple.302" = type { %"struct.std::_Tuple_impl.303" }
%"struct.std::_Tuple_impl.303" = type { %"struct.std::_Head_base.306" }
%"struct.std::_Head_base.306" = type { ptr }
%"class.std::unique_ptr.307" = type { %"struct.std::__uniq_ptr_data.308" }
%"struct.std::__uniq_ptr_data.308" = type { %"class.std::__uniq_ptr_impl.309" }
%"class.std::__uniq_ptr_impl.309" = type { %"class.std::tuple.310" }
%"class.std::tuple.310" = type { %"struct.std::_Tuple_impl.311" }
%"struct.std::_Tuple_impl.311" = type { %"struct.std::_Head_base.314" }
%"struct.std::_Head_base.314" = type { ptr }
%"class.std::unique_ptr.315" = type { %"struct.std::__uniq_ptr_data.316" }
%"struct.std::__uniq_ptr_data.316" = type { %"class.std::__uniq_ptr_impl.317" }
%"class.std::__uniq_ptr_impl.317" = type { %"class.std::tuple.318" }
%"class.std::tuple.318" = type { %"struct.std::_Tuple_impl.319" }
%"struct.std::_Tuple_impl.319" = type { %"struct.std::_Head_base.322" }
%"struct.std::_Head_base.322" = type { ptr }
%"class.std::unique_ptr.323" = type { %"struct.std::__uniq_ptr_data.324" }
%"struct.std::__uniq_ptr_data.324" = type { %"class.std::__uniq_ptr_impl.325" }
%"class.std::__uniq_ptr_impl.325" = type { %"class.std::tuple.326" }
%"class.std::tuple.326" = type { %"struct.std::_Tuple_impl.327" }
%"struct.std::_Tuple_impl.327" = type { %"struct.std::_Head_base.330" }
%"struct.std::_Head_base.330" = type { ptr }
%"class.std::unique_ptr.331" = type { %"struct.std::__uniq_ptr_data.332" }
%"struct.std::__uniq_ptr_data.332" = type { %"class.std::__uniq_ptr_impl.333" }
%"class.std::__uniq_ptr_impl.333" = type { %"class.std::tuple.334" }
%"class.std::tuple.334" = type { %"struct.std::_Tuple_impl.335" }
%"struct.std::_Tuple_impl.335" = type { %"struct.std::_Head_base.338" }
%"struct.std::_Head_base.338" = type { ptr }
%"class.std::unique_ptr.339" = type { %"struct.std::__uniq_ptr_data.340" }
%"struct.std::__uniq_ptr_data.340" = type { %"class.std::__uniq_ptr_impl.341" }
%"class.std::__uniq_ptr_impl.341" = type { %"class.std::tuple.342" }
%"class.std::tuple.342" = type { %"struct.std::_Tuple_impl.343" }
%"struct.std::_Tuple_impl.343" = type { %"struct.std::_Head_base.346" }
%"struct.std::_Head_base.346" = type { ptr }
%"class.std::unique_ptr.347" = type { %"struct.std::__uniq_ptr_data.348" }
%"struct.std::__uniq_ptr_data.348" = type { %"class.std::__uniq_ptr_impl.349" }
%"class.std::__uniq_ptr_impl.349" = type { %"class.std::tuple.350" }
%"class.std::tuple.350" = type { %"struct.std::_Tuple_impl.351" }
%"struct.std::_Tuple_impl.351" = type { %"struct.std::_Head_base.354" }
%"struct.std::_Head_base.354" = type { ptr }
%"class.std::optional.269" = type { %"struct.std::_Optional_base.270" }
%"struct.std::_Optional_base.270" = type { %"struct.std::_Optional_payload.272" }
%"struct.std::_Optional_payload.272" = type { %"struct.std::_Optional_payload.base.276", [7 x i8] }
%"struct.std::_Optional_payload.base.276" = type { %"struct.std::_Optional_payload_base.base.275" }
%"struct.std::_Optional_payload_base.base.275" = type <{ %"union.std::_Optional_payload_base<fastgltf::TextureInfo>::_Storage", i8 }>
%"union.std::_Optional_payload_base<fastgltf::TextureInfo>::_Storage" = type { %"struct.fastgltf::TextureInfo" }
%"class.std::unique_ptr.355" = type { %"struct.std::__uniq_ptr_data.356" }
%"struct.std::__uniq_ptr_data.356" = type { %"class.std::__uniq_ptr_impl.357" }
%"class.std::__uniq_ptr_impl.357" = type { %"class.std::tuple.358" }
%"class.std::tuple.358" = type { %"struct.std::_Tuple_impl.359" }
%"struct.std::_Tuple_impl.359" = type { %"struct.std::_Head_base.362" }
%"struct.std::_Head_base.362" = type { 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.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.simdjson::simdjson_result.420" = type { %"struct.simdjson::internal::simdjson_result_base.421" }
%"struct.simdjson::internal::simdjson_result_base.421" = type { %"struct.std::pair.422" }
%"struct.std::pair.422" = type { i8, i32 }
%"class.fastgltf::Asset" = type <{ %"class.std::shared_ptr", %"class.std::optional", %"class.std::vector.88", %"class.std::vector.88", %"class.fastgltf::OptionalWithFlagValue", %"class.std::vector.91", %"class.std::vector.96", %"class.std::vector.101", %"class.std::vector.106", %"class.std::vector.111", %"class.std::vector.116", %"class.std::vector.121", %"class.std::vector.126", %"class.std::vector.131", %"class.std::vector.136", %"class.std::vector.141", %"class.std::vector.146", %"class.std::vector.151", %"class.std::vector.156", %"class.std::vector.161", i32, [4 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload.base", [7 x i8] }
%"struct.std::_Optional_payload.base" = type { %"struct.std::_Optional_payload_base.base" }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage", i8 }>
%"union.std::_Optional_payload_base<fastgltf::AssetInfo>::_Storage" = type { %"struct.fastgltf::AssetInfo" }
%"struct.fastgltf::AssetInfo" = type { %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74", %"class.std::__cxx11::basic_string.74" }
%"class.std::vector.88" = type { %"struct.std::_Vector_base.89" }
%"struct.std::_Vector_base.89" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl" = type { %"class.std::pmr::polymorphic_allocator.90", %"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" }
%"class.std::pmr::polymorphic_allocator.90" = type { ptr }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>, std::pmr::polymorphic_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.fastgltf::OptionalWithFlagValue" = type { %union.anon }
%union.anon = type { i64 }
%"class.std::vector.91" = type { %"struct.std::_Vector_base.92" }
%"struct.std::_Vector_base.92" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Accessor, std::allocator<fastgltf::Accessor>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.96" = type { %"struct.std::_Vector_base.97" }
%"struct.std::_Vector_base.97" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Animation, std::allocator<fastgltf::Animation>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.101" = type { %"struct.std::_Vector_base.102" }
%"struct.std::_Vector_base.102" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Buffer, std::allocator<fastgltf::Buffer>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::BufferView, std::allocator<fastgltf::BufferView>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Camera, std::allocator<fastgltf::Camera>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.116" = type { %"struct.std::_Vector_base.117" }
%"struct.std::_Vector_base.117" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Image, std::allocator<fastgltf::Image>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.121" = type { %"struct.std::_Vector_base.122" }
%"struct.std::_Vector_base.122" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Light, std::allocator<fastgltf::Light>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.126" = type { %"struct.std::_Vector_base.127" }
%"struct.std::_Vector_base.127" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Material, std::allocator<fastgltf::Material>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Mesh, std::allocator<fastgltf::Mesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Node, std::allocator<fastgltf::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.141" = type { %"struct.std::_Vector_base.142" }
%"struct.std::_Vector_base.142" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Sampler, std::allocator<fastgltf::Sampler>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Scene, std::allocator<fastgltf::Scene>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Skin, std::allocator<fastgltf::Skin>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastgltf::Texture, std::allocator<fastgltf::Texture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.161" = type { %"struct.std::_Vector_base.162" }
%"struct.std::_Vector_base.162" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.fastgltf::Parser" = type { %"class.std::unique_ptr.57", %"struct.fastgltf::ParserInternalConfig", %"class.std::variant", %"class.std::shared_ptr", %"class.std::filesystem::__cxx11::path", i64 }
%"class.std::unique_ptr.57" = type { %"struct.std::__uniq_ptr_data.58" }
%"struct.std::__uniq_ptr_data.58" = type { %"class.std::__uniq_ptr_impl.59" }
%"class.std::__uniq_ptr_impl.59" = type { %"class.std::tuple.60" }
%"class.std::tuple.60" = type { %"struct.std::_Tuple_impl.61" }
%"struct.std::_Tuple_impl.61" = type { %"struct.std::_Head_base.64" }
%"struct.std::_Head_base.64" = type { ptr }
%"struct.fastgltf::ParserInternalConfig" = type { ptr, ptr, ptr, ptr, ptr, i64 }
%"class.std::variant" = type { %"struct.std::__detail::__variant::_Variant_base.base", [7 x i8] }
%"struct.std::__detail::__variant::_Variant_base.base" = type { %"struct.std::__detail::__variant::_Move_assign_base.base" }
%"struct.std::__detail::__variant::_Move_assign_base.base" = type { %"struct.std::__detail::__variant::_Copy_assign_base.base" }
%"struct.std::__detail::__variant::_Copy_assign_base.base" = type { %"struct.std::__detail::__variant::_Move_ctor_base.base" }
%"struct.std::__detail::__variant::_Move_ctor_base.base" = type { %"struct.std::__detail::__variant::_Copy_ctor_base.base" }
%"struct.std::__detail::__variant::_Copy_ctor_base.base" = type { %"struct.std::__detail::__variant::_Variant_storage.base" }
%"struct.std::__detail::__variant::_Variant_storage.base" = type { %"union.std::__detail::__variant::_Variadic_union", i8 }
%"union.std::__detail::__variant::_Variadic_union" = type { %"union.std::__detail::__variant::_Variadic_union.40" }
%"union.std::__detail::__variant::_Variadic_union.40" = type { %"union.std::__detail::__variant::_Variadic_union.42" }
%"union.std::__detail::__variant::_Variadic_union.42" = type { %"struct.std::__detail::__variant::_Uninitialized.43" }
%"struct.std::__detail::__variant::_Uninitialized.43" = type { %"struct.__gnu_cxx::__aligned_membuf" }
%"struct.__gnu_cxx::__aligned_membuf" = type { [184 x i8] }
%"class.std::filesystem::__cxx11::path" = type { %"class.std::__cxx11::basic_string", %"struct.std::filesystem::__cxx11::path::_List" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.30 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.30 = type { i64, [8 x i8] }
%"struct.std::filesystem::__cxx11::path::_List" = type { %"class.std::unique_ptr.31" }
%"class.std::unique_ptr.31" = type { %"struct.std::__uniq_ptr_data.32" }
%"struct.std::__uniq_ptr_data.32" = type { %"class.std::__uniq_ptr_impl.33" }
%"class.std::__uniq_ptr_impl.33" = type { %"class.std::tuple.34" }
%"class.std::tuple.34" = type { %"struct.std::_Tuple_impl.35" }
%"struct.std::_Tuple_impl.35" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }

@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@.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.121 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [12 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16), i64, ptr, ptr noundef, i64 noundef, i8 noundef zeroext) #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: 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) #4

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20)) #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: 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64, ptr, i64, ptr) #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: 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 i64 @_ZNKSt6vectorIN8fastgltf8MaterialESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 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)) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(580) %2) #6 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.simdjson::dom::array::iterator", align 8
  %10 = alloca %"class.simdjson::dom::array::iterator", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.simdjson::dom::element", align 8
  %13 = alloca %"class.simdjson::dom::object", align 8
  %14 = alloca %"struct.simdjson::simdjson_result", align 8
  %15 = alloca %"struct.fastgltf::Material", align 8
  %16 = alloca %"class.simdjson::dom::array", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %19 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %23 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %24 = alloca { double, i32 }, align 8
  %25 = alloca %"struct.fastgltf::NormalTextureInfo", align 8
  %26 = alloca i64, align 8
  %27 = alloca %"class.std::basic_string_view", align 8
  %28 = alloca %"struct.fastgltf::OcclusionTextureInfo", align 8
  %29 = alloca i64, align 8
  %30 = alloca %"class.std::basic_string_view", align 8
  %31 = alloca %"struct.fastgltf::TextureInfo", align 8
  %32 = alloca i64, align 8
  %33 = alloca %"class.std::basic_string_view", align 8
  %34 = alloca %"class.simdjson::dom::object", align 8
  %35 = alloca %"struct.simdjson::simdjson_result", align 8
  %36 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %37 = alloca %"struct.fastgltf::PBRData", align 8
  %38 = alloca %"class.simdjson::dom::array", align 8
  %39 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %40 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %41 = alloca i32, align 4
  %42 = alloca double, align 8
  %43 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %44 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %45 = alloca { double, i32 }, align 8
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %49 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %50 = alloca { double, i32 }, align 8
  %51 = alloca i32, align 4
  %52 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %53 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %54 = alloca { double, i32 }, align 8
  %55 = alloca %"struct.fastgltf::TextureInfo", align 8
  %56 = alloca i64, align 8
  %57 = alloca %"class.std::basic_string_view", align 8
  %58 = alloca i64, align 8
  %59 = alloca %"class.std::basic_string_view", align 8
  %60 = alloca %"class.std::basic_string_view", align 8
  %61 = alloca i32, align 4
  %62 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %63 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %64 = alloca %"class.std::basic_string_view", align 8
  %65 = alloca %"class.std::basic_string_view", align 8
  %66 = alloca %"class.std::basic_string_view", align 8
  %67 = alloca %"class.std::basic_string_view", align 8
  %68 = alloca %"class.std::basic_string_view", align 8
  %69 = alloca %"class.std::basic_string_view", align 8
  %70 = alloca double, align 8
  %71 = alloca i32, align 4
  %72 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %73 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %74 = alloca { double, i32 }, align 8
  %75 = alloca i8, align 1
  %76 = alloca i32, align 4
  %77 = alloca %"struct.simdjson::simdjson_result.420", align 4
  %78 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %79 = alloca %"class.std::basic_string_view", align 8
  %80 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %81 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %82 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %83 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %84 = alloca ptr, align 8
  %85 = alloca i32, align 4
  %86 = alloca %"class.simdjson::dom::object", align 8
  %87 = alloca i32, align 4
  %88 = alloca %"struct.simdjson::simdjson_result", align 8
  %89 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %90 = alloca %"class.simdjson::dom::object", align 8
  %91 = alloca i32, align 4
  %92 = alloca %"struct.simdjson::simdjson_result", align 8
  %93 = alloca %"struct.simdjson::simdjson_result.0", 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
  %94 = load ptr, ptr %5, align 8
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %"class.fastgltf::Asset", ptr %95, i32 0, i32 12
  %97 = load ptr, ptr %6, align 8, !tbaa !5
  %98 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %97) #7
  call void @_ZNSt6vectorIN8fastgltf8MaterialESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %99, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  %100 = load ptr, ptr %8, align 8, !tbaa !5
  %101 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %100) #7
  %102 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %9, i32 0, i32 0
  %103 = getelementptr inbounds { ptr, i64 }, ptr %102, i32 0, i32 0
  %104 = extractvalue { ptr, i64 } %101, 0
  store ptr %104, ptr %103, align 8
  %105 = getelementptr inbounds { ptr, i64 }, ptr %102, i32 0, i32 1
  %106 = extractvalue { ptr, i64 } %101, 1
  store i64 %106, ptr %105, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #7
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %107) #7
  %109 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %10, i32 0, i32 0
  %110 = getelementptr inbounds { ptr, i64 }, ptr %109, i32 0, i32 0
  %111 = extractvalue { ptr, i64 } %108, 0
  store ptr %111, ptr %110, align 8
  %112 = getelementptr inbounds { ptr, i64 }, ptr %109, i32 0, i32 1
  %113 = extractvalue { ptr, i64 } %108, 1
  store i64 %113, ptr %112, align 8
  br label %114

114:                                              ; preds = %615, %3
  %115 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  br i1 %115, label %117, label %116

116:                                              ; preds = %114
  store i32 2, ptr %11, align 4
  br label %623

117:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %118 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  %119 = getelementptr inbounds %"class.simdjson::dom::element", ptr %12, i32 0, i32 0
  %120 = getelementptr inbounds { ptr, i64 }, ptr %119, i32 0, i32 0
  %121 = extractvalue { ptr, i64 } %118, 0
  store ptr %121, ptr %120, align 8
  %122 = getelementptr inbounds { ptr, i64 }, ptr %119, i32 0, i32 1
  %123 = extractvalue { ptr, i64 } %118, 1
  store i64 %123, ptr %122, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  %124 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %14, ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  %125 = icmp ne i32 %124, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  %126 = call i1 @llvm.expect.i1(i1 %125, i1 false)
  br i1 %126, label %127, label %128

127:                                              ; preds = %117
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %609

128:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 368, ptr %15) #7
  %129 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 0
  %130 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %129, i32 0, i32 0
  call void @_ZN8fastgltf4math3vecIfLm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(16) %130, float noundef 1.000000e+00) #7
  %131 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %129, i32 0, i32 1
  store float 1.000000e+00, ptr %131, align 8, !tbaa !9
  %132 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %129, i32 0, i32 2
  store float 1.000000e+00, ptr %132, align 4, !tbaa !20
  %133 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %129, i32 0, i32 3
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #7
  %134 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %129, i32 0, i32 4
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #7
  %135 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 1
  call void @_ZNSt8optionalIN8fastgltf17NormalTextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %135) #7
  %136 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 2
  call void @_ZNSt8optionalIN8fastgltf20OcclusionTextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #7
  %137 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 3
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #7
  %138 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 4
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %138, float noundef 0.000000e+00) #7
  %139 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 5
  store i8 0, ptr %139, align 4, !tbaa !21
  %140 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 6
  store i8 0, ptr %140, align 1, !tbaa !88
  %141 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 7
  store i8 0, ptr %141, align 2, !tbaa !89
  %142 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 8
  store float 5.000000e-01, ptr %142, align 8, !tbaa !90
  %143 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 9
  store float 1.000000e+00, ptr %143, align 4, !tbaa !91
  %144 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 10
  store float 1.500000e+00, ptr %144, align 8, !tbaa !92
  %145 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 11
  store float 0.000000e+00, ptr %145, align 4, !tbaa !93
  %146 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 12
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %146) #7
  %147 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 13
  call void @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %147) #7
  %148 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 14
  call void @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #7
  %149 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 15
  call void @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %149) #7
  %150 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 16
  call void @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %150) #7
  %151 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 17
  call void @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %151) #7
  %152 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 18
  call void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %152) #7
  %153 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 19
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #7
  %154 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 20
  call void @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %154) #7
  %155 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 21
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %155) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.122) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %18, ptr noundef nonnull align 8 dereferenceable(20) %19) #7
  %156 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %18, ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  store i32 %156, ptr %17, align 4, !tbaa !94
  %157 = load i32, ptr %17, align 4, !tbaa !94
  %158 = icmp eq i32 %157, 0
  %159 = call i1 @llvm.expect.i1(i1 %158, i1 true)
  br i1 %159, label %160, label %193

160:                                              ; preds = %128
  %161 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  %162 = icmp ne i64 %161, 3
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %200

164:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !96
  br label %165

165:                                              ; preds = %187, %164
  %166 = load i32, ptr %20, align 4, !tbaa !96
  %167 = icmp ult i32 %166, 3
  br i1 %167, label %169, label %168

168:                                              ; preds = %165
  store i32 4, ptr %11, align 4
  br label %190

169:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #7
  %170 = load i32, ptr %20, align 4, !tbaa !96
  %171 = zext i32 %170 to i64
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %171) #7
  %172 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %23) #7
  store { double, i32 } %172, ptr %24, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %24, i64 12, i1 false)
  %173 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  %174 = icmp ne i32 %173, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  %175 = call i1 @llvm.expect.i1(i1 %174, i1 false)
  br i1 %175, label %176, label %177

176:                                              ; preds = %169
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %184

177:                                              ; preds = %169
  %178 = load double, ptr %21, align 8, !tbaa !98
  %179 = fptrunc double %178 to float
  %180 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 4
  %181 = load i32, ptr %20, align 4, !tbaa !96
  %182 = zext i32 %181 to i64
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %180, i64 noundef %182) #7
  store float %179, ptr %183, align 4, !tbaa !100
  store i32 0, ptr %11, align 4
  br label %184

184:                                              ; preds = %177, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %185 = load i32, ptr %11, align 4
  switch i32 %185, label %190 [
    i32 0, label %186
  ]

186:                                              ; preds = %184
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %20, align 4, !tbaa !96
  %189 = add i32 %188, 1
  store i32 %189, ptr %20, align 4, !tbaa !96
  br label %165, !llvm.loop !101

190:                                              ; preds = %184, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %191 = load i32, ptr %11, align 4
  switch i32 %191, label %200 [
    i32 4, label %192
  ]

192:                                              ; preds = %190
  br label %199

193:                                              ; preds = %128
  %194 = load i32, ptr %17, align 4, !tbaa !94
  %195 = icmp ne i32 %194, 20
  %196 = call i1 @llvm.expect.i1(i1 %195, i1 false)
  br i1 %196, label %197, label %198

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

198:                                              ; preds = %193
  br label %199

199:                                              ; preds = %198, %192
  store i32 0, ptr %11, align 4
  br label %200

200:                                              ; preds = %199, %197, %190, %163
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  %201 = load i32, ptr %11, align 4
  switch i32 %201, label %608 [
    i32 0, label %202
  ]

202:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  %203 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %25, i32 0, i32 0
  store i64 0, ptr %203, align 8, !tbaa !103
  %204 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %25, i32 0, i32 1
  store i64 0, ptr %204, align 8, !tbaa !111
  %205 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %25, i32 0, i32 2
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %205) #7
  %206 = getelementptr inbounds %"struct.fastgltf::NormalTextureInfo", ptr %25, i32 0, i32 1
  store float 1.000000e+00, ptr %206, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef @.str.121) #7
  %207 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %208 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %207, i32 0, i32 5
  %209 = load i64, ptr %208, align 8, !tbaa !114
  %210 = getelementptr inbounds { i64, ptr }, ptr %27, i32 0, i32 0
  %211 = load i64, ptr %210, align 8
  %212 = getelementptr inbounds { i64, ptr }, ptr %27, i32 0, i32 1
  %213 = load ptr, ptr %212, align 8
  %214 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 %211, ptr %213, ptr noundef %25, i64 noundef %209, i8 noundef zeroext 1) #7
  store i64 %214, ptr %26, align 8, !tbaa !145
  %215 = load i64, ptr %26, align 8, !tbaa !145
  %216 = icmp eq i64 %215, 0
  %217 = call i1 @llvm.expect.i1(i1 %216, i1 true)
  br i1 %217, label %218, label %221

218:                                              ; preds = %202
  %219 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 1
  %220 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalIN8fastgltf17NormalTextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(40) %219, ptr noundef nonnull align 8 dereferenceable(28) %25) #7
  br label %227

221:                                              ; preds = %202
  %222 = load i64, ptr %26, align 8, !tbaa !145
  %223 = icmp ne i64 %222, 8
  br i1 %223, label %224, label %226

224:                                              ; preds = %221
  %225 = load i64, ptr %26, align 8, !tbaa !145
  store i64 %225, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %228

226:                                              ; preds = %221
  br label %227

227:                                              ; preds = %226, %218
  store i32 0, ptr %11, align 4
  br label %228

228:                                              ; preds = %227, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  %229 = load i32, ptr %11, align 4
  switch i32 %229, label %231 [
    i32 0, label %230
  ]

230:                                              ; preds = %228
  store i32 0, ptr %11, align 4
  br label %231

231:                                              ; preds = %230, %228
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  %232 = load i32, ptr %11, align 4
  switch i32 %232, label %608 [
    i32 0, label %233
  ]

233:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  %234 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %28, i32 0, i32 0
  store i64 0, ptr %234, align 8, !tbaa !103
  %235 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %28, i32 0, i32 1
  store i64 0, ptr %235, align 8, !tbaa !111
  %236 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %28, i32 0, i32 2
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %236) #7
  %237 = getelementptr inbounds %"struct.fastgltf::OcclusionTextureInfo", ptr %28, i32 0, i32 1
  store float 1.000000e+00, ptr %237, align 8, !tbaa !147
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef @.str.123) #7
  %238 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %239 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %238, i32 0, i32 5
  %240 = load i64, ptr %239, align 8, !tbaa !114
  %241 = getelementptr inbounds { i64, ptr }, ptr %30, i32 0, i32 0
  %242 = load i64, ptr %241, align 8
  %243 = getelementptr inbounds { i64, ptr }, ptr %30, i32 0, i32 1
  %244 = load ptr, ptr %243, align 8
  %245 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 %242, ptr %244, ptr noundef %28, i64 noundef %240, i8 noundef zeroext 2) #7
  store i64 %245, ptr %29, align 8, !tbaa !145
  %246 = load i64, ptr %29, align 8, !tbaa !145
  %247 = icmp eq i64 %246, 0
  %248 = call i1 @llvm.expect.i1(i1 %247, i1 true)
  br i1 %248, label %249, label %252

249:                                              ; preds = %233
  %250 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 2
  %251 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalIN8fastgltf20OcclusionTextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(40) %250, ptr noundef nonnull align 8 dereferenceable(28) %28) #7
  br label %258

252:                                              ; preds = %233
  %253 = load i64, ptr %29, align 8, !tbaa !145
  %254 = icmp ne i64 %253, 8
  br i1 %254, label %255, label %257

255:                                              ; preds = %252
  %256 = load i64, ptr %29, align 8, !tbaa !145
  store i64 %256, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %259

257:                                              ; preds = %252
  br label %258

258:                                              ; preds = %257, %249
  store i32 0, ptr %11, align 4
  br label %259

259:                                              ; preds = %258, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  %260 = load i32, ptr %11, align 4
  switch i32 %260, label %262 [
    i32 0, label %261
  ]

261:                                              ; preds = %259
  store i32 0, ptr %11, align 4
  br label %262

262:                                              ; preds = %261, %259
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  %263 = load i32, ptr %11, align 4
  switch i32 %263, label %608 [
    i32 0, label %264
  ]

264:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  %265 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %31, i32 0, i32 0
  store i64 0, ptr %265, align 8, !tbaa !103
  %266 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %31, i32 0, i32 1
  store i64 0, ptr %266, align 8, !tbaa !111
  %267 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %31, i32 0, i32 2
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %267) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef @.str.124) #7
  %268 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %269 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %268, i32 0, i32 5
  %270 = load i64, ptr %269, align 8, !tbaa !114
  %271 = getelementptr inbounds { i64, ptr }, ptr %33, i32 0, i32 0
  %272 = load i64, ptr %271, align 8
  %273 = getelementptr inbounds { i64, ptr }, ptr %33, i32 0, i32 1
  %274 = load ptr, ptr %273, align 8
  %275 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 %272, ptr %274, ptr noundef %31, i64 noundef %270, i8 noundef zeroext 0) #7
  store i64 %275, ptr %32, align 8, !tbaa !145
  %276 = load i64, ptr %32, align 8, !tbaa !145
  %277 = icmp eq i64 %276, 0
  %278 = call i1 @llvm.expect.i1(i1 %277, i1 true)
  br i1 %278, label %279, label %282

279:                                              ; preds = %264
  %280 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 3
  %281 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  br label %288

282:                                              ; preds = %264
  %283 = load i64, ptr %32, align 8, !tbaa !145
  %284 = icmp ne i64 %283, 8
  br i1 %284, label %285, label %287

285:                                              ; preds = %282
  %286 = load i64, ptr %32, align 8, !tbaa !145
  store i64 %286, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %289

287:                                              ; preds = %282
  br label %288

288:                                              ; preds = %287, %279
  store i32 0, ptr %11, align 4
  br label %289

289:                                              ; preds = %288, %285
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  %290 = load i32, ptr %11, align 4
  switch i32 %290, label %292 [
    i32 0, label %291
  ]

291:                                              ; preds = %289
  store i32 0, ptr %11, align 4
  br label %292

292:                                              ; preds = %291, %289
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  %293 = load i32, ptr %11, align 4
  switch i32 %293, label %608 [
    i32 0, label %294
  ]

294:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.125) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %35, ptr noundef nonnull align 8 dereferenceable(20) %36) #7
  %295 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %35, ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  %296 = icmp eq i32 %295, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  %297 = call i1 @llvm.expect.i1(i1 %296, i1 true)
  br i1 %297, label %298, label %428

298:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 88, ptr %37) #7
  %299 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 0
  call void @_ZN8fastgltf4math3vecIfLm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(16) %299, float noundef 1.000000e+00) #7
  %300 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 1
  store float 1.000000e+00, ptr %300, align 8, !tbaa !9
  %301 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 2
  store float 1.000000e+00, ptr %301, align 4, !tbaa !20
  %302 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 3
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #7
  %303 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 4
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %40, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef @.str.126) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %39, ptr noundef nonnull align 8 dereferenceable(20) %40) #7
  %304 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %39, ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  %305 = icmp eq i32 %304, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #7
  %306 = call i1 @llvm.expect.i1(i1 %305, i1 true)
  br i1 %306, label %307, label %336

307:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  store i32 0, ptr %41, align 4, !tbaa !96
  br label %308

308:                                              ; preds = %330, %307
  %309 = load i32, ptr %41, align 4, !tbaa !96
  %310 = icmp ult i32 %309, 4
  br i1 %310, label %312, label %311

311:                                              ; preds = %308
  store i32 7, ptr %11, align 4
  br label %333

312:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #7
  %313 = load i32, ptr %41, align 4, !tbaa !96
  %314 = zext i32 %313 to i64
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %38, i64 noundef %314) #7
  %315 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %44) #7
  store { double, i32 } %315, ptr %45, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %45, i64 12, i1 false)
  %316 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  %317 = icmp ne i32 %316, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #7
  %318 = call i1 @llvm.expect.i1(i1 %317, i1 false)
  br i1 %318, label %319, label %320

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

320:                                              ; preds = %312
  %321 = load double, ptr %42, align 8, !tbaa !98
  %322 = fptrunc double %321 to float
  %323 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 0
  %324 = load i32, ptr %41, align 4, !tbaa !96
  %325 = zext i32 %324 to i64
  %326 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %323, i64 noundef %325) #7
  store float %322, ptr %326, align 4, !tbaa !100
  store i32 0, ptr %11, align 4
  br label %327

327:                                              ; preds = %320, %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %328 = load i32, ptr %11, align 4
  switch i32 %328, label %333 [
    i32 0, label %329
  ]

329:                                              ; preds = %327
  br label %330

330:                                              ; preds = %329
  %331 = load i32, ptr %41, align 4, !tbaa !96
  %332 = add i32 %331, 1
  store i32 %332, ptr %41, align 4, !tbaa !96
  br label %308, !llvm.loop !149

333:                                              ; preds = %327, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  %334 = load i32, ptr %11, align 4
  switch i32 %334, label %425 [
    i32 7, label %335
  ]

335:                                              ; preds = %333
  br label %336

336:                                              ; preds = %335, %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef @.str.127) #7
  %337 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %49) #7
  store { double, i32 } %337, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %48, ptr align 8 %50, i64 12, i1 false)
  %338 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %48, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #7
  store i32 %338, ptr %47, align 4, !tbaa !94
  %339 = load i32, ptr %47, align 4, !tbaa !94
  %340 = icmp eq i32 %339, 0
  %341 = call i1 @llvm.expect.i1(i1 %340, i1 true)
  br i1 %341, label %342, label %346

342:                                              ; preds = %336
  %343 = load double, ptr %46, align 8, !tbaa !98
  %344 = fptrunc double %343 to float
  %345 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 1
  store float %344, ptr %345, align 8, !tbaa !9
  br label %351

346:                                              ; preds = %336
  %347 = load i32, ptr %47, align 4, !tbaa !94
  %348 = icmp ne i32 %347, 20
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %352

350:                                              ; preds = %346
  br label %351

351:                                              ; preds = %350, %342
  store i32 0, ptr %11, align 4
  br label %352

352:                                              ; preds = %351, %349
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  %353 = load i32, ptr %11, align 4
  switch i32 %353, label %424 [
    i32 0, label %354
  ]

354:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef @.str.128) #7
  %355 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %53) #7
  store { double, i32 } %355, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %54, i64 12, i1 false)
  %356 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %52, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  store i32 %356, ptr %51, align 4, !tbaa !94
  %357 = load i32, ptr %51, align 4, !tbaa !94
  %358 = icmp eq i32 %357, 0
  %359 = call i1 @llvm.expect.i1(i1 %358, i1 true)
  br i1 %359, label %360, label %364

360:                                              ; preds = %354
  %361 = load double, ptr %46, align 8, !tbaa !98
  %362 = fptrunc double %361 to float
  %363 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 2
  store float %362, ptr %363, align 4, !tbaa !20
  br label %369

364:                                              ; preds = %354
  %365 = load i32, ptr %51, align 4, !tbaa !94
  %366 = icmp ne i32 %365, 20
  br i1 %366, label %367, label %368

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

368:                                              ; preds = %364
  br label %369

369:                                              ; preds = %368, %360
  store i32 0, ptr %11, align 4
  br label %370

370:                                              ; preds = %369, %367
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  %371 = load i32, ptr %11, align 4
  switch i32 %371, label %424 [
    i32 0, label %372
  ]

372:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef @.str.129) #7
  %373 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %374 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %373, i32 0, i32 5
  %375 = load i64, ptr %374, align 8, !tbaa !114
  %376 = getelementptr inbounds { i64, ptr }, ptr %57, i32 0, i32 0
  %377 = load i64, ptr %376, align 8
  %378 = getelementptr inbounds { i64, ptr }, ptr %57, i32 0, i32 1
  %379 = load ptr, ptr %378, align 8
  %380 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 %377, ptr %379, ptr noundef %55, i64 noundef %375, i8 noundef zeroext 0) #7
  store i64 %380, ptr %56, align 8, !tbaa !145
  %381 = load i64, ptr %56, align 8, !tbaa !145
  %382 = icmp eq i64 %381, 0
  %383 = call i1 @llvm.expect.i1(i1 %382, i1 true)
  br i1 %383, label %384, label %387

384:                                              ; preds = %372
  %385 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 3
  %386 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %385, ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  br label %393

387:                                              ; preds = %372
  %388 = load i64, ptr %56, align 8, !tbaa !145
  %389 = icmp ne i64 %388, 8
  br i1 %389, label %390, label %392

390:                                              ; preds = %387
  %391 = load i64, ptr %56, align 8, !tbaa !145
  store i64 %391, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %394

392:                                              ; preds = %387
  br label %393

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

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

396:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef @.str.130) #7
  %397 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %398 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %397, i32 0, i32 5
  %399 = load i64, ptr %398, align 8, !tbaa !114
  %400 = getelementptr inbounds { i64, ptr }, ptr %59, i32 0, i32 0
  %401 = load i64, ptr %400, align 8
  %402 = getelementptr inbounds { i64, ptr }, ptr %59, i32 0, i32 1
  %403 = load ptr, ptr %402, align 8
  %404 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 %401, ptr %403, ptr noundef %55, i64 noundef %399, i8 noundef zeroext 0) #7
  store i64 %404, ptr %58, align 8, !tbaa !145
  %405 = load i64, ptr %58, align 8, !tbaa !145
  %406 = icmp eq i64 %405, 0
  %407 = call i1 @llvm.expect.i1(i1 %406, i1 true)
  br i1 %407, label %408, label %411

408:                                              ; preds = %396
  %409 = getelementptr inbounds %"struct.fastgltf::PBRData", ptr %37, i32 0, i32 4
  %410 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %409, ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  br label %417

411:                                              ; preds = %396
  %412 = load i64, ptr %58, align 8, !tbaa !145
  %413 = icmp ne i64 %412, 8
  br i1 %413, label %414, label %416

414:                                              ; preds = %411
  %415 = load i64, ptr %58, align 8, !tbaa !145
  store i64 %415, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %418

416:                                              ; preds = %411
  br label %417

417:                                              ; preds = %416, %408
  store i32 0, ptr %11, align 4
  br label %418

418:                                              ; preds = %417, %414
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  %419 = load i32, ptr %11, align 4
  switch i32 %419, label %423 [
    i32 0, label %420
  ]

420:                                              ; preds = %418
  %421 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 0
  %422 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN8fastgltf7PBRDataaSEOS0_(ptr noundef nonnull align 8 dereferenceable(88) %421, ptr noundef nonnull align 8 dereferenceable(88) %37) #7
  store i32 0, ptr %11, align 4
  br label %423

423:                                              ; preds = %420, %418, %394
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #7
  br label %424

424:                                              ; preds = %423, %370, %352
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %425

425:                                              ; preds = %424, %333
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #7
  call void @_ZN8fastgltf7PBRDataD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr %37) #7
  %426 = load i32, ptr %11, align 4
  switch i32 %426, label %607 [
    i32 0, label %427
  ]

427:                                              ; preds = %425
  br label %428

428:                                              ; preds = %427, %294
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %63, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.131) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %62, ptr noundef nonnull align 8 dereferenceable(20) %63) #7
  %429 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %62, ptr noundef nonnull align 8 dereferenceable(16) %60) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #7
  store i32 %429, ptr %61, align 4, !tbaa !94
  %430 = load i32, ptr %61, align 4, !tbaa !94
  %431 = icmp eq i32 %430, 0
  %432 = call i1 @llvm.expect.i1(i1 %431, i1 true)
  br i1 %432, label %433, label %473

433:                                              ; preds = %428
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !150
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef @.str.132) #7
  %434 = getelementptr inbounds { i64, ptr }, ptr %64, i32 0, i32 0
  %435 = load i64, ptr %434, align 8
  %436 = getelementptr inbounds { i64, ptr }, ptr %64, i32 0, i32 1
  %437 = load ptr, ptr %436, align 8
  %438 = getelementptr inbounds { i64, ptr }, ptr %65, i32 0, i32 0
  %439 = load i64, ptr %438, align 8
  %440 = getelementptr inbounds { i64, ptr }, ptr %65, i32 0, i32 1
  %441 = load ptr, ptr %440, align 8
  %442 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %435, ptr %437, i64 %439, ptr %441) #7
  br i1 %442, label %443, label %445

443:                                              ; preds = %433
  %444 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 5
  store i8 0, ptr %444, align 4, !tbaa !21
  br label %472

445:                                              ; preds = %433
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !150
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef @.str.133) #7
  %446 = getelementptr inbounds { i64, ptr }, ptr %66, i32 0, i32 0
  %447 = load i64, ptr %446, align 8
  %448 = getelementptr inbounds { i64, ptr }, ptr %66, i32 0, i32 1
  %449 = load ptr, ptr %448, align 8
  %450 = getelementptr inbounds { i64, ptr }, ptr %67, i32 0, i32 0
  %451 = load i64, ptr %450, align 8
  %452 = getelementptr inbounds { i64, ptr }, ptr %67, i32 0, i32 1
  %453 = load ptr, ptr %452, align 8
  %454 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %447, ptr %449, i64 %451, ptr %453) #7
  br i1 %454, label %455, label %457

455:                                              ; preds = %445
  %456 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 5
  store i8 1, ptr %456, align 4, !tbaa !21
  br label %471

457:                                              ; preds = %445
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %68, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !150
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef @.str.134) #7
  %458 = getelementptr inbounds { i64, ptr }, ptr %68, i32 0, i32 0
  %459 = load i64, ptr %458, align 8
  %460 = getelementptr inbounds { i64, ptr }, ptr %68, i32 0, i32 1
  %461 = load ptr, ptr %460, align 8
  %462 = getelementptr inbounds { i64, ptr }, ptr %69, i32 0, i32 0
  %463 = load i64, ptr %462, align 8
  %464 = getelementptr inbounds { i64, ptr }, ptr %69, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8
  %466 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %459, ptr %461, i64 %463, ptr %465) #7
  br i1 %466, label %467, label %469

467:                                              ; preds = %457
  %468 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 5
  store i8 2, ptr %468, align 4, !tbaa !21
  br label %470

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

470:                                              ; preds = %467
  br label %471

471:                                              ; preds = %470, %455
  br label %472

472:                                              ; preds = %471, %443
  br label %479

473:                                              ; preds = %428
  %474 = load i32, ptr %61, align 4, !tbaa !94
  %475 = icmp ne i32 %474, 20
  %476 = call i1 @llvm.expect.i1(i1 %475, i1 false)
  br i1 %476, label %477, label %478

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

478:                                              ; preds = %473
  br label %479

479:                                              ; preds = %478, %472
  store i32 0, ptr %11, align 4
  br label %480

480:                                              ; preds = %479, %477, %469
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  %481 = load i32, ptr %11, align 4
  switch i32 %481, label %606 [
    i32 0, label %482
  ]

482:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %73) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.135) #7
  %483 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %73) #7
  store { double, i32 } %483, ptr %74, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %74, i64 12, i1 false)
  %484 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %72, ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #7
  store i32 %484, ptr %71, align 4, !tbaa !94
  %485 = load i32, ptr %71, align 4, !tbaa !94
  %486 = icmp eq i32 %485, 0
  %487 = call i1 @llvm.expect.i1(i1 %486, i1 true)
  br i1 %487, label %488, label %492

488:                                              ; preds = %482
  %489 = load double, ptr %70, align 8, !tbaa !98
  %490 = fptrunc double %489 to float
  %491 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 8
  store float %490, ptr %491, align 8, !tbaa !90
  br label %498

492:                                              ; preds = %482
  %493 = load i32, ptr %71, align 4, !tbaa !94
  %494 = icmp ne i32 %493, 20
  %495 = call i1 @llvm.expect.i1(i1 %494, i1 false)
  br i1 %495, label %496, label %497

496:                                              ; preds = %492
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %499

497:                                              ; preds = %492
  br label %498

498:                                              ; preds = %497, %488
  store i32 0, ptr %11, align 4
  br label %499

499:                                              ; preds = %498, %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  %500 = load i32, ptr %11, align 4
  switch i32 %500, label %605 [
    i32 0, label %501
  ]

501:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.136) #7
  %502 = call i64 @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE8get_boolEv(ptr noundef nonnull align 8 dereferenceable(20) %78) #7
  %503 = getelementptr inbounds %"struct.simdjson::simdjson_result.420", ptr %77, i32 0, i32 0
  %504 = getelementptr inbounds %"struct.simdjson::internal::simdjson_result_base.421", ptr %503, i32 0, i32 0
  store i64 %502, ptr %504, align 4
  %505 = call noundef i32 @_ZNO8simdjson15simdjson_resultIbE3getERb(ptr noundef nonnull align 4 dereferenceable(8) %77, ptr noundef nonnull align 1 dereferenceable(1) %75) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  store i32 %505, ptr %76, align 4, !tbaa !94
  %506 = load i32, ptr %76, align 4, !tbaa !94
  %507 = icmp eq i32 %506, 0
  %508 = call i1 @llvm.expect.i1(i1 %507, i1 true)
  br i1 %508, label %509, label %514

509:                                              ; preds = %501
  %510 = load i8, ptr %75, align 1, !tbaa !152, !range !153, !noundef !154
  %511 = trunc i8 %510 to i1
  %512 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 6
  %513 = zext i1 %511 to i8
  store i8 %513, ptr %512, align 1, !tbaa !88
  br label %520

514:                                              ; preds = %501
  %515 = load i32, ptr %76, align 4, !tbaa !94
  %516 = icmp ne i32 %515, 20
  %517 = call i1 @llvm.expect.i1(i1 %516, i1 false)
  br i1 %517, label %518, label %519

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

519:                                              ; preds = %514
  br label %520

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

521:                                              ; preds = %520, %518
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  %522 = load i32, ptr %11, align 4
  switch i32 %522, label %604 [
    i32 0, label %523
  ]

523:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.49) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.409") align 8 %80, ptr noundef nonnull align 8 dereferenceable(20) %81) #7
  %524 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %80, ptr noundef nonnull align 8 dereferenceable(16) %79) #7
  %525 = icmp eq i32 %524, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #7
  br i1 %525, label %526, label %542

526:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 40, ptr %82) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %527 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 3
  %528 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %527) #7
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef %528) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %82, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %529 unwind label %533

529:                                              ; preds = %526
  %530 = getelementptr inbounds %"struct.fastgltf::Material", ptr %15, i32 0, i32 21
  %531 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %530, ptr noundef nonnull align 8 dereferenceable(40) %82)
          to label %532 unwind label %537

532:                                              ; preds = %529
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %82) #7
  br label %542

533:                                              ; preds = %526
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %84, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %85, align 4
  br label %541

537:                                              ; preds = %529
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %84, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %85, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %82) #7
  br label %541

541:                                              ; preds = %537, %533
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %82) #7
  br label %622

542:                                              ; preds = %532, %523
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %89, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.5) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %88, ptr noundef nonnull align 8 dereferenceable(20) %89) #7
  %543 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %88, ptr noundef nonnull align 8 dereferenceable(16) %86) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #7
  store i32 %543, ptr %87, align 4, !tbaa !94
  %544 = load i32, ptr %87, align 4, !tbaa !94
  %545 = icmp eq i32 %544, 0
  br i1 %545, label %546, label %553

546:                                              ; preds = %542
  %547 = invoke noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(312) %94, ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 8 dereferenceable(368) %15)
          to label %548 unwind label %549

548:                                              ; preds = %546
  br label %559

549:                                              ; preds = %546
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %84, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %85, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  br label %621

553:                                              ; preds = %542
  %554 = load i32, ptr %87, align 4, !tbaa !94
  %555 = icmp ne i32 %554, 20
  %556 = call i1 @llvm.expect.i1(i1 %555, i1 false)
  br i1 %556, label %557, label %558

557:                                              ; preds = %553
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %560

558:                                              ; preds = %553
  br label %559

559:                                              ; preds = %558, %548
  store i32 0, ptr %11, align 4
  br label %560

560:                                              ; preds = %559, %557
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  %561 = load i32, ptr %11, align 4
  switch i32 %561, label %603 [
    i32 0, label %562
  ]

562:                                              ; preds = %560
  %563 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %564 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %563, i32 0, i32 3
  %565 = load ptr, ptr %564, align 8, !tbaa !155
  %566 = icmp ne ptr %565, null
  br i1 %566, label %567, label %598

567:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %92) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %93) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %93, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef @.str.48) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %92, ptr noundef nonnull align 8 dereferenceable(20) %93) #7
  %568 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %92, ptr noundef nonnull align 8 dereferenceable(16) %90) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #7
  store i32 %568, ptr %91, align 4, !tbaa !94
  %569 = load i32, ptr %91, align 4, !tbaa !94
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %586

571:                                              ; preds = %567
  %572 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %573 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %572, i32 0, i32 3
  %574 = load ptr, ptr %573, align 8, !tbaa !155
  %575 = load ptr, ptr %7, align 8, !tbaa !5
  %576 = getelementptr inbounds %"class.fastgltf::Asset", ptr %575, i32 0, i32 12
  %577 = call noundef i64 @_ZNKSt6vectorIN8fastgltf8MaterialESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %576) #7
  %578 = getelementptr inbounds %"class.fastgltf::Parser", ptr %94, i32 0, i32 1
  %579 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %578, i32 0, i32 4
  %580 = load ptr, ptr %579, align 8, !tbaa !156
  invoke void %574(ptr noundef %90, i64 noundef %577, i32 noundef 256, ptr noundef %580)
          to label %581 unwind label %582

581:                                              ; preds = %571
  br label %591

582:                                              ; preds = %571
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %84, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %85, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #7
  br label %621

586:                                              ; preds = %567
  %587 = load i32, ptr %91, align 4, !tbaa !94
  %588 = icmp ne i32 %587, 20
  br i1 %588, label %589, label %590

589:                                              ; preds = %586
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %592

590:                                              ; preds = %586
  br label %591

591:                                              ; preds = %590, %581
  store i32 0, ptr %11, align 4
  br label %592

592:                                              ; preds = %591, %589
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  %593 = load i32, ptr %11, align 4
  switch i32 %593, label %595 [
    i32 0, label %594
  ]

594:                                              ; preds = %592
  store i32 0, ptr %11, align 4
  br label %595

595:                                              ; preds = %594, %592
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #7
  %596 = load i32, ptr %11, align 4
  switch i32 %596, label %603 [
    i32 0, label %597
  ]

597:                                              ; preds = %595
  br label %598

598:                                              ; preds = %597, %562
  %599 = load ptr, ptr %7, align 8, !tbaa !5
  %600 = getelementptr inbounds %"class.fastgltf::Asset", ptr %599, i32 0, i32 12
  %601 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNSt6vectorIN8fastgltf8MaterialESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %600, ptr noundef nonnull align 8 dereferenceable(368) %15)
          to label %602 unwind label %617

602:                                              ; preds = %598
  store i32 0, ptr %11, align 4
  br label %603

603:                                              ; preds = %602, %595, %560
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #7
  br label %604

604:                                              ; preds = %603, %521
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  br label %605

605:                                              ; preds = %604, %499
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %606

606:                                              ; preds = %605, %480
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  br label %607

607:                                              ; preds = %606, %425
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  br label %608

608:                                              ; preds = %607, %292, %262, %231, %200
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %15) #7
  call void @llvm.lifetime.end.p0(i64 368, ptr %15) #7
  br label %609

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

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

612:                                              ; preds = %611, %609
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  %613 = load i32, ptr %11, align 4
  switch i32 %613, label %623 [
    i32 0, label %614
  ]

614:                                              ; preds = %612
  br label %615

615:                                              ; preds = %614
  %616 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br label %114

617:                                              ; preds = %598
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %84, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %85, align 4
  br label %621

621:                                              ; preds = %617, %582, %549
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #7
  br label %622

622:                                              ; preds = %621, %541
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %15) #7
  call void @llvm.lifetime.end.p0(i64 368, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %628

623:                                              ; preds = %612, %116
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  %624 = load i32, ptr %11, align 4
  switch i32 %624, label %633 [
    i32 2, label %625
    i32 1, label %626
  ]

625:                                              ; preds = %623
  store i64 0, ptr %4, align 8
  br label %626

626:                                              ; preds = %625, %623
  %627 = load i64, ptr %4, align 8
  ret i64 %627

628:                                              ; preds = %622
  %629 = load ptr, ptr %84, align 8
  %630 = load i32, ptr %85, align 4
  %631 = insertvalue { ptr, i32 } poison, ptr %629, 0
  %632 = insertvalue { ptr, i32 } %631, i32 %630, 1
  resume { ptr, i32 } %632

633:                                              ; preds = %623
  unreachable
}

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local i64 @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE8get_boolEv(ptr noundef nonnull align 8 dereferenceable(20)) #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNO8simdjson15simdjson_resultIbE3getERb(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #3 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: 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: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(368)) #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN8fastgltf7PBRDataaSEOS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) #5 align 2

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #5 = { 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 #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 = { 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, !13, i64 16}
!10 = !{!"_ZTSN8fastgltf7PBRDataE", !11, i64 0, !13, i64 16, !13, i64 20, !14, i64 24, !14, i64 56}
!11 = !{!"_ZTSN8fastgltf4math3vecIfLm4EEE", !12, i64 0}
!12 = !{!"_ZTSSt5arrayIfLm4EE", !7, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!"_ZTSSt8optionalIN8fastgltf11TextureInfoEE", !15, i64 0}
!15 = !{!"_ZTSSt14_Optional_baseIN8fastgltf11TextureInfoELb0ELb0EE", !16, i64 0}
!16 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf11TextureInfoELb0ELb0ELb0EE", !17, i64 0}
!17 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf11TextureInfoELb1ELb0ELb0EE", !18, i64 0}
!18 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf11TextureInfoEE", !7, i64 0, !19, i64 24}
!19 = !{!"bool", !7, i64 0}
!20 = !{!10, !13, i64 20}
!21 = !{!22, !35, i64 212}
!22 = !{!"_ZTSN8fastgltf8MaterialE", !10, i64 0, !23, i64 88, !28, i64 128, !14, i64 168, !33, i64 200, !35, i64 212, !19, i64 213, !19, i64 214, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !36, i64 232, !42, i64 240, !48, i64 248, !54, i64 256, !60, i64 264, !66, i64 272, !72, i64 280, !14, i64 288, !78, i64 320, !84, i64 328}
!23 = !{!"_ZTSSt8optionalIN8fastgltf17NormalTextureInfoEE", !24, i64 0}
!24 = !{!"_ZTSSt14_Optional_baseIN8fastgltf17NormalTextureInfoELb0ELb0EE", !25, i64 0}
!25 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf17NormalTextureInfoELb0ELb0ELb0EE", !26, i64 0}
!26 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf17NormalTextureInfoELb1ELb0ELb0EE", !27, i64 0}
!27 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf17NormalTextureInfoEE", !7, i64 0, !19, i64 32}
!28 = !{!"_ZTSSt8optionalIN8fastgltf20OcclusionTextureInfoEE", !29, i64 0}
!29 = !{!"_ZTSSt14_Optional_baseIN8fastgltf20OcclusionTextureInfoELb0ELb0EE", !30, i64 0}
!30 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf20OcclusionTextureInfoELb0ELb0ELb0EE", !31, i64 0}
!31 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf20OcclusionTextureInfoELb1ELb0ELb0EE", !32, i64 0}
!32 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf20OcclusionTextureInfoEE", !7, i64 0, !19, i64 32}
!33 = !{!"_ZTSN8fastgltf4math3vecIfLm3EEE", !34, i64 0}
!34 = !{!"_ZTSSt5arrayIfLm3EE", !7, i64 0}
!35 = !{!"_ZTSN8fastgltf9AlphaModeE", !7, i64 0}
!36 = !{!"_ZTSSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_ELb1ELb1EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt5tupleIJPN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEE", !40, i64 0}
!40 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEE", !41, i64 0}
!41 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf18MaterialAnisotropyELb0EE", !6, i64 0}
!42 = !{!"_ZTSSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_ELb1ELb1EE", !44, i64 0}
!44 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt5tupleIJPN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEE", !46, i64 0}
!46 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf17MaterialClearcoatELb0EE", !6, i64 0}
!48 = !{!"_ZTSSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EE", !49, i64 0}
!49 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_ELb1ELb1EE", !50, i64 0}
!50 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt5tupleIJPN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEE", !52, i64 0}
!52 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEE", !53, i64 0}
!53 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf19MaterialIridescenceELb0EE", !6, i64 0}
!54 = !{!"_ZTSSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf13MaterialSheenESt14default_deleteIS1_ELb1ELb1EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf13MaterialSheenESt14default_deleteIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt5tupleIJPN8fastgltf13MaterialSheenESt14default_deleteIS1_EEE", !58, i64 0}
!58 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf13MaterialSheenESt14default_deleteIS1_EEE", !59, i64 0}
!59 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf13MaterialSheenELb0EE", !6, i64 0}
!60 = !{!"_ZTSSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf16MaterialSpecularESt14default_deleteIS1_ELb1ELb1EE", !62, i64 0}
!62 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt5tupleIJPN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEE", !64, i64 0}
!64 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEE", !65, i64 0}
!65 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf16MaterialSpecularELb0EE", !6, i64 0}
!66 = !{!"_ZTSSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EE", !67, i64 0}
!67 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_ELb1ELb1EE", !68, i64 0}
!68 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt5tupleIJPN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEE", !70, i64 0}
!70 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEE", !71, i64 0}
!71 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf20MaterialTransmissionELb0EE", !6, i64 0}
!72 = !{!"_ZTSSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf14MaterialVolumeESt14default_deleteIS1_ELb1ELb1EE", !74, i64 0}
!74 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EE", !75, i64 0}
!75 = !{!"_ZTSSt5tupleIJPN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEE", !76, i64 0}
!76 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEE", !77, i64 0}
!77 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf14MaterialVolumeELb0EE", !6, i64 0}
!78 = !{!"_ZTSSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EE", !79, i64 0}
!79 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_ELb1ELb1EE", !80, i64 0}
!80 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EE", !81, i64 0}
!81 = !{!"_ZTSSt5tupleIJPN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEE", !82, i64 0}
!82 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEE", !83, i64 0}
!83 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf22MaterialPackedTexturesELb0EE", !6, i64 0}
!84 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEE", !85, i64 0, !87, i64 16, !7, i64 24}
!85 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE12_Alloc_hiderE", !86, i64 0, !6, i64 8}
!86 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIcEE", !6, i64 0}
!87 = !{!"long", !7, i64 0}
!88 = !{!22, !19, i64 213}
!89 = !{!22, !19, i64 214}
!90 = !{!22, !13, i64 216}
!91 = !{!22, !13, i64 220}
!92 = !{!22, !13, i64 224}
!93 = !{!22, !13, i64 228}
!94 = !{!95, !95, i64 0}
!95 = !{!"_ZTSN8simdjson10error_codeE", !7, i64 0}
!96 = !{!97, !97, i64 0}
!97 = !{!"int", !7, i64 0}
!98 = !{!99, !99, i64 0}
!99 = !{!"double", !7, i64 0}
!100 = !{!13, !13, i64 0}
!101 = distinct !{!101, !102}
!102 = !{!"llvm.loop.mustprogress"}
!103 = !{!104, !87, i64 0}
!104 = !{!"_ZTSN8fastgltf11TextureInfoE", !87, i64 0, !87, i64 8, !105, i64 16}
!105 = !{!"_ZTSSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf16TextureTransformESt14default_deleteIS1_ELb1ELb1EE", !107, i64 0}
!107 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf16TextureTransformESt14default_deleteIS1_EE", !108, i64 0}
!108 = !{!"_ZTSSt5tupleIJPN8fastgltf16TextureTransformESt14default_deleteIS1_EEE", !109, i64 0}
!109 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf16TextureTransformESt14default_deleteIS1_EEE", !110, i64 0}
!110 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf16TextureTransformELb0EE", !6, i64 0}
!111 = !{!104, !87, i64 8}
!112 = !{!113, !13, i64 24}
!113 = !{!"_ZTSN8fastgltf17NormalTextureInfoE", !104, i64 0, !13, i64 24}
!114 = !{!115, !123, i64 48}
!115 = !{!"_ZTSN8fastgltf6ParserE", !116, i64 0, !122, i64 8, !124, i64 56, !131, i64 248, !134, i64 264, !144, i64 304}
!116 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !117, i64 0}
!117 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !118, i64 0}
!118 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !119, i64 0}
!119 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !120, i64 0}
!120 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !121, i64 0}
!121 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !6, i64 0}
!122 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !123, i64 40}
!123 = !{!"_ZTSN8fastgltf10ExtensionsE", !7, i64 0}
!124 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !125, i64 0}
!125 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !126, i64 0}
!126 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !127, i64 0}
!127 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !128, i64 0}
!128 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !129, i64 0}
!129 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !130, i64 0}
!130 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !7, i64 0, !7, i64 184}
!131 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !132, i64 0}
!132 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !133, i64 8}
!133 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!134 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !135, i64 0, !137, i64 32}
!135 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !136, i64 0, !87, i64 8, !7, i64 16}
!136 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!137 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !138, i64 0}
!138 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !139, i64 0}
!139 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !140, i64 0}
!140 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !141, i64 0}
!141 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !142, i64 0}
!142 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !143, i64 0}
!143 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !6, i64 0}
!144 = !{!"_ZTSN8fastgltf7OptionsE", !7, i64 0}
!145 = !{!146, !146, i64 0}
!146 = !{!"_ZTSN8fastgltf5ErrorE", !7, i64 0}
!147 = !{!148, !13, i64 24}
!148 = !{!"_ZTSN8fastgltf20OcclusionTextureInfoE", !104, i64 0, !13, i64 24}
!149 = distinct !{!149, !102}
!150 = !{i64 0, i64 8, !151, i64 8, i64 8, !5}
!151 = !{!87, !87, i64 0}
!152 = !{!19, !19, i64 0}
!153 = !{i8 0, i8 2}
!154 = !{}
!155 = !{!115, !6, i64 32}
!156 = !{!115, !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"

%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"struct.simdjson::simdjson_result.409" = type { %"struct.simdjson::internal::simdjson_result_base.base.414", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.414" = type { %"struct.std::pair.base.413" }
%"struct.std::pair.base.413" = type <{ %"class.std::basic_string_view", i32 }>
%"class.std::basic_string_view" = type { i64, ptr }
%"class.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"struct.fastgltf::Material" = type { %"struct.fastgltf::PBRData", %"class.std::optional.279", %"class.std::optional.289", %"class.std::optional.269", %"class.fastgltf::math::vec.264", i8, i8, i8, float, float, float, float, %"class.std::unique_ptr.299", %"class.std::unique_ptr.307", %"class.std::unique_ptr.315", %"class.std::unique_ptr.323", %"class.std::unique_ptr.331", %"class.std::unique_ptr.339", %"class.std::unique_ptr.347", %"class.std::optional.269", %"class.std::unique_ptr.355", %"class.std::__cxx11::basic_string.74" }
%"struct.fastgltf::PBRData" = type { %"class.fastgltf::math::vec.267", float, float, %"class.std::optional.269", %"class.std::optional.269" }
%"class.fastgltf::math::vec.267" = type { %"struct.std::array.268" }
%"struct.std::array.268" = type { [4 x float] }
%"class.std::optional.279" = type { %"struct.std::_Optional_base.280" }
%"struct.std::_Optional_base.280" = type { %"struct.std::_Optional_payload.282" }
%"struct.std::_Optional_payload.282" = type { %"struct.std::_Optional_payload.base.286", [7 x i8] }
%"struct.std::_Optional_payload.base.286" = type { %"struct.std::_Optional_payload_base.base.285" }
%"struct.std::_Optional_payload_base.base.285" = type { %"union.std::_Optional_payload_base<fastgltf::NormalTextureInfo>::_Storage", i8 }
%"union.std::_Optional_payload_base<fastgltf::NormalTextureInfo>::_Storage" = type { %"struct.fastgltf::NormalTextureInfo" }
%"struct.fastgltf::NormalTextureInfo" = type <{ %"struct.fastgltf::TextureInfo", float, [4 x i8] }>
%"struct.fastgltf::TextureInfo" = type { i64, i64, %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.15" }
%"struct.std::_Head_base.15" = type { ptr }
%"class.std::optional.289" = type { %"struct.std::_Optional_base.290" }
%"struct.std::_Optional_base.290" = type { %"struct.std::_Optional_payload.292" }
%"struct.std::_Optional_payload.292" = type { %"struct.std::_Optional_payload.base.296", [7 x i8] }
%"struct.std::_Optional_payload.base.296" = type { %"struct.std::_Optional_payload_base.base.295" }
%"struct.std::_Optional_payload_base.base.295" = type { %"union.std::_Optional_payload_base<fastgltf::OcclusionTextureInfo>::_Storage", i8 }
%"union.std::_Optional_payload_base<fastgltf::OcclusionTextureInfo>::_Storage" = type { %"struct.fastgltf::OcclusionTextureInfo" }
%"struct.fastgltf::OcclusionTextureInfo" = type <{ %"struct.fastgltf::TextureInfo", float, [4 x i8] }>
%"class.fastgltf::math::vec.264" = type { %"struct.std::array.265" }
%"struct.std::array.265" = type { [3 x float] }
%"class.std::unique_ptr.299" = type { %"struct.std::__uniq_ptr_data.300" }
%"struct.std::__uniq_ptr_data.300" = type { %"class.std::__uniq_ptr_impl.301" }
%"class.std::__uniq_ptr_impl.301" = type { %"class.std::tuple.302" }
%"class.std::tuple.302" = type { %"struct.std::_Tuple_impl.303" }
%"struct.std::_Tuple_impl.303" = type { %"struct.std::_Head_base.306" }
%"struct.std::_Head_base.306" = type { ptr }
%"class.std::unique_ptr.307" = type { %"struct.std::__uniq_ptr_data.308" }
%"struct.std::__uniq_ptr_data.308" = type { %"class.std::__uniq_ptr_impl.309" }
%"class.std::__uniq_ptr_impl.309" = type { %"class.std::tuple.310" }
%"class.std::tuple.310" = type { %"struct.std::_Tuple_impl.311" }
%"struct.std::_Tuple_impl.311" = type { %"struct.std::_Head_base.314" }
%"struct.std::_Head_base.314" = type { ptr }
%"class.std::unique_ptr.315" = type { %"struct.std::__uniq_ptr_data.316" }
%"struct.std::__uniq_ptr_data.316" = type { %"class.std::__uniq_ptr_impl.317" }
%"class.std::__uniq_ptr_impl.317" = type { %"class.std::tuple.318" }
%"class.std::tuple.318" = type { %"struct.std::_Tuple_impl.319" }
%"struct.std::_Tuple_impl.319" = type { %"struct.std::_Head_base.322" }
%"struct.std::_Head_base.322" = type { ptr }
%"class.std::unique_ptr.323" = type { %"struct.std::__uniq_ptr_data.324" }
%"struct.std::__uniq_ptr_data.324" = type { %"class.std::__uniq_ptr_impl.325" }
%"class.std::__uniq_ptr_impl.325" = type { %"class.std::tuple.326" }
%"class.std::tuple.326" = type { %"struct.std::_Tuple_impl.327" }
%"struct.std::_Tuple_impl.327" = type { %"struct.std::_Head_base.330" }
%"struct.std::_Head_base.330" = type { ptr }
%"class.std::unique_ptr.331" = type { %"struct.std::__uniq_ptr_data.332" }
%"struct.std::__uniq_ptr_data.332" = type { %"class.std::__uniq_ptr_impl.333" }
%"class.std::__uniq_ptr_impl.333" = type { %"class.std::tuple.334" }
%"class.std::tuple.334" = type { %"struct.std::_Tuple_impl.335" }
%"struct.std::_Tuple_impl.335" = type { %"struct.std::_Head_base.338" }
%"struct.std::_Head_base.338" = type { ptr }
%"class.std::unique_ptr.339" = type { %"struct.std::__uniq_ptr_data.340" }
%"struct.std::__uniq_ptr_data.340" = type { %"class.std::__uniq_ptr_impl.341" }
%"class.std::__uniq_ptr_impl.341" = type { %"class.std::tuple.342" }
%"class.std::tuple.342" = type { %"struct.std::_Tuple_impl.343" }
%"struct.std::_Tuple_impl.343" = type { %"struct.std::_Head_base.346" }
%"struct.std::_Head_base.346" = type { ptr }
%"class.std::unique_ptr.347" = type { %"struct.std::__uniq_ptr_data.348" }
%"struct.std::__uniq_ptr_data.348" = type { %"class.std::__uniq_ptr_impl.349" }
%"class.std::__uniq_ptr_impl.349" = type { %"class.std::tuple.350" }
%"class.std::tuple.350" = type { %"struct.std::_Tuple_impl.351" }
%"struct.std::_Tuple_impl.351" = type { %"struct.std::_Head_base.354" }
%"struct.std::_Head_base.354" = type { ptr }
%"class.std::optional.269" = type { %"struct.std::_Optional_base.270" }
%"struct.std::_Optional_base.270" = type { %"struct.std::_Optional_payload.272" }
%"struct.std::_Optional_payload.272" = type { %"struct.std::_Optional_payload.base.276", [7 x i8] }
%"struct.std::_Optional_payload.base.276" = type { %"struct.std::_Optional_payload_base.base.275" }
%"struct.std::_Optional_payload_base.base.275" = type <{ %"union.std::_Optional_payload_base<fastgltf::TextureInfo>::_Storage", i8 }>
%"union.std::_Optional_payload_base<fastgltf::TextureInfo>::_Storage" = type { %"struct.fastgltf::TextureInfo" }
%"class.std::unique_ptr.355" = type { %"struct.std::__uniq_ptr_data.356" }
%"struct.std::__uniq_ptr_data.356" = type { %"class.std::__uniq_ptr_impl.357" }
%"class.std::__uniq_ptr_impl.357" = type { %"class.std::tuple.358" }
%"class.std::tuple.358" = type { %"struct.std::_Tuple_impl.359" }
%"struct.std::_Tuple_impl.359" = type { %"struct.std::_Head_base.362" }
%"struct.std::_Head_base.362" = type { 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.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.simdjson::simdjson_result.420" = type { %"struct.simdjson::internal::simdjson_result_base.421" }
%"struct.simdjson::internal::simdjson_result_base.421" = type { %"struct.std::pair.422" }
%"struct.std::pair.422" = type { i8, i32 }

@.str.5 = external hidden unnamed_addr constant [11 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.121 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result") align 8, ptr noundef nonnull align 8 dereferenceable(20)) 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 { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(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_resultIdE3getERd(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 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind noalias writable sret(%"struct.simdjson::simdjson_result.0") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #3 align 2

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

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

; 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: 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 i64 @_ZNKSt6vectorIN8fastgltf8MaterialESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; 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 @_ZN8fastgltf6Parser14parseMaterialsERN8simdjson3dom5arrayERNS_5AssetE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(580) %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.simdjson::dom::array::iterator", align 8
  %5 = alloca %"class.simdjson::dom::array::iterator", align 8
  %6 = alloca %"class.simdjson::dom::element", align 8
  %7 = alloca %"class.simdjson::dom::object", align 8
  %8 = alloca %"struct.simdjson::simdjson_result", align 8
  %9 = alloca %"struct.fastgltf::Material", align 8
  %10 = alloca %"class.simdjson::dom::array", align 8
  %11 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %12 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %13 = alloca double, align 8
  %14 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %15 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %16 = alloca %"struct.fastgltf::NormalTextureInfo", align 8
  %17 = alloca %"class.std::basic_string_view", align 8
  %18 = alloca %"struct.fastgltf::OcclusionTextureInfo", align 8
  %19 = alloca %"class.std::basic_string_view", align 8
  %20 = alloca %"struct.fastgltf::TextureInfo", align 8
  %21 = alloca %"class.std::basic_string_view", align 8
  %22 = alloca %"class.simdjson::dom::object", align 8
  %23 = alloca %"struct.simdjson::simdjson_result", align 8
  %24 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %25 = alloca %"struct.fastgltf::PBRData", align 8
  %26 = alloca %"class.simdjson::dom::array", align 8
  %27 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %28 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %29 = alloca double, align 8
  %30 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %31 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %32 = alloca double, align 8
  %33 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %34 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %35 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %36 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %37 = alloca %"struct.fastgltf::TextureInfo", align 8
  %38 = alloca %"class.std::basic_string_view", align 8
  %39 = alloca %"class.std::basic_string_view", align 8
  %40 = alloca %"class.std::basic_string_view", align 8
  %41 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %42 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %43 = alloca %"class.std::basic_string_view", align 8
  %44 = alloca %"class.std::basic_string_view", align 8
  %45 = alloca %"class.std::basic_string_view", align 8
  %46 = alloca double, align 8
  %47 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %48 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %49 = alloca i8, align 1
  %50 = alloca %"struct.simdjson::simdjson_result.420", align 8
  %51 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %52 = alloca %"class.std::basic_string_view", align 8
  %53 = alloca %"struct.simdjson::simdjson_result.409", align 8
  %54 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %55 = alloca %"class.std::__cxx11::basic_string.74", align 8
  %56 = alloca %"class.std::pmr::polymorphic_allocator.75", align 8
  %57 = alloca %"class.simdjson::dom::object", align 8
  %58 = alloca %"struct.simdjson::simdjson_result", align 8
  %59 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %60 = alloca %"class.simdjson::dom::object", align 8
  %61 = alloca %"struct.simdjson::simdjson_result", align 8
  %62 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %63 = getelementptr inbounds i8, ptr %2, i64 384
  %64 = tail call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  tail call void @_ZNSt6vectorIN8fastgltf8MaterialESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %64)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #6
  %65 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %66 = extractvalue { ptr, i64 } %65, 0
  store ptr %66, ptr %4, align 8
  %67 = getelementptr inbounds i8, ptr %4, i64 8
  %68 = extractvalue { ptr, i64 } %65, 1
  store i64 %68, ptr %67, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %69 = tail call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %70 = extractvalue { ptr, i64 } %69, 0
  store ptr %70, ptr %5, align 8
  %71 = getelementptr inbounds i8, ptr %5, i64 8
  %72 = extractvalue { ptr, i64 } %69, 1
  store i64 %72, ptr %71, align 8
  %73 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %73, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %3
  %74 = getelementptr inbounds i8, ptr %6, i64 8
  %75 = getelementptr inbounds i8, ptr %9, i64 16
  %76 = getelementptr inbounds i8, ptr %9, i64 24
  %77 = getelementptr inbounds i8, ptr %9, i64 56
  %78 = getelementptr inbounds i8, ptr %9, i64 88
  %79 = getelementptr inbounds i8, ptr %9, i64 128
  %80 = getelementptr inbounds i8, ptr %9, i64 168
  %81 = getelementptr inbounds i8, ptr %9, i64 200
  %82 = getelementptr inbounds i8, ptr %9, i64 212
  %83 = getelementptr inbounds i8, ptr %9, i64 213
  %84 = getelementptr inbounds i8, ptr %9, i64 214
  %85 = getelementptr inbounds i8, ptr %9, i64 216
  %86 = getelementptr inbounds i8, ptr %9, i64 232
  %87 = getelementptr inbounds i8, ptr %9, i64 240
  %88 = getelementptr inbounds i8, ptr %9, i64 248
  %89 = getelementptr inbounds i8, ptr %9, i64 256
  %90 = getelementptr inbounds i8, ptr %9, i64 264
  %91 = getelementptr inbounds i8, ptr %9, i64 272
  %92 = getelementptr inbounds i8, ptr %9, i64 280
  %93 = getelementptr inbounds i8, ptr %9, i64 288
  %94 = getelementptr inbounds i8, ptr %9, i64 320
  %95 = getelementptr inbounds i8, ptr %9, i64 328
  %.sroa.282.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  %96 = getelementptr inbounds i8, ptr %16, i64 16
  %97 = getelementptr inbounds i8, ptr %16, i64 24
  %98 = getelementptr inbounds i8, ptr %0, i64 48
  %99 = getelementptr inbounds i8, ptr %17, i64 8
  %100 = getelementptr inbounds i8, ptr %18, i64 16
  %101 = getelementptr inbounds i8, ptr %18, i64 24
  %102 = getelementptr inbounds i8, ptr %19, i64 8
  %103 = getelementptr inbounds i8, ptr %20, i64 16
  %104 = getelementptr inbounds i8, ptr %21, i64 8
  %105 = getelementptr inbounds i8, ptr %25, i64 16
  %106 = getelementptr inbounds i8, ptr %25, i64 20
  %107 = getelementptr inbounds i8, ptr %25, i64 24
  %108 = getelementptr inbounds i8, ptr %25, i64 56
  %.sroa.265.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8
  %.sroa.259.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  %.sroa.253.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8
  %109 = getelementptr inbounds i8, ptr %38, i64 8
  %110 = getelementptr inbounds i8, ptr %39, i64 8
  %.sroa.241.0..sroa_idx = getelementptr inbounds i8, ptr %40, i64 8
  %111 = getelementptr inbounds i8, ptr %43, i64 8
  %112 = getelementptr inbounds i8, ptr %44, i64 8
  %113 = getelementptr inbounds i8, ptr %45, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %47, i64 8
  %114 = getelementptr inbounds i8, ptr %0, i64 248
  %115 = getelementptr inbounds i8, ptr %0, i64 32
  %116 = getelementptr inbounds i8, ptr %0, i64 40
  br label %117

117:                                              ; preds = %.lr.ph, %276
  %.0342 = phi i64 [ undef, %.lr.ph ], [ %.20, %276 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  %118 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %119 = extractvalue { ptr, i64 } %118, 0
  store ptr %119, ptr %6, align 8
  %120 = extractvalue { ptr, i64 } %118, 1
  store i64 %120, ptr %74, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %6) #6
  %121 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %8, ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  %.not = icmp eq i32 %121, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  br i1 %.not, label %122, label %.thread264, !prof !5

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

122:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %9) #6
  call void @_ZN8fastgltf4math3vecIfLm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(16) %9, float noundef 1.000000e+00) #6
  store <2 x float> <float 1.000000e+00, float 1.000000e+00>, ptr %75, align 8, !tbaa !6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #6
  call void @_ZNSt8optionalIN8fastgltf17NormalTextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %78) #6
  call void @_ZNSt8optionalIN8fastgltf20OcclusionTextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %79) #6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  call void @_ZN8fastgltf4math3vecIfLm3EEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %81, float noundef 0.000000e+00) #6
  store i8 0, ptr %82, align 4, !tbaa !10
  store i8 0, ptr %83, align 1, !tbaa !87
  store i8 0, ptr %84, align 2, !tbaa !88
  store <4 x float> <float 5.000000e-01, float 1.000000e+00, float 1.500000e+00, float 0.000000e+00>, ptr %85, align 8, !tbaa !6
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %86) #6
  call void @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #6
  call void @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %88) #6
  call void @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #6
  call void @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %90) #6
  call void @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #6
  call void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %92) #6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #6
  call void @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %95) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  call void @llvm.lifetime.start.p0(i64 24, 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) %7, ptr noundef nonnull @.str.122) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %11, ptr noundef nonnull align 8 dereferenceable(20) %12) #6
  %123 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %11, ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  switch i32 %123, label %.thread269 [
    i32 0, label %124
    i32 20, label %.thread195
  ], !prof !89

124:                                              ; preds = %122
  %125 = call noundef i64 @_ZNK8simdjson3dom5array4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  %.not173 = icmp eq i64 %125, 3
  br i1 %.not173, label %.preheader295.preheader, label %.thread269

.preheader295.preheader:                          ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  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 @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef 0) #6
  %126 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %15) #6
  %.fca.0.extract79 = extractvalue { double, i32 } %126, 0
  %.fca.1.extract80 = extractvalue { double, i32 } %126, 1
  store double %.fca.0.extract79, ptr %14, align 8
  store i32 %.fca.1.extract80, ptr %.sroa.282.0..sroa_idx, align 8
  %127 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %.not174 = icmp eq i32 %127, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br i1 %.not174, label %.preheader295.1, label %141, !prof !5

.preheader295.1:                                  ; preds = %.preheader295.preheader
  %128 = load double, ptr %13, align 8, !tbaa !90
  %129 = fptrunc double %128 to float
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %81, i64 noundef 0) #6
  store float %129, ptr %130, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  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 @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef 1) #6
  %131 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %15) #6
  %.fca.0.extract79.1 = extractvalue { double, i32 } %131, 0
  %.fca.1.extract80.1 = extractvalue { double, i32 } %131, 1
  store double %.fca.0.extract79.1, ptr %14, align 8
  store i32 %.fca.1.extract80.1, ptr %.sroa.282.0..sroa_idx, align 8
  %132 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %.not174.1 = icmp eq i32 %132, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br i1 %.not174.1, label %.preheader295.2, label %141, !prof !5

.preheader295.2:                                  ; preds = %.preheader295.1
  %133 = load double, ptr %13, align 8, !tbaa !90
  %134 = fptrunc double %133 to float
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %81, i64 noundef 1) #6
  store float %134, ptr %135, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  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 @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef 2) #6
  %136 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %15) #6
  %.fca.0.extract79.2 = extractvalue { double, i32 } %136, 0
  %.fca.1.extract80.2 = extractvalue { double, i32 } %136, 1
  store double %.fca.0.extract79.2, ptr %14, align 8
  store i32 %.fca.1.extract80.2, ptr %.sroa.282.0..sroa_idx, align 8
  %137 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %.not174.2 = icmp eq i32 %137, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br i1 %.not174.2, label %.thread195.loopexit, label %141, !prof !5

.thread195.loopexit:                              ; preds = %.preheader295.2
  %138 = load double, ptr %13, align 8, !tbaa !90
  %139 = fptrunc double %138 to float
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %81, i64 noundef 2) #6
  store float %139, ptr %140, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %.thread195

141:                                              ; preds = %.preheader295.2, %.preheader295.1, %.preheader295.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %.thread269

.thread195:                                       ; preds = %.thread195.loopexit, %122
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, i8 0, i64 16, i1 false)
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #6
  store float 1.000000e+00, ptr %97, align 8, !tbaa !92
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef @.str.121) #6
  %142 = load i64, ptr %98, align 8, !tbaa !101
  %143 = load i64, ptr %17, align 8
  %144 = load ptr, ptr %99, align 8
  %145 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %143, ptr %144, ptr noundef nonnull %16, i64 noundef %142, i8 noundef zeroext 1) #6
  switch i64 %145, label %148 [
    i64 0, label %146
    i64 8, label %149
  ], !prof !132

146:                                              ; preds = %.thread195
  %147 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalIN8fastgltf17NormalTextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(40) %78, ptr noundef nonnull align 8 dereferenceable(28) %16) #6
  br label %149

148:                                              ; preds = %.thread195
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  br label %.thread269

149:                                              ; preds = %146, %.thread195
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false)
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #6
  store float 1.000000e+00, ptr %101, align 8, !tbaa !133
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef @.str.123) #6
  %150 = load i64, ptr %98, align 8, !tbaa !101
  %151 = load i64, ptr %19, align 8
  %152 = load ptr, ptr %102, align 8
  %153 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %151, ptr %152, ptr noundef nonnull %18, i64 noundef %150, i8 noundef zeroext 2) #6
  switch i64 %153, label %156 [
    i64 0, label %154
    i64 8, label %157
  ], !prof !132

154:                                              ; preds = %149
  %155 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt8optionalIN8fastgltf20OcclusionTextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(40) %79, ptr noundef nonnull align 8 dereferenceable(28) %18) #6
  br label %157

156:                                              ; preds = %149
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br label %.thread269

157:                                              ; preds = %154, %149
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 0, i64 16, i1 false)
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef @.str.124) #6
  %158 = load i64, ptr %98, align 8, !tbaa !101
  %159 = load i64, ptr %21, align 8
  %160 = load ptr, ptr %104, align 8
  %161 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %159, ptr %160, ptr noundef nonnull %20, i64 noundef %158, i8 noundef zeroext 0) #6
  switch i64 %161, label %164 [
    i64 0, label %162
    i64 8, label %165
  ], !prof !132

162:                                              ; preds = %157
  %163 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  br label %165

164:                                              ; preds = %157
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %.thread269

165:                                              ; preds = %162, %157
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.125) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %23, ptr noundef nonnull align 8 dereferenceable(20) %24) #6
  %166 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %23, ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  %167 = icmp eq i32 %166, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  br i1 %167, label %168, label %219, !prof !5

168:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %25) #6
  call void @_ZN8fastgltf4math3vecIfLm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(16) %25, float noundef 1.000000e+00) #6
  store <2 x float> <float 1.000000e+00, float 1.000000e+00>, ptr %105, align 8, !tbaa !6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #6
  call void @_ZNSt8optionalIN8fastgltf11TextureInfoEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #6
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @.str.126) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %27, ptr noundef nonnull align 8 dereferenceable(20) %28) #6
  %169 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %27, ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  %170 = icmp eq i32 %169, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #6
  br i1 %170, label %.preheader.preheader, label %.thread217, !prof !5

.preheader.preheader:                             ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef 0) #6
  %171 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  %.fca.0.extract62 = extractvalue { double, i32 } %171, 0
  %.fca.1.extract63 = extractvalue { double, i32 } %171, 1
  store double %.fca.0.extract62, ptr %30, align 8
  store i32 %.fca.1.extract63, ptr %.sroa.265.0..sroa_idx, align 8
  %172 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  %.not178 = icmp eq i32 %172, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  br i1 %.not178, label %.preheader.1, label %.thread236, !prof !5

.preheader.1:                                     ; preds = %.preheader.preheader
  %173 = load double, ptr %29, align 8, !tbaa !90
  %174 = fptrunc double %173 to float
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %25, i64 noundef 0) #6
  store float %174, ptr %175, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef 1) #6
  %176 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  %.fca.0.extract62.1 = extractvalue { double, i32 } %176, 0
  %.fca.1.extract63.1 = extractvalue { double, i32 } %176, 1
  store double %.fca.0.extract62.1, ptr %30, align 8
  store i32 %.fca.1.extract63.1, ptr %.sroa.265.0..sroa_idx, align 8
  %177 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  %.not178.1 = icmp eq i32 %177, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  br i1 %.not178.1, label %.preheader.2, label %.thread236, !prof !5

.preheader.2:                                     ; preds = %.preheader.1
  %178 = load double, ptr %29, align 8, !tbaa !90
  %179 = fptrunc double %178 to float
  %180 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %25, i64 noundef 1) #6
  store float %179, ptr %180, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef 2) #6
  %181 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  %.fca.0.extract62.2 = extractvalue { double, i32 } %181, 0
  %.fca.1.extract63.2 = extractvalue { double, i32 } %181, 1
  store double %.fca.0.extract62.2, ptr %30, align 8
  store i32 %.fca.1.extract63.2, ptr %.sroa.265.0..sroa_idx, align 8
  %182 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  %.not178.2 = icmp eq i32 %182, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  br i1 %.not178.2, label %.preheader.3, label %.thread236, !prof !5

.preheader.3:                                     ; preds = %.preheader.2
  %183 = load double, ptr %29, align 8, !tbaa !90
  %184 = fptrunc double %183 to float
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %25, i64 noundef 2) #6
  store float %184, ptr %185, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZNK8simdjson3dom5array2atEm(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef 3) #6
  %186 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %31) #6
  %.fca.0.extract62.3 = extractvalue { double, i32 } %186, 0
  %.fca.1.extract63.3 = extractvalue { double, i32 } %186, 1
  store double %.fca.0.extract62.3, ptr %30, align 8
  store i32 %.fca.1.extract63.3, ptr %.sroa.265.0..sroa_idx, align 8
  %187 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  %.not178.3 = icmp eq i32 %187, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  br i1 %.not178.3, label %.thread217.loopexit, label %.thread236, !prof !5

.thread217.loopexit:                              ; preds = %.preheader.3
  %188 = load double, ptr %29, align 8, !tbaa !90
  %189 = fptrunc double %188 to float
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %25, i64 noundef 3) #6
  store float %189, ptr %190, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %.thread217

.thread236:                                       ; preds = %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @_ZN8fastgltf7PBRDataD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %25) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #6
  br label %.thread274

.thread217:                                       ; preds = %.thread217.loopexit, %168
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @.str.127) #6
  %191 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %34) #6
  %.fca.0.extract56 = extractvalue { double, i32 } %191, 0
  %.fca.1.extract57 = extractvalue { double, i32 } %191, 1
  store double %.fca.0.extract56, ptr %33, align 8
  store i32 %.fca.1.extract57, ptr %.sroa.259.0..sroa_idx, align 8
  %192 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %33, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #6
  switch i32 %192, label %.thread241 [
    i32 0, label %193
    i32 20, label %196
  ], !prof !132

193:                                              ; preds = %.thread217
  %194 = load double, ptr %32, align 8, !tbaa !90
  %195 = fptrunc double %194 to float
  store float %195, ptr %105, align 8, !tbaa !135
  br label %196

196:                                              ; preds = %193, %.thread217
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull @.str.128) #6
  %197 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %36) #6
  %.fca.0.extract50 = extractvalue { double, i32 } %197, 0
  %.fca.1.extract51 = extractvalue { double, i32 } %197, 1
  store double %.fca.0.extract50, ptr %35, align 8
  store i32 %.fca.1.extract51, ptr %.sroa.253.0..sroa_idx, align 8
  %198 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %35, ptr noundef nonnull align 8 dereferenceable(8) %32) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  switch i32 %198, label %.thread241 [
    i32 0, label %199
    i32 20, label %202
  ], !prof !132

199:                                              ; preds = %196
  %200 = load double, ptr %32, align 8, !tbaa !90
  %201 = fptrunc double %200 to float
  store float %201, ptr %106, align 4, !tbaa !136
  br label %202

202:                                              ; preds = %199, %196
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #6
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef @.str.129) #6
  %203 = load i64, ptr %98, align 8, !tbaa !101
  %204 = load i64, ptr %38, align 8
  %205 = load ptr, ptr %109, align 8
  %206 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 %204, ptr %205, ptr noundef nonnull %37, i64 noundef %203, i8 noundef zeroext 0) #6
  switch i64 %206, label %218 [
    i64 0, label %207
    i64 8, label %209
  ], !prof !132

207:                                              ; preds = %202
  %208 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  br label %209

209:                                              ; preds = %207, %202
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef @.str.130) #6
  %210 = load i64, ptr %98, align 8, !tbaa !101
  %211 = load i64, ptr %39, align 8
  %212 = load ptr, ptr %110, align 8
  %213 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 %211, ptr %212, ptr noundef nonnull %37, i64 noundef %210, i8 noundef zeroext 0) #6
  switch i64 %213, label %218 [
    i64 0, label %214
    i64 8, label %216
  ], !prof !132

214:                                              ; preds = %209
  %215 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt8optionalIN8fastgltf11TextureInfoEEaSIS1_EENSt9enable_ifIX7__and_vISt6__not_ISt7is_sameIS2_NSt9remove_cvINSt16remove_referenceIT_E4typeEE4typeEEES5_ISt6__and_IJSt9is_scalarIS1_ES6_IS1_NSt5decayIS9_E4typeEEEEESt16is_constructibleIS1_JS9_EESt13is_assignableIRS1_S9_EEERS2_E4typeEOS9_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  br label %216

216:                                              ; preds = %214, %209
  %217 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN8fastgltf7PBRDataaSEOS0_(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(88) %25) #6
  br label %218

.thread241:                                       ; preds = %.thread217, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @_ZN8fastgltf7PBRDataD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %25) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #6
  br label %.thread274

218:                                              ; preds = %216, %202, %209
  %cond16 = phi i1 [ true, %216 ], [ false, %202 ], [ false, %209 ]
  %.17 = phi i64 [ %.0342, %216 ], [ %206, %202 ], [ %213, %209 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @_ZN8fastgltf7PBRDataD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %25) #6
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #6
  br i1 %cond16, label %219, label %.thread274

219:                                              ; preds = %218, %165
  %.20 = phi i64 [ %.17, %218 ], [ %.0342, %165 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.131) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %41, ptr noundef nonnull align 8 dereferenceable(20) %42) #6
  %220 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %41, ptr noundef nonnull align 8 dereferenceable(16) %40) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #6
  switch i32 %220, label %.thread278 [
    i32 0, label %221
    i32 20, label %233
  ], !prof !89

221:                                              ; preds = %219
  %.sroa.040.0.copyload = load i64, ptr %40, align 8, !tbaa !137
  %.sroa.241.0.copyload = load ptr, ptr %.sroa.241.0..sroa_idx, align 8, !tbaa !138
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef @.str.132) #6
  %222 = load i64, ptr %43, align 8
  %223 = load ptr, ptr %111, align 8
  %224 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.040.0.copyload, ptr %.sroa.241.0.copyload, i64 %222, ptr %223) #6
  br i1 %224, label %.sink.split, label %225

225:                                              ; preds = %221
  %.sroa.038.0.copyload = load i64, ptr %40, align 8, !tbaa !137
  %.sroa.239.0.copyload = load ptr, ptr %.sroa.241.0..sroa_idx, align 8, !tbaa !138
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef @.str.133) #6
  %226 = load i64, ptr %44, align 8
  %227 = load ptr, ptr %112, align 8
  %228 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.038.0.copyload, ptr %.sroa.239.0.copyload, i64 %226, ptr %227) #6
  br i1 %228, label %.sink.split, label %229

229:                                              ; preds = %225
  %.sroa.036.0.copyload = load i64, ptr %40, align 8, !tbaa !137
  %.sroa.237.0.copyload = load ptr, ptr %.sroa.241.0..sroa_idx, align 8, !tbaa !138
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef @.str.134) #6
  %230 = load i64, ptr %45, align 8
  %231 = load ptr, ptr %113, align 8
  %232 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.036.0.copyload, ptr %.sroa.237.0.copyload, i64 %230, ptr %231) #6
  br i1 %232, label %.sink.split, label %.thread278

.thread278:                                       ; preds = %219, %229
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

.sink.split:                                      ; preds = %229, %225, %221
  %.sink = phi i8 [ 0, %221 ], [ 1, %225 ], [ 2, %229 ]
  store i8 %.sink, ptr %82, align 4, !tbaa !10
  br label %233

233:                                              ; preds = %.sink.split, %219
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %48, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.135) #6
  %234 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %48) #6
  %.fca.0.extract = extractvalue { double, i32 } %234, 0
  %.fca.1.extract = extractvalue { double, i32 } %234, 1
  store double %.fca.0.extract, ptr %47, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %235 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %47, ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #6
  switch i32 %235, label %.thread282 [
    i32 0, label %236
    i32 20, label %239
  ], !prof !89

.thread282:                                       ; preds = %233
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

236:                                              ; preds = %233
  %237 = load double, ptr %46, align 8, !tbaa !90
  %238 = fptrunc double %237 to float
  store float %238, ptr %85, align 8, !tbaa !139
  br label %239

239:                                              ; preds = %236, %233
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %51, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.136) #6
  %240 = call i64 @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE8get_boolEv(ptr noundef nonnull align 8 dereferenceable(20) %51) #6
  store i64 %240, ptr %50, align 8
  %241 = call noundef i32 @_ZNO8simdjson15simdjson_resultIbE3getERb(ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  switch i32 %241, label %.thread286 [
    i32 0, label %242
    i32 20, label %244
  ], !prof !89

.thread286:                                       ; preds = %239
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

242:                                              ; preds = %239
  %243 = load i8, ptr %49, align 1, !tbaa !140, !range !141, !noundef !142
  store i8 %243, ptr %83, align 1, !tbaa !87
  br label %244

244:                                              ; preds = %242, %239
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.49) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_stringEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.409") align 8 %53, ptr noundef nonnull align 8 dereferenceable(20) %54) #6
  %245 = call noundef i32 @_ZNO8simdjson15simdjson_resultISt17basic_string_viewIcSt11char_traitsIcEEE3getERS4_(ptr noundef nonnull align 8 dereferenceable(20) %53, ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  %246 = icmp eq i32 %245, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #6
  br i1 %246, label %247, label %257

247:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #6
  %248 = call noundef ptr @_ZNKSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %114) #6
  call void @_ZNSt3pmr21polymorphic_allocatorIcEC2EPNS_15memory_resourceE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %248) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEC2ISt17basic_string_viewIcS2_EvEERKT_RKS5_(ptr noundef nonnull align 8 dereferenceable(40) %55, ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %249 unwind label %252

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(40) %95, ptr noundef nonnull align 8 dereferenceable(40) %55)
          to label %251 unwind label %254

251:                                              ; preds = %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #6
  br label %257

252:                                              ; preds = %247
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %256

254:                                              ; preds = %249
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #6
  br label %256

256:                                              ; preds = %254, %252
  %.pn = phi { ptr, i32 } [ %255, %254 ], [ %253, %252 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #6
  br label %282

257:                                              ; preds = %251, %244
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %59) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %59, ptr noundef nonnull align 8 dereferenceable(16) %7, 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 %58, ptr noundef nonnull align 8 dereferenceable(20) %59) #6
  %258 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %58, ptr noundef nonnull align 8 dereferenceable(16) %57) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #6
  switch i32 %258, label %.thread291 [
    i32 0, label %259
    i32 20, label %263
  ], !prof !143

259:                                              ; preds = %257
  %260 = invoke noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(368) %9)
          to label %263 unwind label %261

261:                                              ; preds = %259
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %281

263:                                              ; preds = %259, %257
  %264 = load ptr, ptr %115, align 8, !tbaa !144
  %.not188 = icmp eq ptr %264, null
  br i1 %.not188, label %274, label %265

265:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #6
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #6
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.48) #6
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %61, ptr noundef nonnull align 8 dereferenceable(20) %62) #6
  %266 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %61, ptr noundef nonnull align 8 dereferenceable(16) %60) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #6
  switch i32 %266, label %273 [
    i32 0, label %267
    i32 20, label %.thread261
  ]

267:                                              ; preds = %265
  %268 = load ptr, ptr %115, align 8, !tbaa !144
  %269 = call noundef i64 @_ZNKSt6vectorIN8fastgltf8MaterialESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  %270 = load ptr, ptr %116, align 8, !tbaa !145
  invoke void %268(ptr noundef nonnull %60, i64 noundef %269, i32 noundef 256, ptr noundef %270)
          to label %.thread261 unwind label %271

271:                                              ; preds = %267
  %272 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  br label %281

.thread261:                                       ; preds = %267, %265
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  br label %274

273:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  br label %.thread291

274:                                              ; preds = %.thread261, %263
  %275 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNSt6vectorIN8fastgltf8MaterialESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(368) %9)
          to label %276 unwind label %279

.thread269:                                       ; preds = %124, %122, %164, %156, %148, %141
  %.32.ph = phi i64 [ %145, %148 ], [ %153, %156 ], [ %161, %164 ], [ 5, %141 ], [ 5, %122 ], [ 5, %124 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

.thread274:                                       ; preds = %218, %.thread236, %.thread241
  %.31.ph = phi i64 [ 5, %.thread241 ], [ 5, %.thread236 ], [ %.17, %218 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

.thread291:                                       ; preds = %257, %273
  %.27.ph = phi i64 [ 5, %273 ], [ 4, %257 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %.loopexit

276:                                              ; preds = %274
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  %277 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #6
  %278 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %278, label %117, label %.loopexit

279:                                              ; preds = %274
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %281

281:                                              ; preds = %279, %271, %261
  %.pn190 = phi { ptr, i32 } [ %280, %279 ], [ %272, %271 ], [ %262, %261 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #6
  br label %282

282:                                              ; preds = %281, %256
  %.pn190.pn = phi { ptr, i32 } [ %.pn190, %281 ], [ %.pn, %256 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN8fastgltf8MaterialD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %9) #6
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  resume { ptr, i32 } %.pn190.pn

.loopexit:                                        ; preds = %276, %3, %.thread291, %.thread286, %.thread282, %.thread278, %.thread274, %.thread269, %.thread264
  %spec.select = phi i64 [ 5, %.thread264 ], [ %.32.ph, %.thread269 ], [ %.31.ph, %.thread274 ], [ 5, %.thread278 ], [ 5, %.thread282 ], [ 5, %.thread286 ], [ %.27.ph, %.thread291 ], [ 0, %3 ], [ 0, %276 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  ret i64 %spec.select
}

; Function Attrs: 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: alwaysinline mustprogress nounwind uwtable
declare dso_local i64 @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE8get_boolEv(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_resultIbE3getERb(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_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)) local_unnamed_addr #4 align 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: mustprogress uwtable
declare dso_local noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN8fastgltf8MaterialESaIS1_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 @_ZN8fastgltf4math3vecIfLm4EEC2Ef(ptr noundef nonnull align 4 dereferenceable(16), float noundef) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN8fastgltf7PBRDataaSEOS0_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #3 align 2

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!"branch_weights", !"expected", i32 2000, i32 1}
!6 = !{!7, !7, i64 0}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !33, i64 212}
!11 = !{!"_ZTSN8fastgltf8MaterialE", !12, i64 0, !21, i64 88, !26, i64 128, !15, i64 168, !31, i64 200, !33, i64 212, !20, i64 213, !20, i64 214, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !34, i64 232, !41, i64 240, !47, i64 248, !53, i64 256, !59, i64 264, !65, i64 272, !71, i64 280, !15, i64 288, !77, i64 320, !83, i64 328}
!12 = !{!"_ZTSN8fastgltf7PBRDataE", !13, i64 0, !7, i64 16, !7, i64 20, !15, i64 24, !15, i64 56}
!13 = !{!"_ZTSN8fastgltf4math3vecIfLm4EEE", !14, i64 0}
!14 = !{!"_ZTSSt5arrayIfLm4EE", !8, i64 0}
!15 = !{!"_ZTSSt8optionalIN8fastgltf11TextureInfoEE", !16, i64 0}
!16 = !{!"_ZTSSt14_Optional_baseIN8fastgltf11TextureInfoELb0ELb0EE", !17, i64 0}
!17 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf11TextureInfoELb0ELb0ELb0EE", !18, i64 0}
!18 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf11TextureInfoELb1ELb0ELb0EE", !19, i64 0}
!19 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf11TextureInfoEE", !8, i64 0, !20, i64 24}
!20 = !{!"bool", !8, i64 0}
!21 = !{!"_ZTSSt8optionalIN8fastgltf17NormalTextureInfoEE", !22, i64 0}
!22 = !{!"_ZTSSt14_Optional_baseIN8fastgltf17NormalTextureInfoELb0ELb0EE", !23, i64 0}
!23 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf17NormalTextureInfoELb0ELb0ELb0EE", !24, i64 0}
!24 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf17NormalTextureInfoELb1ELb0ELb0EE", !25, i64 0}
!25 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf17NormalTextureInfoEE", !8, i64 0, !20, i64 32}
!26 = !{!"_ZTSSt8optionalIN8fastgltf20OcclusionTextureInfoEE", !27, i64 0}
!27 = !{!"_ZTSSt14_Optional_baseIN8fastgltf20OcclusionTextureInfoELb0ELb0EE", !28, i64 0}
!28 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf20OcclusionTextureInfoELb0ELb0ELb0EE", !29, i64 0}
!29 = !{!"_ZTSSt17_Optional_payloadIN8fastgltf20OcclusionTextureInfoELb1ELb0ELb0EE", !30, i64 0}
!30 = !{!"_ZTSSt22_Optional_payload_baseIN8fastgltf20OcclusionTextureInfoEE", !8, i64 0, !20, i64 32}
!31 = !{!"_ZTSN8fastgltf4math3vecIfLm3EEE", !32, i64 0}
!32 = !{!"_ZTSSt5arrayIfLm3EE", !8, i64 0}
!33 = !{!"_ZTSN8fastgltf9AlphaModeE", !8, i64 0}
!34 = !{!"_ZTSSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_ELb1ELb1EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt5tupleIJPN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEE", !38, i64 0}
!38 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEE", !39, i64 0}
!39 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf18MaterialAnisotropyELb0EE", !40, i64 0}
!40 = !{!"any pointer", !8, i64 0}
!41 = !{!"_ZTSSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_ELb1ELb1EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EE", !44, i64 0}
!44 = !{!"_ZTSSt5tupleIJPN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEE", !45, i64 0}
!45 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEE", !46, i64 0}
!46 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf17MaterialClearcoatELb0EE", !40, i64 0}
!47 = !{!"_ZTSSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_ELb1ELb1EE", !49, i64 0}
!49 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EE", !50, i64 0}
!50 = !{!"_ZTSSt5tupleIJPN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEE", !51, i64 0}
!51 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEE", !52, i64 0}
!52 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf19MaterialIridescenceELb0EE", !40, i64 0}
!53 = !{!"_ZTSSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf13MaterialSheenESt14default_deleteIS1_ELb1ELb1EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf13MaterialSheenESt14default_deleteIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt5tupleIJPN8fastgltf13MaterialSheenESt14default_deleteIS1_EEE", !57, i64 0}
!57 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf13MaterialSheenESt14default_deleteIS1_EEE", !58, i64 0}
!58 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf13MaterialSheenELb0EE", !40, i64 0}
!59 = !{!"_ZTSSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf16MaterialSpecularESt14default_deleteIS1_ELb1ELb1EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt5tupleIJPN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEE", !63, i64 0}
!63 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf16MaterialSpecularELb0EE", !40, i64 0}
!65 = !{!"_ZTSSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_ELb1ELb1EE", !67, i64 0}
!67 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt5tupleIJPN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEE", !69, i64 0}
!69 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEE", !70, i64 0}
!70 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf20MaterialTransmissionELb0EE", !40, i64 0}
!71 = !{!"_ZTSSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf14MaterialVolumeESt14default_deleteIS1_ELb1ELb1EE", !73, i64 0}
!73 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt5tupleIJPN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEE", !75, i64 0}
!75 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEE", !76, i64 0}
!76 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf14MaterialVolumeELb0EE", !40, i64 0}
!77 = !{!"_ZTSSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EE", !78, i64 0}
!78 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_ELb1ELb1EE", !79, i64 0}
!79 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt5tupleIJPN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEE", !81, i64 0}
!81 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEE", !82, i64 0}
!82 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf22MaterialPackedTexturesELb0EE", !40, i64 0}
!83 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEEE", !84, i64 0, !86, i64 16, !8, i64 24}
!84 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcENSt3pmr21polymorphic_allocatorIcEEE12_Alloc_hiderE", !85, i64 0, !40, i64 8}
!85 = !{!"_ZTSNSt3pmr21polymorphic_allocatorIcEE", !40, i64 0}
!86 = !{!"long", !8, i64 0}
!87 = !{!11, !20, i64 213}
!88 = !{!11, !20, i64 214}
!89 = !{!"branch_weights", i32 1, i32 4002000, i32 2000}
!90 = !{!91, !91, i64 0}
!91 = !{!"double", !8, i64 0}
!92 = !{!93, !7, i64 24}
!93 = !{!"_ZTSN8fastgltf17NormalTextureInfoE", !94, i64 0, !7, i64 24}
!94 = !{!"_ZTSN8fastgltf11TextureInfoE", !86, i64 0, !86, i64 8, !95, i64 16}
!95 = !{!"_ZTSSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EE", !96, i64 0}
!96 = !{!"_ZTSSt15__uniq_ptr_dataIN8fastgltf16TextureTransformESt14default_deleteIS1_ELb1ELb1EE", !97, i64 0}
!97 = !{!"_ZTSSt15__uniq_ptr_implIN8fastgltf16TextureTransformESt14default_deleteIS1_EE", !98, i64 0}
!98 = !{!"_ZTSSt5tupleIJPN8fastgltf16TextureTransformESt14default_deleteIS1_EEE", !99, i64 0}
!99 = !{!"_ZTSSt11_Tuple_implILm0EJPN8fastgltf16TextureTransformESt14default_deleteIS1_EEE", !100, i64 0}
!100 = !{!"_ZTSSt10_Head_baseILm0EPN8fastgltf16TextureTransformELb0EE", !40, i64 0}
!101 = !{!102, !110, i64 48}
!102 = !{!"_ZTSN8fastgltf6ParserE", !103, i64 0, !109, i64 8, !111, i64 56, !118, i64 248, !121, i64 264, !131, i64 304}
!103 = !{!"_ZTSSt10unique_ptrIN8simdjson3dom6parserESt14default_deleteIS2_EE", !104, i64 0}
!104 = !{!"_ZTSSt15__uniq_ptr_dataIN8simdjson3dom6parserESt14default_deleteIS2_ELb1ELb1EE", !105, i64 0}
!105 = !{!"_ZTSSt15__uniq_ptr_implIN8simdjson3dom6parserESt14default_deleteIS2_EE", !106, i64 0}
!106 = !{!"_ZTSSt5tupleIJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !107, i64 0}
!107 = !{!"_ZTSSt11_Tuple_implILm0EJPN8simdjson3dom6parserESt14default_deleteIS2_EEE", !108, i64 0}
!108 = !{!"_ZTSSt10_Head_baseILm0EPN8simdjson3dom6parserELb0EE", !40, i64 0}
!109 = !{!"_ZTSN8fastgltf20ParserInternalConfigE", !40, i64 0, !40, i64 8, !40, i64 16, !40, i64 24, !40, i64 32, !110, i64 40}
!110 = !{!"_ZTSN8fastgltf10ExtensionsE", !8, i64 0}
!111 = !{!"_ZTSSt7variantIJSt9monostateN8fastgltf7sources10BufferViewENS2_3URIENS2_5ArrayENS2_6VectorENS2_12CustomBufferENS2_8ByteViewENS2_8FallbackEEE", !112, i64 0}
!112 = !{!"_ZTSNSt8__detail9__variant13_Variant_baseIJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !113, i64 0}
!113 = !{!"_ZTSNSt8__detail9__variant17_Move_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !114, i64 0}
!114 = !{!"_ZTSNSt8__detail9__variant17_Copy_assign_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !115, i64 0}
!115 = !{!"_ZTSNSt8__detail9__variant15_Move_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !116, i64 0}
!116 = !{!"_ZTSNSt8__detail9__variant15_Copy_ctor_baseILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !117, i64 0}
!117 = !{!"_ZTSNSt8__detail9__variant16_Variant_storageILb0EJSt9monostateN8fastgltf7sources10BufferViewENS4_3URIENS4_5ArrayENS4_6VectorENS4_12CustomBufferENS4_8ByteViewENS4_8FallbackEEEE", !8, i64 0, !8, i64 184}
!118 = !{!"_ZTSSt10shared_ptrIN8fastgltf19ChunkMemoryResourceEE", !119, i64 0}
!119 = !{!"_ZTSSt12__shared_ptrIN8fastgltf19ChunkMemoryResourceELN9__gnu_cxx12_Lock_policyE2EE", !40, i64 0, !120, i64 8}
!120 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !40, i64 0}
!121 = !{!"_ZTSNSt10filesystem7__cxx114pathE", !122, i64 0, !124, i64 32}
!122 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !123, i64 0, !86, i64 8, !8, i64 16}
!123 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !40, i64 0}
!124 = !{!"_ZTSNSt10filesystem7__cxx114path5_ListE", !125, i64 0}
!125 = !{!"_ZTSSt10unique_ptrINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !126, i64 0}
!126 = !{!"_ZTSSt15__uniq_ptr_dataINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterELb1ELb1EE", !127, i64 0}
!127 = !{!"_ZTSSt15__uniq_ptr_implINSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEE", !128, i64 0}
!128 = !{!"_ZTSSt5tupleIJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !129, i64 0}
!129 = !{!"_ZTSSt11_Tuple_implILm0EJPNSt10filesystem7__cxx114path5_List5_ImplENS3_13_Impl_deleterEEE", !130, i64 0}
!130 = !{!"_ZTSSt10_Head_baseILm0EPNSt10filesystem7__cxx114path5_List5_ImplELb0EE", !40, i64 0}
!131 = !{!"_ZTSN8fastgltf7OptionsE", !8, i64 0}
!132 = !{!"branch_weights", i32 1, i32 4000, i32 1}
!133 = !{!134, !7, i64 24}
!134 = !{!"_ZTSN8fastgltf20OcclusionTextureInfoE", !94, i64 0, !7, i64 24}
!135 = !{!12, !7, i64 16}
!136 = !{!12, !7, i64 20}
!137 = !{!86, !86, i64 0}
!138 = !{!40, !40, i64 0}
!139 = !{!11, !7, i64 216}
!140 = !{!20, !20, i64 0}
!141 = !{i8 0, i8 2}
!142 = !{}
!143 = !{!"branch_weights", i32 1, i32 2001, i32 2000}
!144 = !{!102, !40, i64 32}
!145 = !{!102, !40, i64 40}


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