; 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.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::key_value_pair" = type { %"class.std::basic_string_view", %"class.simdjson::dom::element" }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::object::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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 }
%"struct.simdjson::simdjson_result.16" = type { %"struct.simdjson::internal::simdjson_result_base.base.21", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.21" = type { %"struct.std::pair.base.20" }
%"struct.std::pair.base.20" = type <{ double, i32 }>
%"struct.fastgltf::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::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.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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::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.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::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::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 }
%"struct.fastgltf::MaterialAnisotropy" = type { float, float, %"class.std::optional.269" }
%"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" }
%"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] }>
%"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::__cxx11::basic_string.74" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider", i64, %union.anon.76 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char>>::_Alloc_hider" = type { %"class.std::pmr::polymorphic_allocator.75", ptr }
%"class.std::pmr::polymorphic_allocator.75" = type { ptr }
%union.anon.76 = type { i64, [8 x i8] }
%"struct.fastgltf::MaterialClearcoat" = type { float, [4 x i8], %"class.std::optional.269", float, [4 x i8], %"class.std::optional.269", %"class.std::optional.269" }
%"struct.fastgltf::MaterialIridescence" = type { float, [4 x i8], %"class.std::optional.269", float, float, float, [4 x i8], %"class.std::optional.269" }
%"struct.fastgltf::MaterialSheen" = type { %"class.fastgltf::math::vec.264", [4 x i8], %"class.std::optional.269", float, [4 x i8], %"class.std::optional.269" }
%"struct.fastgltf::MaterialSpecular" = type { float, [4 x i8], %"class.std::optional.269", %"class.fastgltf::math::vec.264", [4 x i8], %"class.std::optional.269" }
%"struct.fastgltf::MaterialTransmission" = type { float, [4 x i8], %"class.std::optional.269" }
%"struct.fastgltf::MaterialVolume" = type { float, [4 x i8], %"class.std::optional.269", float, %"class.fastgltf::math::vec.264" }
%"struct.fastgltf::MaterialPackedTextures" = type { %"class.std::optional.269", %"class.std::optional.269", %"class.std::optional.269" }

@_ZN8fastgltfL17crcStringFunctionE = external hidden global ptr, align 8
@.str.87 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [14 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

; 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 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef, i64 noundef) #2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) #5 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: 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 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 uwtable
define dso_local noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(368) %2) #6 align 2 {
  %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::object::iterator", align 8
  %10 = alloca %"class.simdjson::dom::object::iterator", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.simdjson::dom::key_value_pair", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::basic_string_view", align 8
  %15 = alloca %"class.simdjson::dom::object", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"struct.simdjson::simdjson_result", align 8
  %18 = alloca %"class.std::unique_ptr.299", align 8
  %19 = alloca double, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %22 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %23 = alloca { double, i32 }, align 8
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %27 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %28 = alloca { double, i32 }, align 8
  %29 = alloca %"struct.fastgltf::TextureInfo", align 8
  %30 = alloca i64, align 8
  %31 = alloca %"class.std::basic_string_view", align 8
  %32 = alloca %"class.simdjson::dom::object", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"struct.simdjson::simdjson_result", align 8
  %35 = alloca %"class.std::unique_ptr.307", align 8
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %39 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %40 = alloca { double, i32 }, align 8
  %41 = alloca %"struct.fastgltf::TextureInfo", align 8
  %42 = alloca i64, align 8
  %43 = alloca %"class.std::basic_string_view", align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %47 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %48 = alloca { double, i32 }, align 8
  %49 = alloca %"struct.fastgltf::TextureInfo", align 8
  %50 = alloca i64, align 8
  %51 = alloca %"class.std::basic_string_view", align 8
  %52 = alloca %"struct.fastgltf::TextureInfo", align 8
  %53 = alloca i64, align 8
  %54 = alloca %"class.std::basic_string_view", align 8
  %55 = alloca %"class.simdjson::dom::object", align 8
  %56 = alloca i32, align 4
  %57 = alloca %"struct.simdjson::simdjson_result", align 8
  %58 = alloca double, align 8
  %59 = alloca i32, align 4
  %60 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %61 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %62 = alloca { double, i32 }, align 8
  %63 = alloca %"class.simdjson::dom::object", align 8
  %64 = alloca i32, align 4
  %65 = alloca %"struct.simdjson::simdjson_result", align 8
  %66 = alloca double, align 8
  %67 = alloca i32, align 4
  %68 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %69 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %70 = alloca { double, i32 }, align 8
  %71 = alloca %"class.simdjson::dom::object", align 8
  %72 = alloca i32, align 4
  %73 = alloca %"struct.simdjson::simdjson_result", align 8
  %74 = alloca double, align 8
  %75 = alloca i32, align 4
  %76 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %77 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %78 = alloca { double, i32 }, align 8
  %79 = alloca %"class.simdjson::dom::object", align 8
  %80 = alloca i32, align 4
  %81 = alloca %"struct.simdjson::simdjson_result", align 8
  %82 = alloca %"class.std::unique_ptr.315", align 8
  %83 = alloca double, align 8
  %84 = alloca i32, align 4
  %85 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %86 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %87 = alloca { double, i32 }, align 8
  %88 = alloca %"struct.fastgltf::TextureInfo", align 8
  %89 = alloca i64, align 8
  %90 = alloca %"class.std::basic_string_view", align 8
  %91 = alloca double, align 8
  %92 = alloca i32, align 4
  %93 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %94 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %95 = alloca { double, i32 }, align 8
  %96 = alloca double, align 8
  %97 = alloca i32, align 4
  %98 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %99 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %100 = alloca { double, i32 }, align 8
  %101 = alloca double, align 8
  %102 = alloca i32, align 4
  %103 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %104 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %105 = alloca { double, i32 }, align 8
  %106 = alloca %"struct.fastgltf::TextureInfo", align 8
  %107 = alloca i64, align 8
  %108 = alloca %"class.std::basic_string_view", align 8
  %109 = alloca %"class.simdjson::dom::object", align 8
  %110 = alloca i32, align 4
  %111 = alloca %"struct.simdjson::simdjson_result", align 8
  %112 = alloca %"class.std::unique_ptr.323", align 8
  %113 = alloca %"class.simdjson::dom::array", align 8
  %114 = alloca i32, align 4
  %115 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %116 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %117 = alloca i64, align 8
  %118 = alloca ptr, align 8
  %119 = alloca %"class.simdjson::dom::array::iterator", align 8
  %120 = alloca %"class.simdjson::dom::array::iterator", align 8
  %121 = alloca %"class.simdjson::dom::element", align 8
  %122 = alloca double, align 8
  %123 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %124 = alloca { double, i32 }, align 8
  %125 = alloca %"struct.fastgltf::TextureInfo", align 8
  %126 = alloca i64, align 8
  %127 = alloca %"class.std::basic_string_view", align 8
  %128 = alloca double, align 8
  %129 = alloca i32, align 4
  %130 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %131 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %132 = alloca { double, i32 }, align 8
  %133 = alloca %"struct.fastgltf::TextureInfo", align 8
  %134 = alloca i64, align 8
  %135 = alloca %"class.std::basic_string_view", align 8
  %136 = alloca %"class.simdjson::dom::object", align 8
  %137 = alloca i32, align 4
  %138 = alloca %"struct.simdjson::simdjson_result", align 8
  %139 = alloca %"class.std::unique_ptr.331", align 8
  %140 = alloca double, align 8
  %141 = alloca i32, align 4
  %142 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %143 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %144 = alloca { double, i32 }, align 8
  %145 = alloca %"struct.fastgltf::TextureInfo", align 8
  %146 = alloca i64, align 8
  %147 = alloca %"class.std::basic_string_view", align 8
  %148 = alloca %"class.simdjson::dom::array", align 8
  %149 = alloca i32, align 4
  %150 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %151 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %152 = alloca i64, align 8
  %153 = alloca ptr, align 8
  %154 = alloca %"class.simdjson::dom::array::iterator", align 8
  %155 = alloca %"class.simdjson::dom::array::iterator", align 8
  %156 = alloca %"class.simdjson::dom::element", align 8
  %157 = alloca double, align 8
  %158 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %159 = alloca { double, i32 }, align 8
  %160 = alloca %"struct.fastgltf::TextureInfo", align 8
  %161 = alloca i64, align 8
  %162 = alloca %"class.std::basic_string_view", align 8
  %163 = alloca %"class.simdjson::dom::object", align 8
  %164 = alloca i32, align 4
  %165 = alloca %"struct.simdjson::simdjson_result", align 8
  %166 = alloca %"class.std::unique_ptr.339", align 8
  %167 = alloca double, align 8
  %168 = alloca i32, align 4
  %169 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %170 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %171 = alloca { double, i32 }, align 8
  %172 = alloca %"struct.fastgltf::TextureInfo", align 8
  %173 = alloca i64, align 8
  %174 = alloca %"class.std::basic_string_view", align 8
  %175 = alloca %"class.simdjson::dom::object", align 8
  %176 = alloca i32, align 4
  %177 = alloca %"struct.simdjson::simdjson_result", align 8
  %178 = alloca %"class.simdjson::dom::object", align 8
  %179 = alloca i32, align 4
  %180 = alloca %"struct.simdjson::simdjson_result", align 8
  %181 = alloca %"class.std::unique_ptr.347", align 8
  %182 = alloca double, align 8
  %183 = alloca i32, align 4
  %184 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %185 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %186 = alloca { double, i32 }, align 8
  %187 = alloca %"struct.fastgltf::TextureInfo", align 8
  %188 = alloca i64, align 8
  %189 = alloca %"class.std::basic_string_view", align 8
  %190 = alloca double, align 8
  %191 = alloca i32, align 4
  %192 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %193 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %194 = alloca { double, i32 }, align 8
  %195 = alloca %"class.simdjson::dom::array", align 8
  %196 = alloca i32, align 4
  %197 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %198 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %199 = alloca i64, align 8
  %200 = alloca ptr, align 8
  %201 = alloca %"class.simdjson::dom::array::iterator", align 8
  %202 = alloca %"class.simdjson::dom::array::iterator", align 8
  %203 = alloca %"class.simdjson::dom::element", align 8
  %204 = alloca double, align 8
  %205 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %206 = alloca { double, i32 }, align 8
  %207 = alloca %"class.simdjson::dom::object", align 8
  %208 = alloca %"struct.simdjson::simdjson_result", align 8
  %209 = alloca %"struct.fastgltf::TextureInfo", align 8
  %210 = alloca i64, align 8
  %211 = alloca %"class.std::basic_string_view", align 8
  %212 = alloca %"class.simdjson::dom::object", align 8
  %213 = alloca %"struct.simdjson::simdjson_result", align 8
  %214 = alloca %"class.std::unique_ptr.355", align 8
  %215 = alloca %"struct.fastgltf::TextureInfo", align 8
  %216 = alloca i64, align 8
  %217 = alloca %"class.std::basic_string_view", align 8
  %218 = alloca i64, align 8
  %219 = alloca %"class.std::basic_string_view", align 8
  %220 = alloca i64, align 8
  %221 = alloca %"class.std::basic_string_view", 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
  %222 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %223, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #8
  %224 = load ptr, ptr %8, align 8, !tbaa !5
  %225 = call { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #8
  %226 = getelementptr inbounds %"class.simdjson::dom::object::iterator", ptr %9, i32 0, i32 0
  %227 = getelementptr inbounds { ptr, i64 }, ptr %226, i32 0, i32 0
  %228 = extractvalue { ptr, i64 } %225, 0
  store ptr %228, ptr %227, align 8
  %229 = getelementptr inbounds { ptr, i64 }, ptr %226, i32 0, i32 1
  %230 = extractvalue { ptr, i64 } %225, 1
  store i64 %230, ptr %229, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #8
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = call { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16) %231) #8
  %233 = getelementptr inbounds %"class.simdjson::dom::object::iterator", ptr %10, i32 0, i32 0
  %234 = getelementptr inbounds { ptr, i64 }, ptr %233, i32 0, i32 0
  %235 = extractvalue { ptr, i64 } %232, 0
  store ptr %235, ptr %234, align 8
  %236 = getelementptr inbounds { ptr, i64 }, ptr %233, i32 0, i32 1
  %237 = extractvalue { ptr, i64 } %232, 1
  store i64 %237, ptr %236, align 8
  br label %238

238:                                              ; preds = %1453, %3
  %239 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #8
  br i1 %239, label %241, label %240

240:                                              ; preds = %238
  store i32 2, ptr %11, align 4
  br label %1455

241:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #8
  call void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind writable sret(%"class.simdjson::dom::key_value_pair") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %242 = load ptr, ptr @_ZN8fastgltfL17crcStringFunctionE, align 8, !tbaa !5
  %243 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 8 %243, i64 16, i1 false), !tbaa.struct !9
  %244 = getelementptr inbounds { i64, ptr }, ptr %14, i32 0, i32 0
  %245 = load i64, ptr %244, align 8
  %246 = getelementptr inbounds { i64, ptr }, ptr %14, i32 0, i32 1
  %247 = load ptr, ptr %246, align 8
  %248 = call noundef i32 %242(i64 %245, ptr %247)
  store i32 %248, ptr %13, align 4, !tbaa !12
  %249 = load i32, ptr %13, align 4, !tbaa !12
  switch i32 %249, label %1445 [
    i32 1337908995, label %250
    i32 1530164432, label %337
    i32 -1209778144, label %473
    i32 -200308239, label %507
    i32 -1932246985, label %541
    i32 -2019603899, label %575
    i32 1281863285, label %728
    i32 346229233, label %893
    i32 -1995278833, label %1058
    i32 762788967, label %1124
    i32 -1964642650, label %1143
    i32 464978231, label %1304
    i32 76454470, label %1348
  ]

250:                                              ; preds = %241
  %251 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %252 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %251, i32 0, i32 5
  %253 = load i64, ptr %252, align 8, !tbaa !14
  %254 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %253, i64 noundef 262144)
  br i1 %254, label %256, label %255

255:                                              ; preds = %250
  br label %1446

256:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  %257 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %257) #8
  %258 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %17, ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  store i32 %258, ptr %16, align 4, !tbaa !45
  %259 = load i32, ptr %16, align 4, !tbaa !45
  %260 = icmp ne i32 %259, 0
  %261 = call i1 @llvm.expect.i1(i1 %260, i1 false)
  br i1 %261, label %262, label %263

262:                                              ; preds = %256
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %335

263:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @_ZSt11make_uniqueIN8fastgltf18MaterialAnisotropyEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.299") align 8 %18)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef @.str.87) #8
  %264 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %22) #8
  store { double, i32 } %264, ptr %23, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %21, ptr align 8 %23, i64 12, i1 false)
  %265 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #8
  store i32 %265, ptr %20, align 4, !tbaa !45
  %266 = load i32, ptr %20, align 4, !tbaa !45
  %267 = icmp eq i32 %266, 0
  %268 = call i1 @llvm.expect.i1(i1 %267, i1 true)
  br i1 %268, label %269, label %274

269:                                              ; preds = %263
  %270 = load double, ptr %19, align 8, !tbaa !47
  %271 = fptrunc double %270 to float
  %272 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %273 = getelementptr inbounds %"struct.fastgltf::MaterialAnisotropy", ptr %272, i32 0, i32 0
  store float %271, ptr %273, align 8, !tbaa !49
  br label %280

274:                                              ; preds = %263
  %275 = load i32, ptr %20, align 4, !tbaa !45
  %276 = icmp ne i32 %275, 20
  %277 = call i1 @llvm.expect.i1(i1 %276, i1 false)
  br i1 %277, label %278, label %279

278:                                              ; preds = %274
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %281

279:                                              ; preds = %274
  br label %280

280:                                              ; preds = %279, %269
  store i32 0, ptr %11, align 4
  br label %281

281:                                              ; preds = %280, %278
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  %282 = load i32, ptr %11, align 4
  switch i32 %282, label %334 [
    i32 0, label %283
  ]

283:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef @.str.88) #8
  %284 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %27) #8
  store { double, i32 } %284, ptr %28, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %26, ptr align 8 %28, i64 12, i1 false)
  %285 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %26, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  store i32 %285, ptr %25, align 4, !tbaa !45
  %286 = load i32, ptr %25, align 4, !tbaa !45
  %287 = icmp eq i32 %286, 0
  %288 = call i1 @llvm.expect.i1(i1 %287, i1 true)
  br i1 %288, label %289, label %294

289:                                              ; preds = %283
  %290 = load double, ptr %24, align 8, !tbaa !47
  %291 = fptrunc double %290 to float
  %292 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %293 = getelementptr inbounds %"struct.fastgltf::MaterialAnisotropy", ptr %292, i32 0, i32 1
  store float %291, ptr %293, align 4, !tbaa !58
  br label %300

294:                                              ; preds = %283
  %295 = load i32, ptr %25, align 4, !tbaa !45
  %296 = icmp ne i32 %295, 20
  %297 = call i1 @llvm.expect.i1(i1 %296, i1 false)
  br i1 %297, label %298, label %299

298:                                              ; preds = %294
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %301

299:                                              ; preds = %294
  br label %300

300:                                              ; preds = %299, %289
  store i32 0, ptr %11, align 4
  br label %301

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

303:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef @.str.89) #8
  %304 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %305 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %304, i32 0, i32 5
  %306 = load i64, ptr %305, align 8, !tbaa !14
  %307 = getelementptr inbounds { i64, ptr }, ptr %31, i32 0, i32 0
  %308 = load i64, ptr %307, align 8
  %309 = getelementptr inbounds { i64, ptr }, ptr %31, i32 0, i32 1
  %310 = load ptr, ptr %309, align 8
  %311 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 %308, ptr %310, ptr noundef %29, i64 noundef %306, i8 noundef zeroext 0) #8
  store i64 %311, ptr %30, align 8, !tbaa !59
  %312 = load i64, ptr %30, align 8, !tbaa !59
  %313 = icmp eq i64 %312, 0
  %314 = call i1 @llvm.expect.i1(i1 %313, i1 true)
  br i1 %314, label %315, label %319

315:                                              ; preds = %303
  %316 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %317 = getelementptr inbounds %"struct.fastgltf::MaterialAnisotropy", ptr %316, i32 0, i32 2
  %318 = 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) %317, ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  br label %325

319:                                              ; preds = %303
  %320 = load i64, ptr %30, align 8, !tbaa !59
  %321 = icmp ne i64 %320, 8
  br i1 %321, label %322, label %324

322:                                              ; preds = %319
  %323 = load i64, ptr %30, align 8, !tbaa !59
  store i64 %323, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %326

324:                                              ; preds = %319
  br label %325

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

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

328:                                              ; preds = %326
  %329 = load ptr, ptr %7, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.fastgltf::Material", ptr %329, i32 0, i32 12
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  store i32 4, ptr %11, align 4
  br label %332

332:                                              ; preds = %328, %326
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  br label %333

333:                                              ; preds = %332, %301
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %334

334:                                              ; preds = %333, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %335

335:                                              ; preds = %334, %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #8
  %336 = load i32, ptr %11, align 4
  switch i32 %336, label %1447 [
    i32 4, label %1446
  ]

337:                                              ; preds = %241
  %338 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %339 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %338, i32 0, i32 5
  %340 = load i64, ptr %339, align 8, !tbaa !14
  %341 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %340, i64 noundef 16384)
  br i1 %341, label %343, label %342

342:                                              ; preds = %337
  br label %1446

343:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #8
  %344 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %344) #8
  %345 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %34, ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #8
  store i32 %345, ptr %33, align 4, !tbaa !45
  %346 = load i32, ptr %33, align 4, !tbaa !45
  %347 = icmp ne i32 %346, 0
  %348 = call i1 @llvm.expect.i1(i1 %347, i1 false)
  br i1 %348, label %349, label %350

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

350:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @_ZSt11make_uniqueIN8fastgltf17MaterialClearcoatEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.307") align 8 %35)
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef @.str.90) #8
  %351 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %39) #8
  store { double, i32 } %351, ptr %40, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %38, ptr align 8 %40, i64 12, i1 false)
  %352 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %38, ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  store i32 %352, ptr %37, align 4, !tbaa !45
  %353 = load i32, ptr %37, align 4, !tbaa !45
  %354 = icmp eq i32 %353, 0
  br i1 %354, label %355, label %360

355:                                              ; preds = %350
  %356 = load double, ptr %36, align 8, !tbaa !47
  %357 = fptrunc double %356 to float
  %358 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %359 = getelementptr inbounds %"struct.fastgltf::MaterialClearcoat", ptr %358, i32 0, i32 0
  store float %357, ptr %359, align 8, !tbaa !61
  br label %366

360:                                              ; preds = %350
  %361 = load i32, ptr %37, align 4, !tbaa !45
  %362 = icmp ne i32 %361, 20
  %363 = call i1 @llvm.expect.i1(i1 %362, i1 false)
  br i1 %363, label %364, label %365

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

365:                                              ; preds = %360
  br label %366

366:                                              ; preds = %365, %355
  store i32 0, ptr %11, align 4
  br label %367

367:                                              ; preds = %366, %364
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  %368 = load i32, ptr %11, align 4
  switch i32 %368, label %470 [
    i32 0, label %369
  ]

369:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef @.str.91) #8
  %370 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %371 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %370, i32 0, i32 5
  %372 = load i64, ptr %371, align 8, !tbaa !14
  %373 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 0
  %374 = load i64, ptr %373, align 8
  %375 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 1
  %376 = load ptr, ptr %375, align 8
  %377 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 %374, ptr %376, ptr noundef %41, i64 noundef %372, i8 noundef zeroext 0) #8
  store i64 %377, ptr %42, align 8, !tbaa !59
  %378 = load i64, ptr %42, align 8, !tbaa !59
  %379 = icmp eq i64 %378, 0
  %380 = call i1 @llvm.expect.i1(i1 %379, i1 true)
  br i1 %380, label %381, label %385

381:                                              ; preds = %369
  %382 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %383 = getelementptr inbounds %"struct.fastgltf::MaterialClearcoat", ptr %382, i32 0, i32 2
  %384 = 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) %383, ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  br label %391

385:                                              ; preds = %369
  %386 = load i64, ptr %42, align 8, !tbaa !59
  %387 = icmp ne i64 %386, 8
  br i1 %387, label %388, label %390

388:                                              ; preds = %385
  %389 = load i64, ptr %42, align 8, !tbaa !59
  store i64 %389, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %392

390:                                              ; preds = %385
  br label %391

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

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

394:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef @.str.92) #8
  %395 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %47) #8
  store { double, i32 } %395, ptr %48, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %46, ptr align 8 %48, i64 12, i1 false)
  %396 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  store i32 %396, ptr %45, align 4, !tbaa !45
  %397 = load i32, ptr %45, align 4, !tbaa !45
  %398 = icmp eq i32 %397, 0
  %399 = call i1 @llvm.expect.i1(i1 %398, i1 true)
  br i1 %399, label %400, label %405

400:                                              ; preds = %394
  %401 = load double, ptr %44, align 8, !tbaa !47
  %402 = fptrunc double %401 to float
  %403 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %404 = getelementptr inbounds %"struct.fastgltf::MaterialClearcoat", ptr %403, i32 0, i32 3
  store float %402, ptr %404, align 8, !tbaa !63
  br label %411

405:                                              ; preds = %394
  %406 = load i32, ptr %45, align 4, !tbaa !45
  %407 = icmp ne i32 %406, 20
  %408 = call i1 @llvm.expect.i1(i1 %407, i1 false)
  br i1 %408, label %409, label %410

409:                                              ; preds = %405
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %412

410:                                              ; preds = %405
  br label %411

411:                                              ; preds = %410, %400
  store i32 0, ptr %11, align 4
  br label %412

412:                                              ; preds = %411, %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  %413 = load i32, ptr %11, align 4
  switch i32 %413, label %468 [
    i32 0, label %414
  ]

414:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef @.str.93) #8
  %415 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %416 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %415, i32 0, i32 5
  %417 = load i64, ptr %416, align 8, !tbaa !14
  %418 = getelementptr inbounds { i64, ptr }, ptr %51, i32 0, i32 0
  %419 = load i64, ptr %418, align 8
  %420 = getelementptr inbounds { i64, ptr }, ptr %51, i32 0, i32 1
  %421 = load ptr, ptr %420, align 8
  %422 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 %419, ptr %421, ptr noundef %49, i64 noundef %417, i8 noundef zeroext 0) #8
  store i64 %422, ptr %50, align 8, !tbaa !59
  %423 = load i64, ptr %50, align 8, !tbaa !59
  %424 = icmp eq i64 %423, 0
  br i1 %424, label %425, label %429

425:                                              ; preds = %414
  %426 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %427 = getelementptr inbounds %"struct.fastgltf::MaterialClearcoat", ptr %426, i32 0, i32 5
  %428 = 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) %427, ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  br label %435

429:                                              ; preds = %414
  %430 = load i64, ptr %50, align 8, !tbaa !59
  %431 = icmp ne i64 %430, 8
  br i1 %431, label %432, label %434

432:                                              ; preds = %429
  %433 = load i64, ptr %50, align 8, !tbaa !59
  store i64 %433, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %436

434:                                              ; preds = %429
  br label %435

435:                                              ; preds = %434, %425
  store i32 0, ptr %11, align 4
  br label %436

436:                                              ; preds = %435, %432
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  %437 = load i32, ptr %11, align 4
  switch i32 %437, label %467 [
    i32 0, label %438
  ]

438:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef @.str.94) #8
  %439 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %440 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %439, i32 0, i32 5
  %441 = load i64, ptr %440, align 8, !tbaa !14
  %442 = getelementptr inbounds { i64, ptr }, ptr %54, i32 0, i32 0
  %443 = load i64, ptr %442, align 8
  %444 = getelementptr inbounds { i64, ptr }, ptr %54, i32 0, i32 1
  %445 = load ptr, ptr %444, align 8
  %446 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 %443, ptr %445, ptr noundef %52, i64 noundef %441, i8 noundef zeroext 0) #8
  store i64 %446, ptr %53, align 8, !tbaa !59
  %447 = load i64, ptr %53, align 8, !tbaa !59
  %448 = icmp eq i64 %447, 0
  br i1 %448, label %449, label %453

449:                                              ; preds = %438
  %450 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %451 = getelementptr inbounds %"struct.fastgltf::MaterialClearcoat", ptr %450, i32 0, i32 6
  %452 = 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) %451, ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  br label %459

453:                                              ; preds = %438
  %454 = load i64, ptr %53, align 8, !tbaa !59
  %455 = icmp ne i64 %454, 8
  br i1 %455, label %456, label %458

456:                                              ; preds = %453
  %457 = load i64, ptr %53, align 8, !tbaa !59
  store i64 %457, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %460

458:                                              ; preds = %453
  br label %459

459:                                              ; preds = %458, %449
  store i32 0, ptr %11, align 4
  br label %460

460:                                              ; preds = %459, %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  %461 = load i32, ptr %11, align 4
  switch i32 %461, label %466 [
    i32 0, label %462
  ]

462:                                              ; preds = %460
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.fastgltf::Material", ptr %463, i32 0, i32 13
  %465 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  store i32 4, ptr %11, align 4
  br label %466

466:                                              ; preds = %462, %460
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  br label %467

467:                                              ; preds = %466, %436
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  br label %468

468:                                              ; preds = %467, %412
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %469

469:                                              ; preds = %468, %392
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #8
  br label %470

470:                                              ; preds = %469, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %471

471:                                              ; preds = %470, %349
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #8
  %472 = load i32, ptr %11, align 4
  switch i32 %472, label %1447 [
    i32 4, label %1446
  ]

473:                                              ; preds = %241
  %474 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %475 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %474, i32 0, i32 5
  %476 = load i64, ptr %475, align 8, !tbaa !14
  %477 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %476, i64 noundef 8388608)
  br i1 %477, label %479, label %478

478:                                              ; preds = %473
  br label %1446

479:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #8
  %480 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %480) #8
  %481 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %57, ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #8
  store i32 %481, ptr %56, align 4, !tbaa !45
  %482 = load i32, ptr %56, align 4, !tbaa !45
  %483 = icmp ne i32 %482, 0
  %484 = call i1 @llvm.expect.i1(i1 %483, i1 false)
  br i1 %484, label %485, label %486

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

486:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %61) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef @.str.95) #8
  %487 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %61) #8
  store { double, i32 } %487, ptr %62, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %60, ptr align 8 %62, i64 12, i1 false)
  %488 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %60, ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  store i32 %488, ptr %59, align 4, !tbaa !45
  %489 = load i32, ptr %59, align 4, !tbaa !45
  %490 = icmp eq i32 %489, 0
  %491 = call i1 @llvm.expect.i1(i1 %490, i1 true)
  br i1 %491, label %492, label %497

492:                                              ; preds = %486
  %493 = load double, ptr %58, align 8, !tbaa !47
  %494 = fptrunc double %493 to float
  %495 = load ptr, ptr %7, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.fastgltf::Material", ptr %495, i32 0, i32 11
  store float %494, ptr %496, align 4, !tbaa !64
  br label %503

497:                                              ; preds = %486
  %498 = load i32, ptr %59, align 4, !tbaa !45
  %499 = icmp ne i32 %498, 20
  %500 = call i1 @llvm.expect.i1(i1 %499, i1 false)
  br i1 %500, label %501, label %502

501:                                              ; preds = %497
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %504

502:                                              ; preds = %497
  br label %503

503:                                              ; preds = %502, %492
  store i32 4, ptr %11, align 4
  br label %504

504:                                              ; preds = %503, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %505

505:                                              ; preds = %504, %485
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #8
  %506 = load i32, ptr %11, align 4
  switch i32 %506, label %1447 [
    i32 4, label %1446
  ]

507:                                              ; preds = %241
  %508 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %509 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %508, i32 0, i32 5
  %510 = load i64, ptr %509, align 8, !tbaa !14
  %511 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %510, i64 noundef 32768)
  br i1 %511, label %513, label %512

512:                                              ; preds = %507
  br label %1446

513:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #8
  %514 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %65, ptr noundef nonnull align 8 dereferenceable(16) %514) #8
  %515 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %65, ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #8
  store i32 %515, ptr %64, align 4, !tbaa !45
  %516 = load i32, ptr %64, align 4, !tbaa !45
  %517 = icmp ne i32 %516, 0
  %518 = call i1 @llvm.expect.i1(i1 %517, i1 false)
  br i1 %518, label %519, label %520

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

520:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef @.str.96) #8
  %521 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %69) #8
  store { double, i32 } %521, ptr %70, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %68, ptr align 8 %70, i64 12, i1 false)
  %522 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %68, ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  store i32 %522, ptr %67, align 4, !tbaa !45
  %523 = load i32, ptr %67, align 4, !tbaa !45
  %524 = icmp eq i32 %523, 0
  %525 = call i1 @llvm.expect.i1(i1 %524, i1 true)
  br i1 %525, label %526, label %531

526:                                              ; preds = %520
  %527 = load double, ptr %66, align 8, !tbaa !47
  %528 = fptrunc double %527 to float
  %529 = load ptr, ptr %7, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.fastgltf::Material", ptr %529, i32 0, i32 9
  store float %528, ptr %530, align 4, !tbaa !133
  br label %537

531:                                              ; preds = %520
  %532 = load i32, ptr %67, align 4, !tbaa !45
  %533 = icmp ne i32 %532, 20
  %534 = call i1 @llvm.expect.i1(i1 %533, i1 false)
  br i1 %534, label %535, label %536

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

536:                                              ; preds = %531
  br label %537

537:                                              ; preds = %536, %526
  store i32 4, ptr %11, align 4
  br label %538

538:                                              ; preds = %537, %535
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %539

539:                                              ; preds = %538, %519
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  %540 = load i32, ptr %11, align 4
  switch i32 %540, label %1447 [
    i32 4, label %1446
  ]

541:                                              ; preds = %241
  %542 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %543 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %542, i32 0, i32 5
  %544 = load i64, ptr %543, align 8, !tbaa !14
  %545 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %544, i64 noundef 1024)
  br i1 %545, label %547, label %546

546:                                              ; preds = %541
  br label %1446

547:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %73) #8
  %548 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %548) #8
  %549 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %73, ptr noundef nonnull align 8 dereferenceable(16) %71) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %73) #8
  store i32 %549, ptr %72, align 4, !tbaa !45
  %550 = load i32, ptr %72, align 4, !tbaa !45
  %551 = icmp ne i32 %550, 0
  %552 = call i1 @llvm.expect.i1(i1 %551, i1 false)
  br i1 %552, label %553, label %554

553:                                              ; preds = %547
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %573

554:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %77) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %77, ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef @.str.97) #8
  %555 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %77) #8
  store { double, i32 } %555, ptr %78, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %76, ptr align 8 %78, i64 12, i1 false)
  %556 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %76, ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  store i32 %556, ptr %75, align 4, !tbaa !45
  %557 = load i32, ptr %75, align 4, !tbaa !45
  %558 = icmp eq i32 %557, 0
  %559 = call i1 @llvm.expect.i1(i1 %558, i1 true)
  br i1 %559, label %560, label %565

560:                                              ; preds = %554
  %561 = load double, ptr %74, align 8, !tbaa !47
  %562 = fptrunc double %561 to float
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.fastgltf::Material", ptr %563, i32 0, i32 10
  store float %562, ptr %564, align 8, !tbaa !134
  br label %571

565:                                              ; preds = %554
  %566 = load i32, ptr %75, align 4, !tbaa !45
  %567 = icmp ne i32 %566, 20
  %568 = call i1 @llvm.expect.i1(i1 %567, i1 false)
  br i1 %568, label %569, label %570

569:                                              ; preds = %565
  store i64 4, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %572

570:                                              ; preds = %565
  br label %571

571:                                              ; preds = %570, %560
  store i32 4, ptr %11, align 4
  br label %572

572:                                              ; preds = %571, %569
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %573

573:                                              ; preds = %572, %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #8
  %574 = load i32, ptr %11, align 4
  switch i32 %574, label %1447 [
    i32 4, label %1446
  ]

575:                                              ; preds = %241
  %576 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %577 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %576, i32 0, i32 5
  %578 = load i64, ptr %577, align 8, !tbaa !14
  %579 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %578, i64 noundef 2048)
  br i1 %579, label %581, label %580

580:                                              ; preds = %575
  br label %1446

581:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #8
  %582 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %582) #8
  %583 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %81, ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #8
  store i32 %583, ptr %80, align 4, !tbaa !45
  %584 = load i32, ptr %80, align 4, !tbaa !45
  %585 = icmp ne i32 %584, 0
  %586 = call i1 @llvm.expect.i1(i1 %585, i1 false)
  br i1 %586, label %587, label %588

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

588:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  call void @_ZSt11make_uniqueIN8fastgltf19MaterialIridescenceEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.315") align 8 %82)
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %86) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.98) #8
  %589 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %86) #8
  store { double, i32 } %589, ptr %87, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %85, ptr align 8 %87, i64 12, i1 false)
  %590 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %85, ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  store i32 %590, ptr %84, align 4, !tbaa !45
  %591 = load i32, ptr %84, align 4, !tbaa !45
  %592 = icmp eq i32 %591, 0
  %593 = call i1 @llvm.expect.i1(i1 %592, i1 true)
  br i1 %593, label %594, label %599

594:                                              ; preds = %588
  %595 = load double, ptr %83, align 8, !tbaa !47
  %596 = fptrunc double %595 to float
  %597 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %598 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %597, i32 0, i32 0
  store float %596, ptr %598, align 8, !tbaa !135
  br label %605

599:                                              ; preds = %588
  %600 = load i32, ptr %84, align 4, !tbaa !45
  %601 = icmp ne i32 %600, 20
  %602 = call i1 @llvm.expect.i1(i1 %601, i1 false)
  br i1 %602, label %603, label %604

603:                                              ; preds = %599
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %606

604:                                              ; preds = %599
  br label %605

605:                                              ; preds = %604, %594
  store i32 0, ptr %11, align 4
  br label %606

606:                                              ; preds = %605, %603
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #8
  %607 = load i32, ptr %11, align 4
  switch i32 %607, label %725 [
    i32 0, label %608
  ]

608:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 24, ptr %88) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef @.str.99) #8
  %609 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %610 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %609, i32 0, i32 5
  %611 = load i64, ptr %610, align 8, !tbaa !14
  %612 = getelementptr inbounds { i64, ptr }, ptr %90, i32 0, i32 0
  %613 = load i64, ptr %612, align 8
  %614 = getelementptr inbounds { i64, ptr }, ptr %90, i32 0, i32 1
  %615 = load ptr, ptr %614, align 8
  %616 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 %613, ptr %615, ptr noundef %88, i64 noundef %611, i8 noundef zeroext 0) #8
  store i64 %616, ptr %89, align 8, !tbaa !59
  %617 = load i64, ptr %89, align 8, !tbaa !59
  %618 = icmp eq i64 %617, 0
  %619 = call i1 @llvm.expect.i1(i1 %618, i1 true)
  br i1 %619, label %620, label %624

620:                                              ; preds = %608
  %621 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %622 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %621, i32 0, i32 2
  %623 = 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) %622, ptr noundef nonnull align 8 dereferenceable(24) %88) #8
  br label %630

624:                                              ; preds = %608
  %625 = load i64, ptr %89, align 8, !tbaa !59
  %626 = icmp ne i64 %625, 8
  br i1 %626, label %627, label %629

627:                                              ; preds = %624
  %628 = load i64, ptr %89, align 8, !tbaa !59
  store i64 %628, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %631

629:                                              ; preds = %624
  br label %630

630:                                              ; preds = %629, %620
  store i32 0, ptr %11, align 4
  br label %631

631:                                              ; preds = %630, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  %632 = load i32, ptr %11, align 4
  switch i32 %632, label %724 [
    i32 0, label %633
  ]

633:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %94, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.100) #8
  %634 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %94) #8
  store { double, i32 } %634, ptr %95, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %93, ptr align 8 %95, i64 12, i1 false)
  %635 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %93, ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #8
  store i32 %635, ptr %92, align 4, !tbaa !45
  %636 = load i32, ptr %92, align 4, !tbaa !45
  %637 = icmp eq i32 %636, 0
  br i1 %637, label %638, label %643

638:                                              ; preds = %633
  %639 = load double, ptr %91, align 8, !tbaa !47
  %640 = fptrunc double %639 to float
  %641 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %642 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %641, i32 0, i32 3
  store float %640, ptr %642, align 8, !tbaa !137
  br label %649

643:                                              ; preds = %633
  %644 = load i32, ptr %92, align 4, !tbaa !45
  %645 = icmp ne i32 %644, 20
  %646 = call i1 @llvm.expect.i1(i1 %645, i1 false)
  br i1 %646, label %647, label %648

647:                                              ; preds = %643
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %650

648:                                              ; preds = %643
  br label %649

649:                                              ; preds = %648, %638
  store i32 0, ptr %11, align 4
  br label %650

650:                                              ; preds = %649, %647
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #8
  %651 = load i32, ptr %11, align 4
  switch i32 %651, label %723 [
    i32 0, label %652
  ]

652:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %99) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %99, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.101) #8
  %653 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %99) #8
  store { double, i32 } %653, ptr %100, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %100, i64 12, i1 false)
  %654 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %98, ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  store i32 %654, ptr %97, align 4, !tbaa !45
  %655 = load i32, ptr %97, align 4, !tbaa !45
  %656 = icmp eq i32 %655, 0
  %657 = call i1 @llvm.expect.i1(i1 %656, i1 true)
  br i1 %657, label %658, label %663

658:                                              ; preds = %652
  %659 = load double, ptr %96, align 8, !tbaa !47
  %660 = fptrunc double %659 to float
  %661 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %662 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %661, i32 0, i32 4
  store float %660, ptr %662, align 4, !tbaa !138
  br label %669

663:                                              ; preds = %652
  %664 = load i32, ptr %97, align 4, !tbaa !45
  %665 = icmp ne i32 %664, 20
  %666 = call i1 @llvm.expect.i1(i1 %665, i1 false)
  br i1 %666, label %667, label %668

667:                                              ; preds = %663
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %670

668:                                              ; preds = %663
  br label %669

669:                                              ; preds = %668, %658
  store i32 0, ptr %11, align 4
  br label %670

670:                                              ; preds = %669, %667
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #8
  %671 = load i32, ptr %11, align 4
  switch i32 %671, label %722 [
    i32 0, label %672
  ]

672:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %104) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.102) #8
  %673 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %104) #8
  store { double, i32 } %673, ptr %105, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %105, i64 12, i1 false)
  %674 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %103, ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #8
  store i32 %674, ptr %102, align 4, !tbaa !45
  %675 = load i32, ptr %102, align 4, !tbaa !45
  %676 = icmp eq i32 %675, 0
  %677 = call i1 @llvm.expect.i1(i1 %676, i1 true)
  br i1 %677, label %678, label %683

678:                                              ; preds = %672
  %679 = load double, ptr %101, align 8, !tbaa !47
  %680 = fptrunc double %679 to float
  %681 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %682 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %681, i32 0, i32 5
  store float %680, ptr %682, align 8, !tbaa !139
  br label %689

683:                                              ; preds = %672
  %684 = load i32, ptr %102, align 4, !tbaa !45
  %685 = icmp ne i32 %684, 20
  %686 = call i1 @llvm.expect.i1(i1 %685, i1 false)
  br i1 %686, label %687, label %688

687:                                              ; preds = %683
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %690

688:                                              ; preds = %683
  br label %689

689:                                              ; preds = %688, %678
  store i32 0, ptr %11, align 4
  br label %690

690:                                              ; preds = %689, %687
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  %691 = load i32, ptr %11, align 4
  switch i32 %691, label %721 [
    i32 0, label %692
  ]

692:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 24, ptr %106) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %108, ptr noundef @.str.103) #8
  %693 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %694 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %693, i32 0, i32 5
  %695 = load i64, ptr %694, align 8, !tbaa !14
  %696 = getelementptr inbounds { i64, ptr }, ptr %108, i32 0, i32 0
  %697 = load i64, ptr %696, align 8
  %698 = getelementptr inbounds { i64, ptr }, ptr %108, i32 0, i32 1
  %699 = load ptr, ptr %698, align 8
  %700 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 %697, ptr %699, ptr noundef %106, i64 noundef %695, i8 noundef zeroext 0) #8
  store i64 %700, ptr %107, align 8, !tbaa !59
  %701 = load i64, ptr %107, align 8, !tbaa !59
  %702 = icmp eq i64 %701, 0
  br i1 %702, label %703, label %707

703:                                              ; preds = %692
  %704 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  %705 = getelementptr inbounds %"struct.fastgltf::MaterialIridescence", ptr %704, i32 0, i32 7
  %706 = 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) %705, ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  br label %713

707:                                              ; preds = %692
  %708 = load i64, ptr %107, align 8, !tbaa !59
  %709 = icmp ne i64 %708, 8
  br i1 %709, label %710, label %712

710:                                              ; preds = %707
  %711 = load i64, ptr %107, align 8, !tbaa !59
  store i64 %711, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %714

712:                                              ; preds = %707
  br label %713

713:                                              ; preds = %712, %703
  store i32 0, ptr %11, align 4
  br label %714

714:                                              ; preds = %713, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  %715 = load i32, ptr %11, align 4
  switch i32 %715, label %720 [
    i32 0, label %716
  ]

716:                                              ; preds = %714
  %717 = load ptr, ptr %7, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.fastgltf::Material", ptr %717, i32 0, i32 14
  %719 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %718, ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  store i32 4, ptr %11, align 4
  br label %720

720:                                              ; preds = %716, %714
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #8
  br label %721

721:                                              ; preds = %720, %690
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %722

722:                                              ; preds = %721, %670
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %723

723:                                              ; preds = %722, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %724

724:                                              ; preds = %723, %631
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #8
  br label %725

725:                                              ; preds = %724, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %726

726:                                              ; preds = %725, %587
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  %727 = load i32, ptr %11, align 4
  switch i32 %727, label %1447 [
    i32 4, label %1446
  ]

728:                                              ; preds = %241
  %729 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %730 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %729, i32 0, i32 5
  %731 = load i64, ptr %730, align 8, !tbaa !14
  %732 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %731, i64 noundef 65536)
  br i1 %732, label %734, label %733

733:                                              ; preds = %728
  br label %1446

734:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #8
  %735 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %111, ptr noundef nonnull align 8 dereferenceable(16) %735) #8
  %736 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %111, ptr noundef nonnull align 8 dereferenceable(16) %109) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #8
  store i32 %736, ptr %110, align 4, !tbaa !45
  %737 = load i32, ptr %110, align 4, !tbaa !45
  %738 = icmp ne i32 %737, 0
  %739 = call i1 @llvm.expect.i1(i1 %738, i1 false)
  br i1 %739, label %740, label %741

740:                                              ; preds = %734
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %891

741:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #8
  call void @_ZSt11make_uniqueIN8fastgltf13MaterialSheenEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.323") align 8 %112)
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %116) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %116, ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef @.str.104) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %115, ptr noundef nonnull align 8 dereferenceable(20) %116) #8
  %742 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %115, ptr noundef nonnull align 8 dereferenceable(16) %113) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #8
  store i32 %742, ptr %114, align 4, !tbaa !45
  %743 = load i32, ptr %114, align 4, !tbaa !45
  %744 = icmp eq i32 %743, 0
  br i1 %744, label %745, label %804

745:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  store i64 0, ptr %117, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  store ptr %113, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #8
  %746 = load ptr, ptr %118, align 8, !tbaa !5
  %747 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %746) #8
  %748 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %119, i32 0, i32 0
  %749 = getelementptr inbounds { ptr, i64 }, ptr %748, i32 0, i32 0
  %750 = extractvalue { ptr, i64 } %747, 0
  store ptr %750, ptr %749, align 8
  %751 = getelementptr inbounds { ptr, i64 }, ptr %748, i32 0, i32 1
  %752 = extractvalue { ptr, i64 } %747, 1
  store i64 %752, ptr %751, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #8
  %753 = load ptr, ptr %118, align 8, !tbaa !5
  %754 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %753) #8
  %755 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %120, i32 0, i32 0
  %756 = getelementptr inbounds { ptr, i64 }, ptr %755, i32 0, i32 0
  %757 = extractvalue { ptr, i64 } %754, 0
  store ptr %757, ptr %756, align 8
  %758 = getelementptr inbounds { ptr, i64 }, ptr %755, i32 0, i32 1
  %759 = extractvalue { ptr, i64 } %754, 1
  store i64 %759, ptr %758, align 8
  br label %760

760:                                              ; preds = %796, %745
  %761 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %119, ptr noundef nonnull align 8 dereferenceable(16) %120) #8
  br i1 %761, label %763, label %762

762:                                              ; preds = %760
  store i32 5, ptr %11, align 4
  br label %798

763:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #8
  %764 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %119) #8
  %765 = getelementptr inbounds %"class.simdjson::dom::element", ptr %121, i32 0, i32 0
  %766 = getelementptr inbounds { ptr, i64 }, ptr %765, i32 0, i32 0
  %767 = extractvalue { ptr, i64 } %764, 0
  store ptr %767, ptr %766, align 8
  %768 = getelementptr inbounds { ptr, i64 }, ptr %765, i32 0, i32 1
  %769 = extractvalue { ptr, i64 } %764, 1
  store i64 %769, ptr %768, align 8
  %770 = load i64, ptr %117, align 8, !tbaa !10
  %771 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  %772 = getelementptr inbounds %"struct.fastgltf::MaterialSheen", ptr %771, i32 0, i32 0
  %773 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %772) #8
  %774 = icmp uge i64 %770, %773
  br i1 %774, label %775, label %776

775:                                              ; preds = %763
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %793

776:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #8
  %777 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %121) #8
  store { double, i32 } %777, ptr %124, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %123, ptr align 8 %124, i64 12, i1 false)
  %778 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %123, ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  %779 = icmp ne i32 %778, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #8
  %780 = call i1 @llvm.expect.i1(i1 %779, i1 false)
  br i1 %780, label %781, label %782

781:                                              ; preds = %776
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %790

782:                                              ; preds = %776
  %783 = load double, ptr %122, align 8, !tbaa !47
  %784 = fptrunc double %783 to float
  %785 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  %786 = getelementptr inbounds %"struct.fastgltf::MaterialSheen", ptr %785, i32 0, i32 0
  %787 = load i64, ptr %117, align 8, !tbaa !10
  %788 = add i64 %787, 1
  store i64 %788, ptr %117, align 8, !tbaa !10
  %789 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %786, i64 noundef %787) #8
  store float %784, ptr %789, align 4, !tbaa !140
  store i32 0, ptr %11, align 4
  br label %790

790:                                              ; preds = %782, %781
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  %791 = load i32, ptr %11, align 4
  switch i32 %791, label %793 [
    i32 0, label %792
  ]

792:                                              ; preds = %790
  store i32 0, ptr %11, align 4
  br label %793

793:                                              ; preds = %792, %790, %775
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #8
  %794 = load i32, ptr %11, align 4
  switch i32 %794, label %798 [
    i32 0, label %795
  ]

795:                                              ; preds = %793
  br label %796

796:                                              ; preds = %795
  %797 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %119) #8
  br label %760

798:                                              ; preds = %793, %762
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  %799 = load i32, ptr %11, align 4
  switch i32 %799, label %801 [
    i32 5, label %800
  ]

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

801:                                              ; preds = %800, %798
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  %802 = load i32, ptr %11, align 4
  switch i32 %802, label %811 [
    i32 0, label %803
  ]

803:                                              ; preds = %801
  br label %810

804:                                              ; preds = %741
  %805 = load i32, ptr %114, align 4, !tbaa !45
  %806 = icmp ne i32 %805, 20
  %807 = call i1 @llvm.expect.i1(i1 %806, i1 false)
  br i1 %807, label %808, label %809

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

809:                                              ; preds = %804
  br label %810

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

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

813:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 24, ptr %125) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %125) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef @.str.105) #8
  %814 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %815 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %814, i32 0, i32 5
  %816 = load i64, ptr %815, align 8, !tbaa !14
  %817 = getelementptr inbounds { i64, ptr }, ptr %127, i32 0, i32 0
  %818 = load i64, ptr %817, align 8
  %819 = getelementptr inbounds { i64, ptr }, ptr %127, i32 0, i32 1
  %820 = load ptr, ptr %819, align 8
  %821 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %109, i64 %818, ptr %820, ptr noundef %125, i64 noundef %816, i8 noundef zeroext 0) #8
  store i64 %821, ptr %126, align 8, !tbaa !59
  %822 = load i64, ptr %126, align 8, !tbaa !59
  %823 = icmp eq i64 %822, 0
  %824 = call i1 @llvm.expect.i1(i1 %823, i1 true)
  br i1 %824, label %825, label %829

825:                                              ; preds = %813
  %826 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  %827 = getelementptr inbounds %"struct.fastgltf::MaterialSheen", ptr %826, i32 0, i32 2
  %828 = 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) %827, ptr noundef nonnull align 8 dereferenceable(24) %125) #8
  br label %835

829:                                              ; preds = %813
  %830 = load i64, ptr %126, align 8, !tbaa !59
  %831 = icmp ne i64 %830, 8
  br i1 %831, label %832, label %834

832:                                              ; preds = %829
  %833 = load i64, ptr %126, align 8, !tbaa !59
  store i64 %833, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %836

834:                                              ; preds = %829
  br label %835

835:                                              ; preds = %834, %825
  store i32 0, ptr %11, align 4
  br label %836

836:                                              ; preds = %835, %832
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  %837 = load i32, ptr %11, align 4
  switch i32 %837, label %889 [
    i32 0, label %838
  ]

838:                                              ; preds = %836
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %131) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %131, ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef @.str.106) #8
  %839 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %131) #8
  store { double, i32 } %839, ptr %132, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %130, ptr align 8 %132, i64 12, i1 false)
  %840 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %130, ptr noundef nonnull align 8 dereferenceable(8) %128) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %131) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #8
  store i32 %840, ptr %129, align 4, !tbaa !45
  %841 = load i32, ptr %129, align 4, !tbaa !45
  %842 = icmp eq i32 %841, 0
  %843 = call i1 @llvm.expect.i1(i1 %842, i1 true)
  br i1 %843, label %844, label %849

844:                                              ; preds = %838
  %845 = load double, ptr %128, align 8, !tbaa !47
  %846 = fptrunc double %845 to float
  %847 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  %848 = getelementptr inbounds %"struct.fastgltf::MaterialSheen", ptr %847, i32 0, i32 3
  store float %846, ptr %848, align 8, !tbaa !141
  br label %855

849:                                              ; preds = %838
  %850 = load i32, ptr %129, align 4, !tbaa !45
  %851 = icmp ne i32 %850, 20
  %852 = call i1 @llvm.expect.i1(i1 %851, i1 false)
  br i1 %852, label %853, label %854

853:                                              ; preds = %849
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %856

854:                                              ; preds = %849
  br label %855

855:                                              ; preds = %854, %844
  store i32 0, ptr %11, align 4
  br label %856

856:                                              ; preds = %855, %853
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #8
  %857 = load i32, ptr %11, align 4
  switch i32 %857, label %888 [
    i32 0, label %858
  ]

858:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 24, ptr %133) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef @.str.107) #8
  %859 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %860 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %859, i32 0, i32 5
  %861 = load i64, ptr %860, align 8, !tbaa !14
  %862 = getelementptr inbounds { i64, ptr }, ptr %135, i32 0, i32 0
  %863 = load i64, ptr %862, align 8
  %864 = getelementptr inbounds { i64, ptr }, ptr %135, i32 0, i32 1
  %865 = load ptr, ptr %864, align 8
  %866 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %109, i64 %863, ptr %865, ptr noundef %133, i64 noundef %861, i8 noundef zeroext 0) #8
  store i64 %866, ptr %134, align 8, !tbaa !59
  %867 = load i64, ptr %134, align 8, !tbaa !59
  %868 = icmp eq i64 %867, 0
  %869 = call i1 @llvm.expect.i1(i1 %868, i1 true)
  br i1 %869, label %870, label %874

870:                                              ; preds = %858
  %871 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  %872 = getelementptr inbounds %"struct.fastgltf::MaterialSheen", ptr %871, i32 0, i32 5
  %873 = 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) %872, ptr noundef nonnull align 8 dereferenceable(24) %133) #8
  br label %880

874:                                              ; preds = %858
  %875 = load i64, ptr %134, align 8, !tbaa !59
  %876 = icmp ne i64 %875, 8
  br i1 %876, label %877, label %879

877:                                              ; preds = %874
  %878 = load i64, ptr %134, align 8, !tbaa !59
  store i64 %878, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %881

879:                                              ; preds = %874
  br label %880

880:                                              ; preds = %879, %870
  store i32 0, ptr %11, align 4
  br label %881

881:                                              ; preds = %880, %877
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #8
  %882 = load i32, ptr %11, align 4
  switch i32 %882, label %887 [
    i32 0, label %883
  ]

883:                                              ; preds = %881
  %884 = load ptr, ptr %7, align 8, !tbaa !5
  %885 = getelementptr inbounds %"struct.fastgltf::Material", ptr %884, i32 0, i32 15
  %886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %885, ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  store i32 4, ptr %11, align 4
  br label %887

887:                                              ; preds = %883, %881
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %133) #8
  br label %888

888:                                              ; preds = %887, %856
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  br label %889

889:                                              ; preds = %888, %836
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %125) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %125) #8
  br label %890

890:                                              ; preds = %889, %811
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #8
  call void @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  br label %891

891:                                              ; preds = %890, %740
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #8
  %892 = load i32, ptr %11, align 4
  switch i32 %892, label %1447 [
    i32 4, label %1446
  ]

893:                                              ; preds = %241
  %894 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %895 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %894, i32 0, i32 5
  %896 = load i64, ptr %895, align 8, !tbaa !14
  %897 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %896, i64 noundef 512)
  br i1 %897, label %899, label %898

898:                                              ; preds = %893
  br label %1446

899:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 16, ptr %136) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %138) #8
  %900 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %138, ptr noundef nonnull align 8 dereferenceable(16) %900) #8
  %901 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %138, ptr noundef nonnull align 8 dereferenceable(16) %136) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %138) #8
  store i32 %901, ptr %137, align 4, !tbaa !45
  %902 = load i32, ptr %137, align 4, !tbaa !45
  %903 = icmp ne i32 %902, 0
  %904 = call i1 @llvm.expect.i1(i1 %903, i1 false)
  br i1 %904, label %905, label %906

905:                                              ; preds = %899
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1056

906:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  call void @_ZSt11make_uniqueIN8fastgltf16MaterialSpecularEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.331") align 8 %139)
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %143) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %143, ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef @.str.108) #8
  %907 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %143) #8
  store { double, i32 } %907, ptr %144, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %142, ptr align 8 %144, i64 12, i1 false)
  %908 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %142, ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #8
  store i32 %908, ptr %141, align 4, !tbaa !45
  %909 = load i32, ptr %141, align 4, !tbaa !45
  %910 = icmp eq i32 %909, 0
  br i1 %910, label %911, label %916

911:                                              ; preds = %906
  %912 = load double, ptr %140, align 8, !tbaa !47
  %913 = fptrunc double %912 to float
  %914 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  %915 = getelementptr inbounds %"struct.fastgltf::MaterialSpecular", ptr %914, i32 0, i32 0
  store float %913, ptr %915, align 8, !tbaa !143
  br label %922

916:                                              ; preds = %906
  %917 = load i32, ptr %141, align 4, !tbaa !45
  %918 = icmp ne i32 %917, 20
  %919 = call i1 @llvm.expect.i1(i1 %918, i1 false)
  br i1 %919, label %920, label %921

920:                                              ; preds = %916
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %923

921:                                              ; preds = %916
  br label %922

922:                                              ; preds = %921, %911
  store i32 0, ptr %11, align 4
  br label %923

923:                                              ; preds = %922, %920
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #8
  %924 = load i32, ptr %11, align 4
  switch i32 %924, label %1055 [
    i32 0, label %925
  ]

925:                                              ; preds = %923
  call void @llvm.lifetime.start.p0(i64 24, ptr %145) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %145) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef @.str.109) #8
  %926 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %927 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %926, i32 0, i32 5
  %928 = load i64, ptr %927, align 8, !tbaa !14
  %929 = getelementptr inbounds { i64, ptr }, ptr %147, i32 0, i32 0
  %930 = load i64, ptr %929, align 8
  %931 = getelementptr inbounds { i64, ptr }, ptr %147, i32 0, i32 1
  %932 = load ptr, ptr %931, align 8
  %933 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 %930, ptr %932, ptr noundef %145, i64 noundef %928, i8 noundef zeroext 0) #8
  store i64 %933, ptr %146, align 8, !tbaa !59
  %934 = load i64, ptr %146, align 8, !tbaa !59
  %935 = icmp eq i64 %934, 0
  %936 = call i1 @llvm.expect.i1(i1 %935, i1 true)
  br i1 %936, label %937, label %941

937:                                              ; preds = %925
  %938 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  %939 = getelementptr inbounds %"struct.fastgltf::MaterialSpecular", ptr %938, i32 0, i32 2
  %940 = 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) %939, ptr noundef nonnull align 8 dereferenceable(24) %145) #8
  br label %947

941:                                              ; preds = %925
  %942 = load i64, ptr %146, align 8, !tbaa !59
  %943 = icmp ne i64 %942, 8
  br i1 %943, label %944, label %946

944:                                              ; preds = %941
  %945 = load i64, ptr %146, align 8, !tbaa !59
  store i64 %945, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %948

946:                                              ; preds = %941
  br label %947

947:                                              ; preds = %946, %937
  store i32 0, ptr %11, align 4
  br label %948

948:                                              ; preds = %947, %944
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #8
  %949 = load i32, ptr %11, align 4
  switch i32 %949, label %1054 [
    i32 0, label %950
  ]

950:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %150) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %151) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %151, ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef @.str.110) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %150, ptr noundef nonnull align 8 dereferenceable(20) %151) #8
  %951 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %150, ptr noundef nonnull align 8 dereferenceable(16) %148) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %151) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %150) #8
  store i32 %951, ptr %149, align 4, !tbaa !45
  %952 = load i32, ptr %149, align 4, !tbaa !45
  %953 = icmp eq i32 %952, 0
  %954 = call i1 @llvm.expect.i1(i1 %953, i1 true)
  br i1 %954, label %955, label %1014

955:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #8
  store i64 0, ptr %152, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #8
  store ptr %148, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %154) #8
  %956 = load ptr, ptr %153, align 8, !tbaa !5
  %957 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %956) #8
  %958 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %154, i32 0, i32 0
  %959 = getelementptr inbounds { ptr, i64 }, ptr %958, i32 0, i32 0
  %960 = extractvalue { ptr, i64 } %957, 0
  store ptr %960, ptr %959, align 8
  %961 = getelementptr inbounds { ptr, i64 }, ptr %958, i32 0, i32 1
  %962 = extractvalue { ptr, i64 } %957, 1
  store i64 %962, ptr %961, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #8
  %963 = load ptr, ptr %153, align 8, !tbaa !5
  %964 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %963) #8
  %965 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %155, i32 0, i32 0
  %966 = getelementptr inbounds { ptr, i64 }, ptr %965, i32 0, i32 0
  %967 = extractvalue { ptr, i64 } %964, 0
  store ptr %967, ptr %966, align 8
  %968 = getelementptr inbounds { ptr, i64 }, ptr %965, i32 0, i32 1
  %969 = extractvalue { ptr, i64 } %964, 1
  store i64 %969, ptr %968, align 8
  br label %970

970:                                              ; preds = %1006, %955
  %971 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %154, ptr noundef nonnull align 8 dereferenceable(16) %155) #8
  br i1 %971, label %973, label %972

972:                                              ; preds = %970
  store i32 7, ptr %11, align 4
  br label %1008

973:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #8
  %974 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %154) #8
  %975 = getelementptr inbounds %"class.simdjson::dom::element", ptr %156, i32 0, i32 0
  %976 = getelementptr inbounds { ptr, i64 }, ptr %975, i32 0, i32 0
  %977 = extractvalue { ptr, i64 } %974, 0
  store ptr %977, ptr %976, align 8
  %978 = getelementptr inbounds { ptr, i64 }, ptr %975, i32 0, i32 1
  %979 = extractvalue { ptr, i64 } %974, 1
  store i64 %979, ptr %978, align 8
  %980 = load i64, ptr %152, align 8, !tbaa !10
  %981 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  %982 = getelementptr inbounds %"struct.fastgltf::MaterialSpecular", ptr %981, i32 0, i32 3
  %983 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %982) #8
  %984 = icmp uge i64 %980, %983
  br i1 %984, label %985, label %986

985:                                              ; preds = %973
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1003

986:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %158) #8
  %987 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %156) #8
  store { double, i32 } %987, ptr %159, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %158, ptr align 8 %159, i64 12, i1 false)
  %988 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %158, ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  %989 = icmp ne i32 %988, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #8
  %990 = call i1 @llvm.expect.i1(i1 %989, i1 false)
  br i1 %990, label %991, label %992

991:                                              ; preds = %986
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1000

992:                                              ; preds = %986
  %993 = load double, ptr %157, align 8, !tbaa !47
  %994 = fptrunc double %993 to float
  %995 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  %996 = getelementptr inbounds %"struct.fastgltf::MaterialSpecular", ptr %995, i32 0, i32 3
  %997 = load i64, ptr %152, align 8, !tbaa !10
  %998 = add i64 %997, 1
  store i64 %998, ptr %152, align 8, !tbaa !10
  %999 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %996, i64 noundef %997) #8
  store float %994, ptr %999, align 4, !tbaa !140
  store i32 0, ptr %11, align 4
  br label %1000

1000:                                             ; preds = %992, %991
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #8
  %1001 = load i32, ptr %11, align 4
  switch i32 %1001, label %1003 [
    i32 0, label %1002
  ]

1002:                                             ; preds = %1000
  store i32 0, ptr %11, align 4
  br label %1003

1003:                                             ; preds = %1002, %1000, %985
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #8
  %1004 = load i32, ptr %11, align 4
  switch i32 %1004, label %1008 [
    i32 0, label %1005
  ]

1005:                                             ; preds = %1003
  br label %1006

1006:                                             ; preds = %1005
  %1007 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %154) #8
  br label %970

1008:                                             ; preds = %1003, %972
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #8
  %1009 = load i32, ptr %11, align 4
  switch i32 %1009, label %1011 [
    i32 7, label %1010
  ]

1010:                                             ; preds = %1008
  store i32 0, ptr %11, align 4
  br label %1011

1011:                                             ; preds = %1010, %1008
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #8
  %1012 = load i32, ptr %11, align 4
  switch i32 %1012, label %1021 [
    i32 0, label %1013
  ]

1013:                                             ; preds = %1011
  br label %1020

1014:                                             ; preds = %950
  %1015 = load i32, ptr %149, align 4, !tbaa !45
  %1016 = icmp ne i32 %1015, 20
  %1017 = call i1 @llvm.expect.i1(i1 %1016, i1 false)
  br i1 %1017, label %1018, label %1019

1018:                                             ; preds = %1014
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1021

1019:                                             ; preds = %1014
  br label %1020

1020:                                             ; preds = %1019, %1013
  store i32 0, ptr %11, align 4
  br label %1021

1021:                                             ; preds = %1020, %1018, %1011
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #8
  %1022 = load i32, ptr %11, align 4
  switch i32 %1022, label %1053 [
    i32 0, label %1023
  ]

1023:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 24, ptr %160) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %162, ptr noundef @.str.111) #8
  %1024 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1025 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1024, i32 0, i32 5
  %1026 = load i64, ptr %1025, align 8, !tbaa !14
  %1027 = getelementptr inbounds { i64, ptr }, ptr %162, i32 0, i32 0
  %1028 = load i64, ptr %1027, align 8
  %1029 = getelementptr inbounds { i64, ptr }, ptr %162, i32 0, i32 1
  %1030 = load ptr, ptr %1029, align 8
  %1031 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 %1028, ptr %1030, ptr noundef %160, i64 noundef %1026, i8 noundef zeroext 0) #8
  store i64 %1031, ptr %161, align 8, !tbaa !59
  %1032 = load i64, ptr %161, align 8, !tbaa !59
  %1033 = icmp eq i64 %1032, 0
  %1034 = call i1 @llvm.expect.i1(i1 %1033, i1 true)
  br i1 %1034, label %1035, label %1039

1035:                                             ; preds = %1023
  %1036 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  %1037 = getelementptr inbounds %"struct.fastgltf::MaterialSpecular", ptr %1036, i32 0, i32 5
  %1038 = 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) %1037, ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  br label %1045

1039:                                             ; preds = %1023
  %1040 = load i64, ptr %161, align 8, !tbaa !59
  %1041 = icmp ne i64 %1040, 8
  br i1 %1041, label %1042, label %1044

1042:                                             ; preds = %1039
  %1043 = load i64, ptr %161, align 8, !tbaa !59
  store i64 %1043, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1046

1044:                                             ; preds = %1039
  br label %1045

1045:                                             ; preds = %1044, %1035
  store i32 0, ptr %11, align 4
  br label %1046

1046:                                             ; preds = %1045, %1042
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #8
  %1047 = load i32, ptr %11, align 4
  switch i32 %1047, label %1052 [
    i32 0, label %1048
  ]

1048:                                             ; preds = %1046
  %1049 = load ptr, ptr %7, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1049, i32 0, i32 16
  %1051 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %1050, ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  store i32 4, ptr %11, align 4
  br label %1052

1052:                                             ; preds = %1048, %1046
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #8
  br label %1053

1053:                                             ; preds = %1052, %1021
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #8
  br label %1054

1054:                                             ; preds = %1053, %948
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %145) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %145) #8
  br label %1055

1055:                                             ; preds = %1054, %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  call void @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1056

1056:                                             ; preds = %1055, %905
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #8
  %1057 = load i32, ptr %11, align 4
  switch i32 %1057, label %1447 [
    i32 4, label %1446
  ]

1058:                                             ; preds = %241
  %1059 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1060 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1059, i32 0, i32 5
  %1061 = load i64, ptr %1060, align 8, !tbaa !14
  %1062 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %1061, i64 noundef 8192)
  br i1 %1062, label %1064, label %1063

1063:                                             ; preds = %1058
  br label %1446

1064:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %165) #8
  %1065 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %165, ptr noundef nonnull align 8 dereferenceable(16) %1065) #8
  %1066 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %165, ptr noundef nonnull align 8 dereferenceable(16) %163) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %165) #8
  store i32 %1066, ptr %164, align 4, !tbaa !45
  %1067 = load i32, ptr %164, align 4, !tbaa !45
  %1068 = icmp ne i32 %1067, 0
  %1069 = call i1 @llvm.expect.i1(i1 %1068, i1 false)
  br i1 %1069, label %1070, label %1071

1070:                                             ; preds = %1064
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1122

1071:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #8
  call void @_ZSt11make_uniqueIN8fastgltf20MaterialTransmissionEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.339") align 8 %166)
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %169) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %170) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %170, ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef @.str.112) #8
  %1072 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %170) #8
  store { double, i32 } %1072, ptr %171, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %169, ptr align 8 %171, i64 12, i1 false)
  %1073 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %169, ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %170) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #8
  store i32 %1073, ptr %168, align 4, !tbaa !45
  %1074 = load i32, ptr %168, align 4, !tbaa !45
  %1075 = icmp eq i32 %1074, 0
  %1076 = call i1 @llvm.expect.i1(i1 %1075, i1 true)
  br i1 %1076, label %1077, label %1082

1077:                                             ; preds = %1071
  %1078 = load double, ptr %167, align 8, !tbaa !47
  %1079 = fptrunc double %1078 to float
  %1080 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  %1081 = getelementptr inbounds %"struct.fastgltf::MaterialTransmission", ptr %1080, i32 0, i32 0
  store float %1079, ptr %1081, align 8, !tbaa !145
  br label %1088

1082:                                             ; preds = %1071
  %1083 = load i32, ptr %168, align 4, !tbaa !45
  %1084 = icmp ne i32 %1083, 20
  %1085 = call i1 @llvm.expect.i1(i1 %1084, i1 false)
  br i1 %1085, label %1086, label %1087

1086:                                             ; preds = %1082
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1089

1087:                                             ; preds = %1082
  br label %1088

1088:                                             ; preds = %1087, %1077
  store i32 0, ptr %11, align 4
  br label %1089

1089:                                             ; preds = %1088, %1086
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #8
  %1090 = load i32, ptr %11, align 4
  switch i32 %1090, label %1121 [
    i32 0, label %1091
  ]

1091:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 24, ptr %172) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %174, ptr noundef @.str.113) #8
  %1092 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1093 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1092, i32 0, i32 5
  %1094 = load i64, ptr %1093, align 8, !tbaa !14
  %1095 = getelementptr inbounds { i64, ptr }, ptr %174, i32 0, i32 0
  %1096 = load i64, ptr %1095, align 8
  %1097 = getelementptr inbounds { i64, ptr }, ptr %174, i32 0, i32 1
  %1098 = load ptr, ptr %1097, align 8
  %1099 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %163, i64 %1096, ptr %1098, ptr noundef %172, i64 noundef %1094, i8 noundef zeroext 0) #8
  store i64 %1099, ptr %173, align 8, !tbaa !59
  %1100 = load i64, ptr %173, align 8, !tbaa !59
  %1101 = icmp eq i64 %1100, 0
  %1102 = call i1 @llvm.expect.i1(i1 %1101, i1 true)
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1091
  %1104 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  %1105 = getelementptr inbounds %"struct.fastgltf::MaterialTransmission", ptr %1104, i32 0, i32 2
  %1106 = 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) %1105, ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  br label %1113

1107:                                             ; preds = %1091
  %1108 = load i64, ptr %173, align 8, !tbaa !59
  %1109 = icmp ne i64 %1108, 8
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1107
  %1111 = load i64, ptr %173, align 8, !tbaa !59
  store i64 %1111, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1114

1112:                                             ; preds = %1107
  br label %1113

1113:                                             ; preds = %1112, %1103
  store i32 0, ptr %11, align 4
  br label %1114

1114:                                             ; preds = %1113, %1110
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #8
  %1115 = load i32, ptr %11, align 4
  switch i32 %1115, label %1120 [
    i32 0, label %1116
  ]

1116:                                             ; preds = %1114
  %1117 = load ptr, ptr %7, align 8, !tbaa !5
  %1118 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1117, i32 0, i32 17
  %1119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %1118, ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  store i32 4, ptr %11, align 4
  br label %1120

1120:                                             ; preds = %1116, %1114
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %172) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %172) #8
  br label %1121

1121:                                             ; preds = %1120, %1089
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  call void @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #8
  br label %1122

1122:                                             ; preds = %1121, %1070
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #8
  %1123 = load i32, ptr %11, align 4
  switch i32 %1123, label %1447 [
    i32 4, label %1446
  ]

1124:                                             ; preds = %241
  %1125 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1126 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1125, i32 0, i32 5
  %1127 = load i64, ptr %1126, align 8, !tbaa !14
  %1128 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %1127, i64 noundef 131072)
  br i1 %1128, label %1130, label %1129

1129:                                             ; preds = %1124
  br label %1446

1130:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %177) #8
  %1131 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %177, ptr noundef nonnull align 8 dereferenceable(16) %1131) #8
  %1132 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %177, ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %177) #8
  store i32 %1132, ptr %176, align 4, !tbaa !45
  %1133 = load i32, ptr %176, align 4, !tbaa !45
  %1134 = icmp eq i32 %1133, 0
  %1135 = call i1 @llvm.expect.i1(i1 %1134, i1 true)
  br i1 %1135, label %1136, label %1139

1136:                                             ; preds = %1130
  %1137 = load ptr, ptr %7, align 8, !tbaa !5
  %1138 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1137, i32 0, i32 7
  store i8 1, ptr %1138, align 2, !tbaa !147
  br label %1140

1139:                                             ; preds = %1130
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1141

1140:                                             ; preds = %1136
  store i32 4, ptr %11, align 4
  br label %1141

1141:                                             ; preds = %1140, %1139
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #8
  %1142 = load i32, ptr %11, align 4
  switch i32 %1142, label %1447 [
    i32 4, label %1446
  ]

1143:                                             ; preds = %241
  %1144 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1145 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1144, i32 0, i32 5
  %1146 = load i64, ptr %1145, align 8, !tbaa !14
  %1147 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %1146, i64 noundef 4096)
  br i1 %1147, label %1149, label %1148

1148:                                             ; preds = %1143
  br label %1446

1149:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 16, ptr %178) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %180) #8
  %1150 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %180, ptr noundef nonnull align 8 dereferenceable(16) %1150) #8
  %1151 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %180, ptr noundef nonnull align 8 dereferenceable(16) %178) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %180) #8
  store i32 %1151, ptr %179, align 4, !tbaa !45
  %1152 = load i32, ptr %179, align 4, !tbaa !45
  %1153 = icmp ne i32 %1152, 0
  %1154 = call i1 @llvm.expect.i1(i1 %1153, i1 false)
  br i1 %1154, label %1155, label %1156

1155:                                             ; preds = %1149
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1302

1156:                                             ; preds = %1149
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #8
  call void @_ZSt11make_uniqueIN8fastgltf14MaterialVolumeEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.347") align 8 %181)
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %184) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %185) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %185, ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef @.str.114) #8
  %1157 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %185) #8
  store { double, i32 } %1157, ptr %186, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %184, ptr align 8 %186, i64 12, i1 false)
  %1158 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %184, ptr noundef nonnull align 8 dereferenceable(8) %182) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %185) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %184) #8
  store i32 %1158, ptr %183, align 4, !tbaa !45
  %1159 = load i32, ptr %183, align 4, !tbaa !45
  %1160 = icmp eq i32 %1159, 0
  %1161 = call i1 @llvm.expect.i1(i1 %1160, i1 true)
  br i1 %1161, label %1162, label %1167

1162:                                             ; preds = %1156
  %1163 = load double, ptr %182, align 8, !tbaa !47
  %1164 = fptrunc double %1163 to float
  %1165 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  %1166 = getelementptr inbounds %"struct.fastgltf::MaterialVolume", ptr %1165, i32 0, i32 0
  store float %1164, ptr %1166, align 8, !tbaa !148
  br label %1173

1167:                                             ; preds = %1156
  %1168 = load i32, ptr %183, align 4, !tbaa !45
  %1169 = icmp ne i32 %1168, 20
  %1170 = call i1 @llvm.expect.i1(i1 %1169, i1 false)
  br i1 %1170, label %1171, label %1172

1171:                                             ; preds = %1167
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1174

1172:                                             ; preds = %1167
  br label %1173

1173:                                             ; preds = %1172, %1162
  store i32 0, ptr %11, align 4
  br label %1174

1174:                                             ; preds = %1173, %1171
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #8
  %1175 = load i32, ptr %11, align 4
  switch i32 %1175, label %1301 [
    i32 0, label %1176
  ]

1176:                                             ; preds = %1174
  call void @llvm.lifetime.start.p0(i64 24, ptr %187) #8
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %187) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %189, ptr noundef @.str.115) #8
  %1177 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1178 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1177, i32 0, i32 5
  %1179 = load i64, ptr %1178, align 8, !tbaa !14
  %1180 = getelementptr inbounds { i64, ptr }, ptr %189, i32 0, i32 0
  %1181 = load i64, ptr %1180, align 8
  %1182 = getelementptr inbounds { i64, ptr }, ptr %189, i32 0, i32 1
  %1183 = load ptr, ptr %1182, align 8
  %1184 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %178, i64 %1181, ptr %1183, ptr noundef %187, i64 noundef %1179, i8 noundef zeroext 0) #8
  store i64 %1184, ptr %188, align 8, !tbaa !59
  %1185 = load i64, ptr %188, align 8, !tbaa !59
  %1186 = icmp eq i64 %1185, 0
  %1187 = call i1 @llvm.expect.i1(i1 %1186, i1 true)
  br i1 %1187, label %1188, label %1192

1188:                                             ; preds = %1176
  %1189 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  %1190 = getelementptr inbounds %"struct.fastgltf::MaterialVolume", ptr %1189, i32 0, i32 2
  %1191 = 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) %1190, ptr noundef nonnull align 8 dereferenceable(24) %187) #8
  br label %1198

1192:                                             ; preds = %1176
  %1193 = load i64, ptr %188, align 8, !tbaa !59
  %1194 = icmp ne i64 %1193, 8
  br i1 %1194, label %1195, label %1197

1195:                                             ; preds = %1192
  %1196 = load i64, ptr %188, align 8, !tbaa !59
  store i64 %1196, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1199

1197:                                             ; preds = %1192
  br label %1198

1198:                                             ; preds = %1197, %1188
  store i32 0, ptr %11, align 4
  br label %1199

1199:                                             ; preds = %1198, %1195
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #8
  %1200 = load i32, ptr %11, align 4
  switch i32 %1200, label %1300 [
    i32 0, label %1201
  ]

1201:                                             ; preds = %1199
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %192) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %193) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %193, ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef @.str.116) #8
  %1202 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %193) #8
  store { double, i32 } %1202, ptr %194, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %192, ptr align 8 %194, i64 12, i1 false)
  %1203 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %192, ptr noundef nonnull align 8 dereferenceable(8) %190) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #8
  store i32 %1203, ptr %191, align 4, !tbaa !45
  %1204 = load i32, ptr %191, align 4, !tbaa !45
  %1205 = icmp eq i32 %1204, 0
  %1206 = call i1 @llvm.expect.i1(i1 %1205, i1 true)
  br i1 %1206, label %1207, label %1212

1207:                                             ; preds = %1201
  %1208 = load double, ptr %190, align 8, !tbaa !47
  %1209 = fptrunc double %1208 to float
  %1210 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  %1211 = getelementptr inbounds %"struct.fastgltf::MaterialVolume", ptr %1210, i32 0, i32 3
  store float %1209, ptr %1211, align 8, !tbaa !150
  br label %1218

1212:                                             ; preds = %1201
  %1213 = load i32, ptr %191, align 4, !tbaa !45
  %1214 = icmp ne i32 %1213, 20
  %1215 = call i1 @llvm.expect.i1(i1 %1214, i1 false)
  br i1 %1215, label %1216, label %1217

1216:                                             ; preds = %1212
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1219

1217:                                             ; preds = %1212
  br label %1218

1218:                                             ; preds = %1217, %1207
  store i32 0, ptr %11, align 4
  br label %1219

1219:                                             ; preds = %1218, %1216
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #8
  %1220 = load i32, ptr %11, align 4
  switch i32 %1220, label %1299 [
    i32 0, label %1221
  ]

1221:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 16, ptr %195) #8
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %196) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %197) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %198) #8
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.0") align 8 %198, ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef @.str.117) #8
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result.23") align 8 %197, ptr noundef nonnull align 8 dereferenceable(20) %198) #8
  %1222 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %197, ptr noundef nonnull align 8 dereferenceable(16) %195) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %198) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %197) #8
  store i32 %1222, ptr %196, align 4, !tbaa !45
  %1223 = load i32, ptr %196, align 4, !tbaa !45
  %1224 = icmp eq i32 %1223, 0
  %1225 = call i1 @llvm.expect.i1(i1 %1224, i1 true)
  br i1 %1225, label %1226, label %1285

1226:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #8
  store i64 0, ptr %199, align 8, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #8
  store ptr %195, ptr %200, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %201) #8
  %1227 = load ptr, ptr %200, align 8, !tbaa !5
  %1228 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1227) #8
  %1229 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %201, i32 0, i32 0
  %1230 = getelementptr inbounds { ptr, i64 }, ptr %1229, i32 0, i32 0
  %1231 = extractvalue { ptr, i64 } %1228, 0
  store ptr %1231, ptr %1230, align 8
  %1232 = getelementptr inbounds { ptr, i64 }, ptr %1229, i32 0, i32 1
  %1233 = extractvalue { ptr, i64 } %1228, 1
  store i64 %1233, ptr %1232, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %202) #8
  %1234 = load ptr, ptr %200, align 8, !tbaa !5
  %1235 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1234) #8
  %1236 = getelementptr inbounds %"class.simdjson::dom::array::iterator", ptr %202, i32 0, i32 0
  %1237 = getelementptr inbounds { ptr, i64 }, ptr %1236, i32 0, i32 0
  %1238 = extractvalue { ptr, i64 } %1235, 0
  store ptr %1238, ptr %1237, align 8
  %1239 = getelementptr inbounds { ptr, i64 }, ptr %1236, i32 0, i32 1
  %1240 = extractvalue { ptr, i64 } %1235, 1
  store i64 %1240, ptr %1239, align 8
  br label %1241

1241:                                             ; preds = %1277, %1226
  %1242 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %201, ptr noundef nonnull align 8 dereferenceable(16) %202) #8
  br i1 %1242, label %1244, label %1243

1243:                                             ; preds = %1241
  store i32 9, ptr %11, align 4
  br label %1279

1244:                                             ; preds = %1241
  call void @llvm.lifetime.start.p0(i64 16, ptr %203) #8
  %1245 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %201) #8
  %1246 = getelementptr inbounds %"class.simdjson::dom::element", ptr %203, i32 0, i32 0
  %1247 = getelementptr inbounds { ptr, i64 }, ptr %1246, i32 0, i32 0
  %1248 = extractvalue { ptr, i64 } %1245, 0
  store ptr %1248, ptr %1247, align 8
  %1249 = getelementptr inbounds { ptr, i64 }, ptr %1246, i32 0, i32 1
  %1250 = extractvalue { ptr, i64 } %1245, 1
  store i64 %1250, ptr %1249, align 8
  %1251 = load i64, ptr %199, align 8, !tbaa !10
  %1252 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  %1253 = getelementptr inbounds %"struct.fastgltf::MaterialVolume", ptr %1252, i32 0, i32 4
  %1254 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1253) #8
  %1255 = icmp uge i64 %1251, %1254
  br i1 %1255, label %1256, label %1257

1256:                                             ; preds = %1244
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1274

1257:                                             ; preds = %1244
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %205) #8
  %1258 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %203) #8
  store { double, i32 } %1258, ptr %206, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %205, ptr align 8 %206, i64 12, i1 false)
  %1259 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %205, ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  %1260 = icmp ne i32 %1259, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %205) #8
  %1261 = call i1 @llvm.expect.i1(i1 %1260, i1 false)
  br i1 %1261, label %1262, label %1263

1262:                                             ; preds = %1257
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1271

1263:                                             ; preds = %1257
  %1264 = load double, ptr %204, align 8, !tbaa !47
  %1265 = fptrunc double %1264 to float
  %1266 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  %1267 = getelementptr inbounds %"struct.fastgltf::MaterialVolume", ptr %1266, i32 0, i32 4
  %1268 = load i64, ptr %199, align 8, !tbaa !10
  %1269 = add i64 %1268, 1
  store i64 %1269, ptr %199, align 8, !tbaa !10
  %1270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %1267, i64 noundef %1268) #8
  store float %1265, ptr %1270, align 4, !tbaa !140
  store i32 0, ptr %11, align 4
  br label %1271

1271:                                             ; preds = %1263, %1262
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  %1272 = load i32, ptr %11, align 4
  switch i32 %1272, label %1274 [
    i32 0, label %1273
  ]

1273:                                             ; preds = %1271
  store i32 0, ptr %11, align 4
  br label %1274

1274:                                             ; preds = %1273, %1271, %1256
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #8
  %1275 = load i32, ptr %11, align 4
  switch i32 %1275, label %1279 [
    i32 0, label %1276
  ]

1276:                                             ; preds = %1274
  br label %1277

1277:                                             ; preds = %1276
  %1278 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %201) #8
  br label %1241

1279:                                             ; preds = %1274, %1243
  call void @llvm.lifetime.end.p0(i64 16, ptr %202) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #8
  %1280 = load i32, ptr %11, align 4
  switch i32 %1280, label %1282 [
    i32 9, label %1281
  ]

1281:                                             ; preds = %1279
  store i32 0, ptr %11, align 4
  br label %1282

1282:                                             ; preds = %1281, %1279
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #8
  %1283 = load i32, ptr %11, align 4
  switch i32 %1283, label %1292 [
    i32 0, label %1284
  ]

1284:                                             ; preds = %1282
  br label %1291

1285:                                             ; preds = %1221
  %1286 = load i32, ptr %196, align 4, !tbaa !45
  %1287 = icmp ne i32 %1286, 20
  %1288 = call i1 @llvm.expect.i1(i1 %1287, i1 false)
  br i1 %1288, label %1289, label %1290

1289:                                             ; preds = %1285
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1292

1290:                                             ; preds = %1285
  br label %1291

1291:                                             ; preds = %1290, %1284
  store i32 0, ptr %11, align 4
  br label %1292

1292:                                             ; preds = %1291, %1289, %1282
  call void @llvm.lifetime.end.p0(i64 4, ptr %196) #8
  %1293 = load i32, ptr %11, align 4
  switch i32 %1293, label %1298 [
    i32 0, label %1294
  ]

1294:                                             ; preds = %1292
  %1295 = load ptr, ptr %7, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1295, i32 0, i32 18
  %1297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %1296, ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  store i32 4, ptr %11, align 4
  br label %1298

1298:                                             ; preds = %1294, %1292
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #8
  br label %1299

1299:                                             ; preds = %1298, %1219
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #8
  br label %1300

1300:                                             ; preds = %1299, %1199
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %187) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %187) #8
  br label %1301

1301:                                             ; preds = %1300, %1174
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #8
  call void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #8
  br label %1302

1302:                                             ; preds = %1301, %1155
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #8
  %1303 = load i32, ptr %11, align 4
  switch i32 %1303, label %1447 [
    i32 4, label %1446
  ]

1304:                                             ; preds = %241
  %1305 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1306 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1305, i32 0, i32 5
  %1307 = load i64, ptr %1306, align 8, !tbaa !14
  %1308 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %1307, i64 noundef 2097152)
  br i1 %1308, label %1310, label %1309

1309:                                             ; preds = %1304
  br label %1446

1310:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 16, ptr %207) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %207) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %208) #8
  %1311 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %208, ptr noundef nonnull align 8 dereferenceable(16) %1311) #8
  %1312 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %208, ptr noundef nonnull align 8 dereferenceable(16) %207) #8
  %1313 = icmp ne i32 %1312, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %208) #8
  %1314 = call i1 @llvm.expect.i1(i1 %1313, i1 false)
  br i1 %1314, label %1315, label %1316

1315:                                             ; preds = %1310
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1346

1316:                                             ; preds = %1310
  call void @llvm.lifetime.start.p0(i64 24, ptr %209) #8
  %1317 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %209, i32 0, i32 0
  store i64 0, ptr %1317, align 8, !tbaa !151
  %1318 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %209, i32 0, i32 1
  store i64 0, ptr %1318, align 8, !tbaa !159
  %1319 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %209, i32 0, i32 2
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %1319) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef @.str.118) #8
  %1320 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1321 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1320, i32 0, i32 5
  %1322 = load i64, ptr %1321, align 8, !tbaa !14
  %1323 = getelementptr inbounds { i64, ptr }, ptr %211, i32 0, i32 0
  %1324 = load i64, ptr %1323, align 8
  %1325 = getelementptr inbounds { i64, ptr }, ptr %211, i32 0, i32 1
  %1326 = load ptr, ptr %1325, align 8
  %1327 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %207, i64 %1324, ptr %1326, ptr noundef %209, i64 noundef %1322, i8 noundef zeroext 0) #8
  store i64 %1327, ptr %210, align 8, !tbaa !59
  %1328 = load i64, ptr %210, align 8, !tbaa !59
  %1329 = icmp eq i64 %1328, 0
  %1330 = call i1 @llvm.expect.i1(i1 %1329, i1 true)
  br i1 %1330, label %1331, label %1335

1331:                                             ; preds = %1316
  %1332 = load ptr, ptr %7, align 8, !tbaa !5
  %1333 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1332, i32 0, i32 19
  %1334 = 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) %1333, ptr noundef nonnull align 8 dereferenceable(24) %209) #8
  br label %1341

1335:                                             ; preds = %1316
  %1336 = load i64, ptr %210, align 8, !tbaa !59
  %1337 = icmp ne i64 %1336, 8
  br i1 %1337, label %1338, label %1340

1338:                                             ; preds = %1335
  %1339 = load i64, ptr %210, align 8, !tbaa !59
  store i64 %1339, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1342

1340:                                             ; preds = %1335
  br label %1341

1341:                                             ; preds = %1340, %1331
  store i32 0, ptr %11, align 4
  br label %1342

1342:                                             ; preds = %1341, %1338
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #8
  %1343 = load i32, ptr %11, align 4
  switch i32 %1343, label %1345 [
    i32 0, label %1344
  ]

1344:                                             ; preds = %1342
  store i32 4, ptr %11, align 4
  br label %1345

1345:                                             ; preds = %1344, %1342
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %209) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %209) #8
  br label %1346

1346:                                             ; preds = %1345, %1315
  call void @llvm.lifetime.end.p0(i64 16, ptr %207) #8
  %1347 = load i32, ptr %11, align 4
  switch i32 %1347, label %1447 [
    i32 4, label %1446
  ]

1348:                                             ; preds = %241
  %1349 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1350 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1349, i32 0, i32 5
  %1351 = load i64, ptr %1350, align 8, !tbaa !14
  %1352 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %1351, i64 noundef 4194304)
  br i1 %1352, label %1354, label %1353

1353:                                             ; preds = %1348
  br label %1446

1354:                                             ; preds = %1348
  call void @llvm.lifetime.start.p0(i64 16, ptr %212) #8
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %212) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %213) #8
  %1355 = getelementptr inbounds %"class.simdjson::dom::key_value_pair", ptr %12, i32 0, i32 1
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind writable sret(%"struct.simdjson::simdjson_result") align 8 %213, ptr noundef nonnull align 8 dereferenceable(16) %1355) #8
  %1356 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %213, ptr noundef nonnull align 8 dereferenceable(16) %212) #8
  %1357 = icmp ne i32 %1356, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr %213) #8
  %1358 = call i1 @llvm.expect.i1(i1 %1357, i1 false)
  br i1 %1358, label %1359, label %1360

1359:                                             ; preds = %1354
  store i64 5, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1443

1360:                                             ; preds = %1354
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #8
  call void @_ZSt11make_uniqueIN8fastgltf22MaterialPackedTexturesEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.355") align 8 %214)
  call void @llvm.lifetime.start.p0(i64 24, ptr %215) #8
  %1361 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %215, i32 0, i32 0
  store i64 0, ptr %1361, align 8, !tbaa !151
  %1362 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %215, i32 0, i32 1
  store i64 0, ptr %1362, align 8, !tbaa !159
  %1363 = getelementptr inbounds %"struct.fastgltf::TextureInfo", ptr %215, i32 0, i32 2
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %1363) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %217, ptr noundef @.str.119) #8
  %1364 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1365 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1364, i32 0, i32 5
  %1366 = load i64, ptr %1365, align 8, !tbaa !14
  %1367 = getelementptr inbounds { i64, ptr }, ptr %217, i32 0, i32 0
  %1368 = load i64, ptr %1367, align 8
  %1369 = getelementptr inbounds { i64, ptr }, ptr %217, i32 0, i32 1
  %1370 = load ptr, ptr %1369, align 8
  %1371 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %212, i64 %1368, ptr %1370, ptr noundef %215, i64 noundef %1366, i8 noundef zeroext 0) #8
  store i64 %1371, ptr %216, align 8, !tbaa !59
  %1372 = load i64, ptr %216, align 8, !tbaa !59
  %1373 = icmp eq i64 %1372, 0
  %1374 = call i1 @llvm.expect.i1(i1 %1373, i1 true)
  br i1 %1374, label %1375, label %1379

1375:                                             ; preds = %1360
  %1376 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  %1377 = getelementptr inbounds %"struct.fastgltf::MaterialPackedTextures", ptr %1376, i32 0, i32 0
  %1378 = 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) %1377, ptr noundef nonnull align 8 dereferenceable(24) %215) #8
  br label %1385

1379:                                             ; preds = %1360
  %1380 = load i64, ptr %216, align 8, !tbaa !59
  %1381 = icmp ne i64 %1380, 8
  br i1 %1381, label %1382, label %1384

1382:                                             ; preds = %1379
  %1383 = load i64, ptr %216, align 8, !tbaa !59
  store i64 %1383, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1386

1384:                                             ; preds = %1379
  br label %1385

1385:                                             ; preds = %1384, %1375
  store i32 0, ptr %11, align 4
  br label %1386

1386:                                             ; preds = %1385, %1382
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #8
  %1387 = load i32, ptr %11, align 4
  switch i32 %1387, label %1442 [
    i32 0, label %1388
  ]

1388:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef @.str.120) #8
  %1389 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1390 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1389, i32 0, i32 5
  %1391 = load i64, ptr %1390, align 8, !tbaa !14
  %1392 = getelementptr inbounds { i64, ptr }, ptr %219, i32 0, i32 0
  %1393 = load i64, ptr %1392, align 8
  %1394 = getelementptr inbounds { i64, ptr }, ptr %219, i32 0, i32 1
  %1395 = load ptr, ptr %1394, align 8
  %1396 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %212, i64 %1393, ptr %1395, ptr noundef %215, i64 noundef %1391, i8 noundef zeroext 0) #8
  store i64 %1396, ptr %218, align 8, !tbaa !59
  %1397 = load i64, ptr %218, align 8, !tbaa !59
  %1398 = icmp eq i64 %1397, 0
  %1399 = call i1 @llvm.expect.i1(i1 %1398, i1 true)
  br i1 %1399, label %1400, label %1404

1400:                                             ; preds = %1388
  %1401 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  %1402 = getelementptr inbounds %"struct.fastgltf::MaterialPackedTextures", ptr %1401, i32 0, i32 1
  %1403 = 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) %1402, ptr noundef nonnull align 8 dereferenceable(24) %215) #8
  br label %1410

1404:                                             ; preds = %1388
  %1405 = load i64, ptr %218, align 8, !tbaa !59
  %1406 = icmp ne i64 %1405, 8
  br i1 %1406, label %1407, label %1409

1407:                                             ; preds = %1404
  %1408 = load i64, ptr %218, align 8, !tbaa !59
  store i64 %1408, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1411

1409:                                             ; preds = %1404
  br label %1410

1410:                                             ; preds = %1409, %1400
  store i32 0, ptr %11, align 4
  br label %1411

1411:                                             ; preds = %1410, %1407
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #8
  %1412 = load i32, ptr %11, align 4
  switch i32 %1412, label %1442 [
    i32 0, label %1413
  ]

1413:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %221, ptr noundef @.str.121) #8
  %1414 = getelementptr inbounds %"class.fastgltf::Parser", ptr %222, i32 0, i32 1
  %1415 = getelementptr inbounds %"struct.fastgltf::ParserInternalConfig", ptr %1414, i32 0, i32 5
  %1416 = load i64, ptr %1415, align 8, !tbaa !14
  %1417 = getelementptr inbounds { i64, ptr }, ptr %221, i32 0, i32 0
  %1418 = load i64, ptr %1417, align 8
  %1419 = getelementptr inbounds { i64, ptr }, ptr %221, i32 0, i32 1
  %1420 = load ptr, ptr %1419, align 8
  %1421 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %212, i64 %1418, ptr %1420, ptr noundef %215, i64 noundef %1416, i8 noundef zeroext 0) #8
  store i64 %1421, ptr %220, align 8, !tbaa !59
  %1422 = load i64, ptr %220, align 8, !tbaa !59
  %1423 = icmp eq i64 %1422, 0
  %1424 = call i1 @llvm.expect.i1(i1 %1423, i1 true)
  br i1 %1424, label %1425, label %1429

1425:                                             ; preds = %1413
  %1426 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  %1427 = getelementptr inbounds %"struct.fastgltf::MaterialPackedTextures", ptr %1426, i32 0, i32 2
  %1428 = 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) %1427, ptr noundef nonnull align 8 dereferenceable(24) %215) #8
  br label %1435

1429:                                             ; preds = %1413
  %1430 = load i64, ptr %220, align 8, !tbaa !59
  %1431 = icmp ne i64 %1430, 8
  br i1 %1431, label %1432, label %1434

1432:                                             ; preds = %1429
  %1433 = load i64, ptr %220, align 8, !tbaa !59
  store i64 %1433, ptr %4, align 8
  store i32 1, ptr %11, align 4
  br label %1436

1434:                                             ; preds = %1429
  br label %1435

1435:                                             ; preds = %1434, %1425
  store i32 0, ptr %11, align 4
  br label %1436

1436:                                             ; preds = %1435, %1432
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #8
  %1437 = load i32, ptr %11, align 4
  switch i32 %1437, label %1442 [
    i32 0, label %1438
  ]

1438:                                             ; preds = %1436
  %1439 = load ptr, ptr %7, align 8, !tbaa !5
  %1440 = getelementptr inbounds %"struct.fastgltf::Material", ptr %1439, i32 0, i32 20
  %1441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %1440, ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  store i32 4, ptr %11, align 4
  br label %1442

1442:                                             ; preds = %1438, %1436, %1411, %1386
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %215) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %215) #8
  call void @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #8
  br label %1443

1443:                                             ; preds = %1442, %1359
  call void @llvm.lifetime.end.p0(i64 16, ptr %212) #8
  %1444 = load i32, ptr %11, align 4
  switch i32 %1444, label %1447 [
    i32 4, label %1446
  ]

1445:                                             ; preds = %241
  br label %1446

1446:                                             ; preds = %1445, %1443, %1353, %1346, %1309, %1302, %1148, %1141, %1129, %1122, %1063, %1056, %898, %891, %733, %726, %580, %573, %546, %539, %512, %505, %478, %471, %342, %335, %255
  store i32 0, ptr %11, align 4
  br label %1447

1447:                                             ; preds = %1446, %1443, %1346, %1302, %1141, %1122, %1056, %891, %726, %573, %539, %505, %471, %335
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  %1448 = load i32, ptr %11, align 4
  switch i32 %1448, label %1450 [
    i32 0, label %1449
  ]

1449:                                             ; preds = %1447
  store i32 0, ptr %11, align 4
  br label %1450

1450:                                             ; preds = %1449, %1447
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  %1451 = load i32, ptr %11, align 4
  switch i32 %1451, label %1455 [
    i32 0, label %1452
  ]

1452:                                             ; preds = %1450
  br label %1453

1453:                                             ; preds = %1452
  %1454 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br label %238

1455:                                             ; preds = %1450, %240
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  %1456 = load i32, ptr %11, align 4
  switch i32 %1456, label %1460 [
    i32 2, label %1457
    i32 1, label %1458
  ]

1457:                                             ; preds = %1455
  store i64 0, ptr %4, align 8
  br label %1458

1458:                                             ; preds = %1457, %1455
  %1459 = load i64, ptr %4, align 8
  ret i64 %1459

1460:                                             ; preds = %1455
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #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: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf22MaterialPackedTexturesEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.355") align 8) #7

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

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

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

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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }

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

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


; 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.0" = type { %"struct.simdjson::internal::simdjson_result_base.base.5", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.5" = type { %"struct.std::pair.base.4" }
%"struct.std::pair.base.4" = type <{ %"class.simdjson::dom::element", i32 }>
%"class.simdjson::dom::element" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::internal::tape_ref" = type { ptr, i64 }
%"struct.simdjson::simdjson_result.23" = type { %"struct.simdjson::internal::simdjson_result_base.base.28", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.28" = type { %"struct.std::pair.base.27" }
%"struct.std::pair.base.27" = type <{ %"class.simdjson::dom::array", i32 }>
%"class.simdjson::dom::array" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::key_value_pair" = type { %"class.std::basic_string_view", %"class.simdjson::dom::element" }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.simdjson::simdjson_result" = type { %"struct.simdjson::internal::simdjson_result_base.base", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base" = type { %"struct.std::pair.base" }
%"struct.std::pair.base" = type <{ %"class.simdjson::dom::object", i32 }>
%"class.simdjson::dom::object" = type { %"class.simdjson::internal::tape_ref" }
%"class.simdjson::dom::object::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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 }
%"struct.simdjson::simdjson_result.16" = type { %"struct.simdjson::internal::simdjson_result_base.base.21", [4 x i8] }
%"struct.simdjson::internal::simdjson_result_base.base.21" = type { %"struct.std::pair.base.20" }
%"struct.std::pair.base.20" = type <{ double, i32 }>
%"struct.fastgltf::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::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.simdjson::dom::array::iterator" = type { %"class.simdjson::internal::tape_ref" }
%"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::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 }

@_ZN8fastgltfL17crcStringFunctionE = external hidden local_unnamed_addr global ptr, align 8
@.str.87 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [14 x i8], align 1

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

; Function Attrs: mustprogress 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 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef, i64 noundef) local_unnamed_addr #1

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(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 @_ZNK8simdjson3dom6object8iteratorneERKS2_(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 void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.simdjson::dom::key_value_pair") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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: 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 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 uwtable
define dso_local noundef i64 @_ZN8fastgltf6Parser23parseMaterialExtensionsERN8simdjson3dom6objectERNS_8MaterialE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(312) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(368) %2) local_unnamed_addr #4 align 2 {
  %4 = alloca %"class.simdjson::dom::object::iterator", align 8
  %5 = alloca %"class.simdjson::dom::object::iterator", align 8
  %6 = alloca %"class.simdjson::dom::key_value_pair", align 8
  %7 = alloca %"class.simdjson::dom::object", align 8
  %8 = alloca %"struct.simdjson::simdjson_result", align 8
  %9 = alloca %"class.std::unique_ptr.299", align 8
  %10 = alloca double, align 8
  %11 = alloca %"struct.simdjson::simdjson_result.16", 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::TextureInfo", align 8
  %17 = alloca %"class.std::basic_string_view", align 8
  %18 = alloca %"class.simdjson::dom::object", align 8
  %19 = alloca %"struct.simdjson::simdjson_result", align 8
  %20 = alloca %"class.std::unique_ptr.307", align 8
  %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 %"struct.fastgltf::TextureInfo", align 8
  %25 = alloca %"class.std::basic_string_view", align 8
  %26 = alloca double, align 8
  %27 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %28 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %29 = alloca %"struct.fastgltf::TextureInfo", align 8
  %30 = alloca %"class.std::basic_string_view", align 8
  %31 = alloca %"struct.fastgltf::TextureInfo", align 8
  %32 = alloca %"class.std::basic_string_view", align 8
  %33 = alloca %"class.simdjson::dom::object", align 8
  %34 = alloca %"struct.simdjson::simdjson_result", align 8
  %35 = alloca double, align 8
  %36 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %37 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %38 = alloca %"class.simdjson::dom::object", align 8
  %39 = alloca %"struct.simdjson::simdjson_result", align 8
  %40 = alloca double, align 8
  %41 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %42 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %43 = alloca %"class.simdjson::dom::object", align 8
  %44 = alloca %"struct.simdjson::simdjson_result", align 8
  %45 = alloca double, align 8
  %46 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %47 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %48 = alloca %"class.simdjson::dom::object", align 8
  %49 = alloca %"struct.simdjson::simdjson_result", align 8
  %50 = alloca %"class.std::unique_ptr.315", align 8
  %51 = alloca double, align 8
  %52 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %53 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %54 = alloca %"struct.fastgltf::TextureInfo", align 8
  %55 = alloca %"class.std::basic_string_view", align 8
  %56 = alloca double, align 8
  %57 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %58 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %59 = alloca double, align 8
  %60 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %61 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %62 = alloca double, align 8
  %63 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %64 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %65 = alloca %"struct.fastgltf::TextureInfo", align 8
  %66 = alloca %"class.std::basic_string_view", align 8
  %67 = alloca %"class.simdjson::dom::object", align 8
  %68 = alloca %"struct.simdjson::simdjson_result", align 8
  %69 = alloca %"class.std::unique_ptr.323", align 8
  %70 = alloca %"class.simdjson::dom::array", align 8
  %71 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %72 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %73 = alloca %"class.simdjson::dom::array::iterator", align 8
  %74 = alloca %"class.simdjson::dom::array::iterator", align 8
  %75 = alloca %"class.simdjson::dom::element", align 8
  %76 = alloca double, align 8
  %77 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %78 = alloca %"struct.fastgltf::TextureInfo", align 8
  %79 = alloca %"class.std::basic_string_view", align 8
  %80 = alloca double, align 8
  %81 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %82 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %83 = alloca %"struct.fastgltf::TextureInfo", align 8
  %84 = alloca %"class.std::basic_string_view", align 8
  %85 = alloca %"class.simdjson::dom::object", align 8
  %86 = alloca %"struct.simdjson::simdjson_result", align 8
  %87 = alloca %"class.std::unique_ptr.331", align 8
  %88 = alloca double, align 8
  %89 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %90 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %91 = alloca %"struct.fastgltf::TextureInfo", align 8
  %92 = alloca %"class.std::basic_string_view", align 8
  %93 = alloca %"class.simdjson::dom::array", align 8
  %94 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %95 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %96 = alloca %"class.simdjson::dom::array::iterator", align 8
  %97 = alloca %"class.simdjson::dom::array::iterator", align 8
  %98 = alloca %"class.simdjson::dom::element", align 8
  %99 = alloca double, align 8
  %100 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %101 = alloca %"struct.fastgltf::TextureInfo", align 8
  %102 = alloca %"class.std::basic_string_view", align 8
  %103 = alloca %"class.simdjson::dom::object", align 8
  %104 = alloca %"struct.simdjson::simdjson_result", align 8
  %105 = alloca %"class.std::unique_ptr.339", align 8
  %106 = alloca double, align 8
  %107 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %108 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %109 = alloca %"struct.fastgltf::TextureInfo", align 8
  %110 = alloca %"class.std::basic_string_view", align 8
  %111 = alloca %"class.simdjson::dom::object", align 8
  %112 = alloca %"struct.simdjson::simdjson_result", align 8
  %113 = alloca %"class.simdjson::dom::object", align 8
  %114 = alloca %"struct.simdjson::simdjson_result", align 8
  %115 = alloca %"class.std::unique_ptr.347", align 8
  %116 = alloca double, align 8
  %117 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %118 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %119 = alloca %"struct.fastgltf::TextureInfo", align 8
  %120 = alloca %"class.std::basic_string_view", align 8
  %121 = alloca double, align 8
  %122 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %123 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %124 = alloca %"class.simdjson::dom::array", align 8
  %125 = alloca %"struct.simdjson::simdjson_result.23", align 8
  %126 = alloca %"struct.simdjson::simdjson_result.0", align 8
  %127 = alloca %"class.simdjson::dom::array::iterator", align 8
  %128 = alloca %"class.simdjson::dom::array::iterator", align 8
  %129 = alloca %"class.simdjson::dom::element", align 8
  %130 = alloca double, align 8
  %131 = alloca %"struct.simdjson::simdjson_result.16", align 8
  %132 = alloca %"class.simdjson::dom::object", align 8
  %133 = alloca %"struct.simdjson::simdjson_result", align 8
  %134 = alloca %"struct.fastgltf::TextureInfo", align 8
  %135 = alloca %"class.std::basic_string_view", align 8
  %136 = alloca %"class.simdjson::dom::object", align 8
  %137 = alloca %"struct.simdjson::simdjson_result", align 8
  %138 = alloca %"class.std::unique_ptr.355", align 8
  %139 = alloca %"struct.fastgltf::TextureInfo", align 8
  %140 = alloca %"class.std::basic_string_view", align 8
  %141 = alloca %"class.std::basic_string_view", align 8
  %142 = alloca %"class.std::basic_string_view", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  %143 = tail call { ptr, i64 } @_ZNK8simdjson3dom6object5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %144 = extractvalue { ptr, i64 } %143, 0
  store ptr %144, ptr %4, align 8
  %145 = getelementptr inbounds i8, ptr %4, i64 8
  %146 = extractvalue { ptr, i64 } %143, 1
  store i64 %146, ptr %145, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #7
  %147 = tail call { ptr, i64 } @_ZNK8simdjson3dom6object3endEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %148 = extractvalue { ptr, i64 } %147, 0
  store ptr %148, ptr %5, align 8
  %149 = getelementptr inbounds i8, ptr %5, i64 8
  %150 = extractvalue { ptr, i64 } %147, 1
  store i64 %150, ptr %149, align 8
  %151 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br i1 %151, label %.lr.ph801, label %.loopexit

.lr.ph801:                                        ; preds = %3
  %.sroa.2239.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8
  %152 = getelementptr inbounds i8, ptr %0, i64 48
  %153 = getelementptr inbounds i8, ptr %6, i64 16
  %154 = getelementptr inbounds i8, ptr %139, i64 16
  %155 = getelementptr inbounds i8, ptr %140, i64 8
  %156 = getelementptr inbounds i8, ptr %141, i64 8
  %157 = getelementptr inbounds i8, ptr %142, i64 8
  %158 = getelementptr inbounds i8, ptr %2, i64 320
  %159 = getelementptr inbounds i8, ptr %134, i64 16
  %160 = getelementptr inbounds i8, ptr %135, i64 8
  %161 = getelementptr inbounds i8, ptr %2, i64 288
  %.sroa.287.0..sroa_idx = getelementptr inbounds i8, ptr %117, i64 8
  %162 = getelementptr inbounds i8, ptr %120, i64 8
  %.sroa.278.0..sroa_idx = getelementptr inbounds i8, ptr %122, i64 8
  %163 = getelementptr inbounds i8, ptr %127, i64 8
  %164 = getelementptr inbounds i8, ptr %128, i64 8
  %165 = getelementptr inbounds i8, ptr %129, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %131, i64 8
  %166 = getelementptr inbounds i8, ptr %2, i64 280
  %167 = getelementptr inbounds i8, ptr %2, i64 214
  %.sroa.298.0..sroa_idx = getelementptr inbounds i8, ptr %107, i64 8
  %168 = getelementptr inbounds i8, ptr %110, i64 8
  %169 = getelementptr inbounds i8, ptr %2, i64 272
  %.sroa.2121.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 8
  %170 = getelementptr inbounds i8, ptr %92, i64 8
  %171 = getelementptr inbounds i8, ptr %96, i64 8
  %172 = getelementptr inbounds i8, ptr %97, i64 8
  %173 = getelementptr inbounds i8, ptr %98, i64 8
  %.sroa.2108.0..sroa_idx = getelementptr inbounds i8, ptr %100, i64 8
  %174 = getelementptr inbounds i8, ptr %102, i64 8
  %175 = getelementptr inbounds i8, ptr %2, i64 264
  %176 = getelementptr inbounds i8, ptr %73, i64 8
  %177 = getelementptr inbounds i8, ptr %74, i64 8
  %178 = getelementptr inbounds i8, ptr %75, i64 8
  %.sroa.2140.0..sroa_idx = getelementptr inbounds i8, ptr %77, i64 8
  %179 = getelementptr inbounds i8, ptr %79, i64 8
  %.sroa.2131.0..sroa_idx = getelementptr inbounds i8, ptr %81, i64 8
  %180 = getelementptr inbounds i8, ptr %84, i64 8
  %181 = getelementptr inbounds i8, ptr %2, i64 256
  %.sroa.2175.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 8
  %182 = getelementptr inbounds i8, ptr %55, i64 8
  %.sroa.2166.0..sroa_idx = getelementptr inbounds i8, ptr %57, i64 8
  %.sroa.2160.0..sroa_idx = getelementptr inbounds i8, ptr %60, i64 8
  %.sroa.2154.0..sroa_idx = getelementptr inbounds i8, ptr %63, i64 8
  %183 = getelementptr inbounds i8, ptr %66, i64 8
  %184 = getelementptr inbounds i8, ptr %2, i64 248
  %.sroa.2182.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 8
  %185 = getelementptr inbounds i8, ptr %2, i64 224
  %.sroa.2189.0..sroa_idx = getelementptr inbounds i8, ptr %41, i64 8
  %186 = getelementptr inbounds i8, ptr %2, i64 220
  %.sroa.2196.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  %187 = getelementptr inbounds i8, ptr %2, i64 228
  %.sroa.2218.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
  %188 = getelementptr inbounds i8, ptr %25, i64 8
  %.sroa.2209.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8
  %189 = getelementptr inbounds i8, ptr %30, i64 8
  %190 = getelementptr inbounds i8, ptr %32, i64 8
  %191 = getelementptr inbounds i8, ptr %2, i64 240
  %.sroa.2234.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.2228.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  %192 = getelementptr inbounds i8, ptr %17, i64 8
  %193 = getelementptr inbounds i8, ptr %2, i64 232
  br label %194

194:                                              ; preds = %.lr.ph801, %650
  %.0800 = phi i64 [ undef, %.lr.ph801 ], [ %.86, %650 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @_ZNK8simdjson3dom6object8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.simdjson::dom::key_value_pair") align 8 %6, ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  %195 = load ptr, ptr @_ZN8fastgltfL17crcStringFunctionE, align 8, !tbaa !5
  %.sroa.0238.0.copyload = load i64, ptr %6, align 8, !tbaa !9
  %.sroa.2239.0.copyload = load ptr, ptr %.sroa.2239.0..sroa_idx, align 8, !tbaa !5
  %196 = call noundef i32 %195(i64 %.sroa.0238.0.copyload, ptr %.sroa.2239.0.copyload)
  switch i32 %196, label %650 [
    i32 1337908995, label %197
    i32 1530164432, label %229
    i32 -1209778144, label %282
    i32 -200308239, label %294
    i32 -1932246985, label %306
    i32 -2019603899, label %318
    i32 1281863285, label %379
    i32 346229233, label %443
    i32 -1995278833, label %507
    i32 762788967, label %531
    i32 -1964642650, label %538
    i32 464978231, label %601
    i32 76454470, label %614
  ]

197:                                              ; preds = %194
  %198 = load i64, ptr %152, align 8, !tbaa !11
  %199 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %198, i64 noundef 262144)
  br i1 %199, label %200, label %650

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  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) %153) #7
  %201 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %8, ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  %.not501 = icmp eq i32 %201, 0
  br i1 %.not501, label %202, label %.thread525, !prof !42

.thread525:                                       ; preds = %200
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %.thread791

202:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @_ZSt11make_uniqueIN8fastgltf18MaterialAnisotropyEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.299") align 8 %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  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.87) #7
  %203 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %12) #7
  %.fca.0.extract231 = extractvalue { double, i32 } %203, 0
  %.fca.1.extract232 = extractvalue { double, i32 } %203, 1
  store double %.fca.0.extract231, ptr %11, align 8
  store i32 %.fca.1.extract232, ptr %.sroa.2234.0..sroa_idx, align 8
  %204 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  switch i32 %204, label %.thread529 [
    i32 0, label %205
    i32 20, label %209
  ], !prof !43

.thread529:                                       ; preds = %202
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %.thread791

205:                                              ; preds = %202
  %206 = load double, ptr %10, align 8, !tbaa !44
  %207 = fptrunc double %206 to float
  %208 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  store float %207, ptr %208, align 8, !tbaa !46
  br label %209

209:                                              ; preds = %205, %202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str.88) #7
  %210 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %15) #7
  %.fca.0.extract225 = extractvalue { double, i32 } %210, 0
  %.fca.1.extract226 = extractvalue { double, i32 } %210, 1
  store double %.fca.0.extract225, ptr %14, align 8
  store i32 %.fca.1.extract226, ptr %.sroa.2228.0..sroa_idx, align 8
  %211 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  switch i32 %211, label %.thread533 [
    i32 0, label %212
    i32 20, label %217
  ], !prof !43

.thread533:                                       ; preds = %209
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %.thread791

212:                                              ; preds = %209
  %213 = load double, ptr %13, align 8, !tbaa !44
  %214 = fptrunc double %213 to float
  %215 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  %216 = getelementptr inbounds i8, ptr %215, i64 4
  store float %214, ptr %216, align 4, !tbaa !55
  br label %217

217:                                              ; preds = %212, %209
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef @.str.89) #7
  %218 = load i64, ptr %152, align 8, !tbaa !11
  %219 = load i64, ptr %17, align 8
  %220 = load ptr, ptr %192, align 8
  %221 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 %219, ptr %220, ptr noundef nonnull %16, i64 noundef %218, i8 noundef zeroext 0) #7
  switch i64 %221, label %228 [
    i64 0, label %222
    i64 8, label %226
  ], !prof !56

222:                                              ; preds = %217
  %223 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  %224 = getelementptr inbounds i8, ptr %223, i64 8
  %225 = 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) %224, ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  br label %226

226:                                              ; preds = %222, %217
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br label %228

228:                                              ; preds = %226, %217
  %.3523 = phi i64 [ %.0800, %226 ], [ %221, %217 ]
  %cond56 = phi i1 [ true, %226 ], [ false, %217 ]
  %.3322 = phi i32 [ 4, %226 ], [ 1, %217 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br i1 %cond56, label %650, label %.thread791.loopexit

229:                                              ; preds = %194
  %230 = load i64, ptr %152, align 8, !tbaa !11
  %231 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %230, i64 noundef 16384)
  br i1 %231, label %232, label %650

232:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %233 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %19, ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  %.not495 = icmp eq i32 %233, 0
  br i1 %.not495, label %234, label %.thread558, !prof !42

.thread558:                                       ; preds = %232
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  br label %.thread791

234:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @_ZSt11make_uniqueIN8fastgltf17MaterialClearcoatEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.307") align 8 %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull @.str.90) #7
  %235 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %23) #7
  %.fca.0.extract215 = extractvalue { double, i32 } %235, 0
  %.fca.1.extract216 = extractvalue { double, i32 } %235, 1
  store double %.fca.0.extract215, ptr %22, align 8
  store i32 %.fca.1.extract216, ptr %.sroa.2218.0..sroa_idx, align 8
  %236 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  switch i32 %236, label %.thread562 [
    i32 0, label %237
    i32 20, label %241
  ], !prof !57

.thread562:                                       ; preds = %234
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  br label %.thread791

237:                                              ; preds = %234
  %238 = load double, ptr %21, align 8, !tbaa !44
  %239 = fptrunc double %238 to float
  %240 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  store float %239, ptr %240, align 8, !tbaa !58
  br label %241

241:                                              ; preds = %237, %234
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef @.str.91) #7
  %242 = load i64, ptr %152, align 8, !tbaa !11
  %243 = load i64, ptr %25, align 8
  %244 = load ptr, ptr %188, align 8
  %245 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 %243, ptr %244, ptr noundef nonnull %24, i64 noundef %242, i8 noundef zeroext 0) #7
  switch i64 %245, label %281 [
    i64 0, label %246
    i64 8, label %250
  ], !prof !56

246:                                              ; preds = %241
  %247 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %248 = getelementptr inbounds i8, ptr %247, i64 8
  %249 = 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) %248, ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  br label %250

250:                                              ; preds = %246, %241
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #7
  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) %18, ptr noundef nonnull @.str.92) #7
  %251 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %28) #7
  %.fca.0.extract206 = extractvalue { double, i32 } %251, 0
  %.fca.1.extract207 = extractvalue { double, i32 } %251, 1
  store double %.fca.0.extract206, ptr %27, align 8
  store i32 %.fca.1.extract207, ptr %.sroa.2209.0..sroa_idx, align 8
  %252 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %27, ptr noundef nonnull align 8 dereferenceable(8) %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #7
  switch i32 %252, label %280 [
    i32 0, label %253
    i32 20, label %258
  ], !prof !43

253:                                              ; preds = %250
  %254 = load double, ptr %26, align 8, !tbaa !44
  %255 = fptrunc double %254 to float
  %256 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %257 = getelementptr inbounds i8, ptr %256, i64 40
  store float %255, ptr %257, align 8, !tbaa !60
  br label %258

258:                                              ; preds = %253, %250
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef @.str.93) #7
  %259 = load i64, ptr %152, align 8, !tbaa !11
  %260 = load i64, ptr %30, align 8
  %261 = load ptr, ptr %189, align 8
  %262 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 %260, ptr %261, ptr noundef nonnull %29, i64 noundef %259, i8 noundef zeroext 0) #7
  switch i64 %262, label %279 [
    i64 0, label %263
    i64 8, label %267
  ]

263:                                              ; preds = %258
  %264 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %265 = getelementptr inbounds i8, ptr %264, i64 48
  %266 = 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) %265, ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  br label %267

267:                                              ; preds = %263, %258
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef @.str.94) #7
  %268 = load i64, ptr %152, align 8, !tbaa !11
  %269 = load i64, ptr %32, align 8
  %270 = load ptr, ptr %190, align 8
  %271 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 %269, ptr %270, ptr noundef nonnull %31, i64 noundef %268, i8 noundef zeroext 0) #7
  switch i64 %271, label %278 [
    i64 0, label %272
    i64 8, label %276
  ]

272:                                              ; preds = %267
  %273 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %274 = getelementptr inbounds i8, ptr %273, i64 80
  %275 = 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) %274, ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  br label %276

276:                                              ; preds = %272, %267
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br label %278

278:                                              ; preds = %267, %276
  %.11556 = phi i64 [ %.0800, %276 ], [ %271, %267 ]
  %.12331 = phi i32 [ 4, %276 ], [ 1, %267 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br label %279

279:                                              ; preds = %258, %278
  %.13332 = phi i32 [ %.12331, %278 ], [ 1, %258 ]
  %.12 = phi i64 [ %.11556, %278 ], [ %262, %258 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  br label %280

280:                                              ; preds = %250, %279
  %.14333 = phi i32 [ %.13332, %279 ], [ 1, %250 ]
  %.13 = phi i64 [ %.12, %279 ], [ 4, %250 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  br label %281

281:                                              ; preds = %280, %241
  %.15334 = phi i32 [ %.14333, %280 ], [ 1, %241 ]
  %.14 = phi i64 [ %.13, %280 ], [ %245, %241 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @_ZNSt10unique_ptrIN8fastgltf17MaterialClearcoatESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  %cond50 = icmp eq i32 %.15334, 4
  br i1 %cond50, label %650, label %.thread791.loopexit

282:                                              ; preds = %194
  %283 = load i64, ptr %152, align 8, !tbaa !11
  %284 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %283, i64 noundef 8388608)
  br i1 %284, label %285, label %650

285:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %286 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %34, ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #7
  %.not493 = icmp eq i32 %286, 0
  br i1 %.not493, label %287, label %.thread566, !prof !42

.thread566:                                       ; preds = %285
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %.thread791

287:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %37, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull @.str.95) #7
  %288 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %37) #7
  %.fca.0.extract193 = extractvalue { double, i32 } %288, 0
  %.fca.1.extract194 = extractvalue { double, i32 } %288, 1
  store double %.fca.0.extract193, ptr %36, align 8
  store i32 %.fca.1.extract194, ptr %.sroa.2196.0..sroa_idx, align 8
  %289 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %36, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  switch i32 %289, label %293 [
    i32 0, label %290
    i32 20, label %.thread570
  ], !prof !43

290:                                              ; preds = %287
  %291 = load double, ptr %35, align 8, !tbaa !44
  %292 = fptrunc double %291 to float
  store float %292, ptr %187, align 4, !tbaa !61
  br label %.thread570

.thread570:                                       ; preds = %290, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %650

293:                                              ; preds = %287
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #7
  br label %.thread791

294:                                              ; preds = %194
  %295 = load i64, ptr %152, align 8, !tbaa !11
  %296 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %295, i64 noundef 32768)
  br i1 %296, label %297, label %650

297:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %298 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %39, ptr noundef nonnull align 8 dereferenceable(16) %38) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  %.not491 = icmp eq i32 %298, 0
  br i1 %.not491, label %299, label %.thread574, !prof !42

.thread574:                                       ; preds = %297
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %.thread791

299:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #7
  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) %38, ptr noundef nonnull @.str.96) #7
  %300 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %42) #7
  %.fca.0.extract186 = extractvalue { double, i32 } %300, 0
  %.fca.1.extract187 = extractvalue { double, i32 } %300, 1
  store double %.fca.0.extract186, ptr %41, align 8
  store i32 %.fca.1.extract187, ptr %.sroa.2189.0..sroa_idx, align 8
  %301 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #7
  switch i32 %301, label %305 [
    i32 0, label %302
    i32 20, label %.thread578
  ], !prof !43

302:                                              ; preds = %299
  %303 = load double, ptr %40, align 8, !tbaa !44
  %304 = fptrunc double %303 to float
  store float %304, ptr %186, align 4, !tbaa !130
  br label %.thread578

.thread578:                                       ; preds = %302, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %650

305:                                              ; preds = %299
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  br label %.thread791

306:                                              ; preds = %194
  %307 = load i64, ptr %152, align 8, !tbaa !11
  %308 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %307, i64 noundef 1024)
  br i1 %308, label %309, label %650

309:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %310 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %44, ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #7
  %.not489 = icmp eq i32 %310, 0
  br i1 %.not489, label %311, label %.thread582, !prof !42

.thread582:                                       ; preds = %309
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  br label %.thread791

311:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %47) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull @.str.97) #7
  %312 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %47) #7
  %.fca.0.extract179 = extractvalue { double, i32 } %312, 0
  %.fca.1.extract180 = extractvalue { double, i32 } %312, 1
  store double %.fca.0.extract179, ptr %46, align 8
  store i32 %.fca.1.extract180, ptr %.sroa.2182.0..sroa_idx, align 8
  %313 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #7
  switch i32 %313, label %317 [
    i32 0, label %314
    i32 20, label %.thread586
  ], !prof !43

314:                                              ; preds = %311
  %315 = load double, ptr %45, align 8, !tbaa !44
  %316 = fptrunc double %315 to float
  store float %316, ptr %185, align 8, !tbaa !131
  br label %.thread586

.thread586:                                       ; preds = %314, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  br label %650

317:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #7
  br label %.thread791

318:                                              ; preds = %194
  %319 = load i64, ptr %152, align 8, !tbaa !11
  %320 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %319, i64 noundef 2048)
  br i1 %320, label %321, label %650

321:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %322 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %49, ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #7
  %.not482 = icmp eq i32 %322, 0
  br i1 %.not482, label %323, label %.thread615, !prof !42

.thread615:                                       ; preds = %321
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #7
  br label %.thread791

323:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #7
  call void @_ZSt11make_uniqueIN8fastgltf19MaterialIridescenceEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.315") align 8 %50)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.98) #7
  %324 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %53) #7
  %.fca.0.extract172 = extractvalue { double, i32 } %324, 0
  %.fca.1.extract173 = extractvalue { double, i32 } %324, 1
  store double %.fca.0.extract172, ptr %52, align 8
  store i32 %.fca.1.extract173, ptr %.sroa.2175.0..sroa_idx, align 8
  %325 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %52, ptr noundef nonnull align 8 dereferenceable(8) %51) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #7
  switch i32 %325, label %.thread619 [
    i32 0, label %326
    i32 20, label %330
  ], !prof !43

.thread619:                                       ; preds = %323
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #7
  br label %.thread791

326:                                              ; preds = %323
  %327 = load double, ptr %51, align 8, !tbaa !44
  %328 = fptrunc double %327 to float
  %329 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  store float %328, ptr %329, align 8, !tbaa !132
  br label %330

330:                                              ; preds = %326, %323
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef @.str.99) #7
  %331 = load i64, ptr %152, align 8, !tbaa !11
  %332 = load i64, ptr %55, align 8
  %333 = load ptr, ptr %182, align 8
  %334 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %48, i64 %332, ptr %333, ptr noundef nonnull %54, i64 noundef %331, i8 noundef zeroext 0) #7
  switch i64 %334, label %378 [
    i64 0, label %335
    i64 8, label %339
  ], !prof !56

335:                                              ; preds = %330
  %336 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  %337 = getelementptr inbounds i8, ptr %336, i64 8
  %338 = 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) %337, ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  br label %339

339:                                              ; preds = %335, %330
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %58, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.100) #7
  %340 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %58) #7
  %.fca.0.extract163 = extractvalue { double, i32 } %340, 0
  %.fca.1.extract164 = extractvalue { double, i32 } %340, 1
  store double %.fca.0.extract163, ptr %57, align 8
  store i32 %.fca.1.extract164, ptr %.sroa.2166.0..sroa_idx, align 8
  %341 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %57, ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  switch i32 %341, label %377 [
    i32 0, label %342
    i32 20, label %347
  ], !prof !57

342:                                              ; preds = %339
  %343 = load double, ptr %56, align 8, !tbaa !44
  %344 = fptrunc double %343 to float
  %345 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  %346 = getelementptr inbounds i8, ptr %345, i64 40
  store float %344, ptr %346, align 8, !tbaa !134
  br label %347

347:                                              ; preds = %342, %339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.101) #7
  %348 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %61) #7
  %.fca.0.extract157 = extractvalue { double, i32 } %348, 0
  %.fca.1.extract158 = extractvalue { double, i32 } %348, 1
  store double %.fca.0.extract157, ptr %60, align 8
  store i32 %.fca.1.extract158, ptr %.sroa.2160.0..sroa_idx, align 8
  %349 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %60, ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #7
  switch i32 %349, label %376 [
    i32 0, label %350
    i32 20, label %355
  ], !prof !43

350:                                              ; preds = %347
  %351 = load double, ptr %59, align 8, !tbaa !44
  %352 = fptrunc double %351 to float
  %353 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  %354 = getelementptr inbounds i8, ptr %353, i64 44
  store float %352, ptr %354, align 4, !tbaa !135
  br label %355

355:                                              ; preds = %350, %347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %64) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.102) #7
  %356 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %64) #7
  %.fca.0.extract151 = extractvalue { double, i32 } %356, 0
  %.fca.1.extract152 = extractvalue { double, i32 } %356, 1
  store double %.fca.0.extract151, ptr %63, align 8
  store i32 %.fca.1.extract152, ptr %.sroa.2154.0..sroa_idx, align 8
  %357 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %63, ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #7
  switch i32 %357, label %375 [
    i32 0, label %358
    i32 20, label %363
  ], !prof !43

358:                                              ; preds = %355
  %359 = load double, ptr %62, align 8, !tbaa !44
  %360 = fptrunc double %359 to float
  %361 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  %362 = getelementptr inbounds i8, ptr %361, i64 48
  store float %360, ptr %362, align 8, !tbaa !136
  br label %363

363:                                              ; preds = %358, %355
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %65) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef @.str.103) #7
  %364 = load i64, ptr %152, align 8, !tbaa !11
  %365 = load i64, ptr %66, align 8
  %366 = load ptr, ptr %183, align 8
  %367 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %48, i64 %365, ptr %366, ptr noundef nonnull %65, i64 noundef %364, i8 noundef zeroext 0) #7
  switch i64 %367, label %374 [
    i64 0, label %368
    i64 8, label %372
  ]

368:                                              ; preds = %363
  %369 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  %370 = getelementptr inbounds i8, ptr %369, i64 56
  %371 = 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) %370, ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  br label %372

372:                                              ; preds = %368, %363
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br label %374

374:                                              ; preds = %363, %372
  %.28613 = phi i64 [ %.0800, %372 ], [ %367, %363 ]
  %.30349 = phi i32 [ 4, %372 ], [ 1, %363 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #7
  br label %375

375:                                              ; preds = %355, %374
  %.31350 = phi i32 [ %.30349, %374 ], [ 1, %355 ]
  %.29 = phi i64 [ %.28613, %374 ], [ 5, %355 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  br label %376

376:                                              ; preds = %347, %375
  %.32351 = phi i32 [ %.31350, %375 ], [ 1, %347 ]
  %.30 = phi i64 [ %.29, %375 ], [ 5, %347 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  br label %377

377:                                              ; preds = %339, %376
  %.33352 = phi i32 [ %.32351, %376 ], [ 1, %339 ]
  %.31 = phi i64 [ %.30, %376 ], [ 5, %339 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  br label %378

378:                                              ; preds = %377, %330
  %.34353 = phi i32 [ %.33352, %377 ], [ 1, %330 ]
  %.32 = phi i64 [ %.31, %377 ], [ %334, %330 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @_ZNSt10unique_ptrIN8fastgltf19MaterialIridescenceESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #7
  %cond40 = icmp eq i32 %.34353, 4
  br i1 %cond40, label %650, label %.thread791.loopexit

379:                                              ; preds = %194
  %380 = load i64, ptr %152, align 8, !tbaa !11
  %381 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %380, i64 noundef 65536)
  br i1 %381, label %382, label %650

382:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %383 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %68, ptr noundef nonnull align 8 dereferenceable(16) %67) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #7
  %.not475 = icmp eq i32 %383, 0
  br i1 %.not475, label %384, label %.thread654, !prof !42

.thread654:                                       ; preds = %382
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  br label %.thread791

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #7
  call void @_ZSt11make_uniqueIN8fastgltf13MaterialSheenEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.323") align 8 %69)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %72) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull @.str.104) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %71, ptr noundef nonnull align 8 dereferenceable(20) %72) #7
  %385 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %71, ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #7
  switch i32 %385, label %.thread658 [
    i32 0, label %386
    i32 20, label %412
  ], !prof !57

386:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #7
  %387 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  %388 = extractvalue { ptr, i64 } %387, 0
  store ptr %388, ptr %73, align 8
  %389 = extractvalue { ptr, i64 } %387, 1
  store i64 %389, ptr %176, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #7
  %390 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  %391 = extractvalue { ptr, i64 } %390, 0
  store ptr %391, ptr %74, align 8
  %392 = extractvalue { ptr, i64 } %390, 1
  store i64 %392, ptr %177, align 8
  %393 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %74) #7
  br i1 %393, label %.lr.ph799, label %.thread632

.thread632:                                       ; preds = %403, %386
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #7
  br label %412

.lr.ph799:                                        ; preds = %386, %403
  %.0409798 = phi i64 [ %407, %403 ], [ 0, %386 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #7
  %394 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %73) #7
  %395 = extractvalue { ptr, i64 } %394, 0
  store ptr %395, ptr %75, align 8
  %396 = extractvalue { ptr, i64 } %394, 1
  store i64 %396, ptr %178, align 8
  %397 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  %398 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %397) #7
  %.not477 = icmp ult i64 %.0409798, %398
  br i1 %.not477, label %399, label %.thread623

.thread623:                                       ; preds = %.lr.ph799
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #7
  br label %411

399:                                              ; preds = %.lr.ph799
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #7
  %400 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %75) #7
  %.fca.0.extract137 = extractvalue { double, i32 } %400, 0
  %.fca.1.extract138 = extractvalue { double, i32 } %400, 1
  store double %.fca.0.extract137, ptr %77, align 8
  store i32 %.fca.1.extract138, ptr %.sroa.2140.0..sroa_idx, align 8
  %401 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %77, ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  %.not478 = icmp eq i32 %401, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #7
  br i1 %.not478, label %403, label %402, !prof !42

402:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #7
  br label %411

403:                                              ; preds = %399
  %404 = load double, ptr %76, align 8, !tbaa !44
  %405 = fptrunc double %404 to float
  %406 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  %407 = add nuw i64 %.0409798, 1
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %406, i64 noundef %.0409798) #7
  store float %405, ptr %408, align 4, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #7
  %409 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %73) #7
  %410 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %74) #7
  br i1 %410, label %.lr.ph799, label %.thread632

411:                                              ; preds = %402, %.thread623
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #7
  br label %.thread658

.thread658:                                       ; preds = %384, %411
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  call void @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  br label %.thread791

412:                                              ; preds = %.thread632, %384
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.105) #7
  %413 = load i64, ptr %152, align 8, !tbaa !11
  %414 = load i64, ptr %79, align 8
  %415 = load ptr, ptr %179, align 8
  %416 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %67, i64 %414, ptr %415, ptr noundef nonnull %78, i64 noundef %413, i8 noundef zeroext 0) #7
  switch i64 %416, label %442 [
    i64 0, label %417
    i64 8, label %421
  ], !prof !56

417:                                              ; preds = %412
  %418 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  %419 = getelementptr inbounds i8, ptr %418, i64 16
  %420 = 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) %419, ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  br label %421

421:                                              ; preds = %417, %412
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %82) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull @.str.106) #7
  %422 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %82) #7
  %.fca.0.extract128 = extractvalue { double, i32 } %422, 0
  %.fca.1.extract129 = extractvalue { double, i32 } %422, 1
  store double %.fca.0.extract128, ptr %81, align 8
  store i32 %.fca.1.extract129, ptr %.sroa.2131.0..sroa_idx, align 8
  %423 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %81, ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #7
  switch i32 %423, label %441 [
    i32 0, label %424
    i32 20, label %429
  ], !prof !43

424:                                              ; preds = %421
  %425 = load double, ptr %80, align 8, !tbaa !44
  %426 = fptrunc double %425 to float
  %427 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  %428 = getelementptr inbounds i8, ptr %427, i64 48
  store float %426, ptr %428, align 8, !tbaa !138
  br label %429

429:                                              ; preds = %424, %421
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %83) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef @.str.107) #7
  %430 = load i64, ptr %152, align 8, !tbaa !11
  %431 = load i64, ptr %84, align 8
  %432 = load ptr, ptr %180, align 8
  %433 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %67, i64 %431, ptr %432, ptr noundef nonnull %83, i64 noundef %430, i8 noundef zeroext 0) #7
  switch i64 %433, label %440 [
    i64 0, label %434
    i64 8, label %438
  ], !prof !56

434:                                              ; preds = %429
  %435 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  %436 = getelementptr inbounds i8, ptr %435, i64 56
  %437 = 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) %436, ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  br label %438

438:                                              ; preds = %434, %429
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br label %440

440:                                              ; preds = %429, %438
  %.43652 = phi i64 [ %.0800, %438 ], [ %433, %429 ]
  %.45364 = phi i32 [ 4, %438 ], [ 1, %429 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %83) #7
  br label %441

441:                                              ; preds = %421, %440
  %.46365 = phi i32 [ %.45364, %440 ], [ 1, %421 ]
  %.44 = phi i64 [ %.43652, %440 ], [ 5, %421 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #7
  br label %442

442:                                              ; preds = %441, %412
  %.47366 = phi i32 [ %.46365, %441 ], [ 1, %412 ]
  %.45 = phi i64 [ %.44, %441 ], [ %416, %412 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  call void @_ZNSt10unique_ptrIN8fastgltf13MaterialSheenESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #7
  %cond31 = icmp eq i32 %.47366, 4
  br i1 %cond31, label %650, label %.thread791.loopexit

443:                                              ; preds = %194
  %444 = load i64, ptr %152, align 8, !tbaa !11
  %445 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %444, i64 noundef 512)
  br i1 %445, label %446, label %650

446:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %86) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %447 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %86, ptr noundef nonnull align 8 dereferenceable(16) %85) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %86) #7
  %.not468 = icmp eq i32 %447, 0
  br i1 %.not468, label %448, label %.thread694, !prof !42

.thread694:                                       ; preds = %446
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #7
  br label %.thread791

448:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #7
  call void @_ZSt11make_uniqueIN8fastgltf16MaterialSpecularEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.331") align 8 %87)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %90) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull @.str.108) #7
  %449 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %90) #7
  %.fca.0.extract118 = extractvalue { double, i32 } %449, 0
  %.fca.1.extract119 = extractvalue { double, i32 } %449, 1
  store double %.fca.0.extract118, ptr %89, align 8
  store i32 %.fca.1.extract119, ptr %.sroa.2121.0..sroa_idx, align 8
  %450 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %89, ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #7
  switch i32 %450, label %.thread698 [
    i32 0, label %451
    i32 20, label %455
  ], !prof !57

.thread698:                                       ; preds = %448
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #7
  br label %.thread791

451:                                              ; preds = %448
  %452 = load double, ptr %88, align 8, !tbaa !44
  %453 = fptrunc double %452 to float
  %454 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  store float %453, ptr %454, align 8, !tbaa !140
  br label %455

455:                                              ; preds = %451, %448
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %91) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef @.str.109) #7
  %456 = load i64, ptr %152, align 8, !tbaa !11
  %457 = load i64, ptr %92, align 8
  %458 = load ptr, ptr %170, align 8
  %459 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %85, i64 %457, ptr %458, ptr noundef nonnull %91, i64 noundef %456, i8 noundef zeroext 0) #7
  switch i64 %459, label %506 [
    i64 0, label %460
    i64 8, label %464
  ], !prof !56

460:                                              ; preds = %455
  %461 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  %463 = 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) %462, ptr noundef nonnull align 8 dereferenceable(24) %91) #7
  br label %464

464:                                              ; preds = %460, %455
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %94) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %95) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull @.str.110) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %94, ptr noundef nonnull align 8 dereferenceable(20) %95) #7
  %465 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %94, ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #7
  switch i32 %465, label %.thread685 [
    i32 0, label %466
    i32 20, label %494
  ], !prof !43

466:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #7
  %467 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  %468 = extractvalue { ptr, i64 } %467, 0
  store ptr %468, ptr %96, align 8
  %469 = extractvalue { ptr, i64 } %467, 1
  store i64 %469, ptr %171, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %97) #7
  %470 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %93) #7
  %471 = extractvalue { ptr, i64 } %470, 0
  store ptr %471, ptr %97, align 8
  %472 = extractvalue { ptr, i64 } %470, 1
  store i64 %472, ptr %172, align 8
  %473 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %97) #7
  br i1 %473, label %.lr.ph797, label %.thread679

.thread679:                                       ; preds = %484, %466
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  br label %494

.lr.ph797:                                        ; preds = %466, %484
  %.0412796 = phi i64 [ %489, %484 ], [ 0, %466 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %98) #7
  %474 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  %475 = extractvalue { ptr, i64 } %474, 0
  store ptr %475, ptr %98, align 8
  %476 = extractvalue { ptr, i64 } %474, 1
  store i64 %476, ptr %173, align 8
  %477 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  %478 = getelementptr inbounds i8, ptr %477, i64 40
  %479 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %478) #7
  %.not472 = icmp ult i64 %.0412796, %479
  br i1 %.not472, label %480, label %.thread670

.thread670:                                       ; preds = %.lr.ph797
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #7
  br label %493

480:                                              ; preds = %.lr.ph797
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #7
  %481 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %98) #7
  %.fca.0.extract105 = extractvalue { double, i32 } %481, 0
  %.fca.1.extract106 = extractvalue { double, i32 } %481, 1
  store double %.fca.0.extract105, ptr %100, align 8
  store i32 %.fca.1.extract106, ptr %.sroa.2108.0..sroa_idx, align 8
  %482 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %100, ptr noundef nonnull align 8 dereferenceable(8) %99) #7
  %.not473 = icmp eq i32 %482, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #7
  br i1 %.not473, label %484, label %483, !prof !42

483:                                              ; preds = %480
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #7
  br label %493

484:                                              ; preds = %480
  %485 = load double, ptr %99, align 8, !tbaa !44
  %486 = fptrunc double %485 to float
  %487 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  %488 = getelementptr inbounds i8, ptr %487, i64 40
  %489 = add nuw i64 %.0412796, 1
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %488, i64 noundef %.0412796) #7
  store float %486, ptr %490, align 4, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #7
  %491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %96) #7
  %492 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %97) #7
  br i1 %492, label %.lr.ph797, label %.thread679

493:                                              ; preds = %483, %.thread670
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  br label %.thread685

494:                                              ; preds = %.thread679, %464
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %101) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef @.str.111) #7
  %495 = load i64, ptr %152, align 8, !tbaa !11
  %496 = load i64, ptr %102, align 8
  %497 = load ptr, ptr %174, align 8
  %498 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %85, i64 %496, ptr %497, ptr noundef nonnull %101, i64 noundef %495, i8 noundef zeroext 0) #7
  switch i64 %498, label %505 [
    i64 0, label %499
    i64 8, label %503
  ], !prof !56

499:                                              ; preds = %494
  %500 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  %501 = getelementptr inbounds i8, ptr %500, i64 56
  %502 = 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) %501, ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  br label %503

503:                                              ; preds = %499, %494
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  br label %505

505:                                              ; preds = %494, %503
  %.56692 = phi i64 [ %.0800, %503 ], [ %498, %494 ]
  %.58377 = phi i32 [ 4, %503 ], [ 1, %494 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #7
  br label %.thread685

.thread685:                                       ; preds = %493, %464, %505
  %.59378 = phi i32 [ %.58377, %505 ], [ 1, %464 ], [ 1, %493 ]
  %.57 = phi i64 [ %.56692, %505 ], [ 5, %464 ], [ 5, %493 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #7
  br label %506

506:                                              ; preds = %.thread685, %455
  %.60379 = phi i32 [ %.59378, %.thread685 ], [ 1, %455 ]
  %.58 = phi i64 [ %.57, %.thread685 ], [ %459, %455 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @_ZNSt10unique_ptrIN8fastgltf16MaterialSpecularESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #7
  %cond22 = icmp eq i32 %.60379, 4
  br i1 %cond22, label %650, label %.thread791.loopexit

507:                                              ; preds = %194
  %508 = load i64, ptr %152, align 8, !tbaa !11
  %509 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %508, i64 noundef 8192)
  br i1 %509, label %510, label %650

510:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %103) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %104) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %511 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %104, ptr noundef nonnull align 8 dereferenceable(16) %103) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %104) #7
  %.not465 = icmp eq i32 %511, 0
  br i1 %.not465, label %512, label %.thread711, !prof !42

.thread711:                                       ; preds = %510
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #7
  br label %.thread791

512:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #7
  call void @_ZSt11make_uniqueIN8fastgltf20MaterialTransmissionEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.339") align 8 %105)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %108) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %108, ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull @.str.112) #7
  %513 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %108) #7
  %.fca.0.extract95 = extractvalue { double, i32 } %513, 0
  %.fca.1.extract96 = extractvalue { double, i32 } %513, 1
  store double %.fca.0.extract95, ptr %107, align 8
  store i32 %.fca.1.extract96, ptr %.sroa.298.0..sroa_idx, align 8
  %514 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %107, ptr noundef nonnull align 8 dereferenceable(8) %106) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #7
  switch i32 %514, label %.thread715 [
    i32 0, label %515
    i32 20, label %519
  ], !prof !43

.thread715:                                       ; preds = %512
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  call void @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #7
  br label %.thread791

515:                                              ; preds = %512
  %516 = load double, ptr %106, align 8, !tbaa !44
  %517 = fptrunc double %516 to float
  %518 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  store float %517, ptr %518, align 8, !tbaa !142
  br label %519

519:                                              ; preds = %515, %512
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %109) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef @.str.113) #7
  %520 = load i64, ptr %152, align 8, !tbaa !11
  %521 = load i64, ptr %110, align 8
  %522 = load ptr, ptr %168, align 8
  %523 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %103, i64 %521, ptr %522, ptr noundef nonnull %109, i64 noundef %520, i8 noundef zeroext 0) #7
  switch i64 %523, label %530 [
    i64 0, label %524
    i64 8, label %528
  ], !prof !56

524:                                              ; preds = %519
  %525 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  %526 = getelementptr inbounds i8, ptr %525, i64 8
  %527 = 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) %526, ptr noundef nonnull align 8 dereferenceable(24) %109) #7
  br label %528

528:                                              ; preds = %524, %519
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  br label %530

530:                                              ; preds = %528, %519
  %.62709 = phi i64 [ %.0800, %528 ], [ %523, %519 ]
  %cond19 = phi i1 [ true, %528 ], [ false, %519 ]
  %.65384 = phi i32 [ 4, %528 ], [ 1, %519 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #7
  call void @_ZNSt10unique_ptrIN8fastgltf20MaterialTransmissionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #7
  br i1 %cond19, label %650, label %.thread791.loopexit

531:                                              ; preds = %194
  %532 = load i64, ptr %152, align 8, !tbaa !11
  %533 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %532, i64 noundef 131072)
  br i1 %533, label %534, label %650

534:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %112) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %535 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %112, ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %112) #7
  %536 = icmp eq i32 %535, 0
  br i1 %536, label %.thread719, label %537, !prof !42

.thread719:                                       ; preds = %534
  store i8 1, ptr %167, align 2, !tbaa !144
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #7
  br label %650

537:                                              ; preds = %534
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #7
  br label %.thread791

538:                                              ; preds = %194
  %539 = load i64, ptr %152, align 8, !tbaa !11
  %540 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %539, i64 noundef 4096)
  br i1 %540, label %541, label %650

541:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %114) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %114, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %542 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %114, ptr noundef nonnull align 8 dereferenceable(16) %113) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %114) #7
  %.not458 = icmp eq i32 %542, 0
  br i1 %.not458, label %543, label %.thread754, !prof !42

.thread754:                                       ; preds = %541
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #7
  br label %.thread791

543:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %115) #7
  call void @_ZSt11make_uniqueIN8fastgltf14MaterialVolumeEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.347") align 8 %115)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %118) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %118, ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull @.str.114) #7
  %544 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %118) #7
  %.fca.0.extract84 = extractvalue { double, i32 } %544, 0
  %.fca.1.extract85 = extractvalue { double, i32 } %544, 1
  store double %.fca.0.extract84, ptr %117, align 8
  store i32 %.fca.1.extract85, ptr %.sroa.287.0..sroa_idx, align 8
  %545 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %117, ptr noundef nonnull align 8 dereferenceable(8) %116) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %118) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #7
  switch i32 %545, label %.thread758 [
    i32 0, label %546
    i32 20, label %550
  ], !prof !43

.thread758:                                       ; preds = %543
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #7
  call void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #7
  br label %.thread791

546:                                              ; preds = %543
  %547 = load double, ptr %116, align 8, !tbaa !44
  %548 = fptrunc double %547 to float
  %549 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  store float %548, ptr %549, align 8, !tbaa !145
  br label %550

550:                                              ; preds = %546, %543
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %119) #7
  call void @_ZN8fastgltf11TextureInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef @.str.115) #7
  %551 = load i64, ptr %152, align 8, !tbaa !11
  %552 = load i64, ptr %120, align 8
  %553 = load ptr, ptr %162, align 8
  %554 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %113, i64 %552, ptr %553, ptr noundef nonnull %119, i64 noundef %551, i8 noundef zeroext 0) #7
  switch i64 %554, label %600 [
    i64 0, label %555
    i64 8, label %559
  ], !prof !56

555:                                              ; preds = %550
  %556 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  %557 = getelementptr inbounds i8, ptr %556, i64 8
  %558 = 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) %557, ptr noundef nonnull align 8 dereferenceable(24) %119) #7
  br label %559

559:                                              ; preds = %555, %550
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %122) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %123) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %123, ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull @.str.116) #7
  %560 = call { double, i32 } @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(20) %123) #7
  %.fca.0.extract75 = extractvalue { double, i32 } %560, 0
  %.fca.1.extract76 = extractvalue { double, i32 } %560, 1
  store double %.fca.0.extract75, ptr %122, align 8
  store i32 %.fca.1.extract76, ptr %.sroa.278.0..sroa_idx, align 8
  %561 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %122, ptr noundef nonnull align 8 dereferenceable(8) %121) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %123) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #7
  switch i32 %561, label %599 [
    i32 0, label %562
    i32 20, label %567
  ], !prof !43

562:                                              ; preds = %559
  %563 = load double, ptr %121, align 8, !tbaa !44
  %564 = fptrunc double %563 to float
  %565 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  %566 = getelementptr inbounds i8, ptr %565, i64 40
  store float %564, ptr %566, align 8, !tbaa !147
  br label %567

567:                                              ; preds = %562, %559
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #7
  call void @_ZN8simdjson3dom5arrayC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %125) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %126) #7
  call void @_ZNK8simdjson3dom6objectixEPKc(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.0") align 8 %126, ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull @.str.117) #7
  call void @_ZNK8simdjson15simdjson_resultINS_3dom7elementEE9get_arrayEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result.23") align 8 %125, ptr noundef nonnull align 8 dereferenceable(20) %126) #7
  %568 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom5arrayEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %125, ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %126) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %125) #7
  switch i32 %568, label %.thread749 [
    i32 0, label %569
    i32 20, label %597
  ], !prof !43

569:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %127) #7
  %570 = call { ptr, i64 } @_ZNK8simdjson3dom5array5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  %571 = extractvalue { ptr, i64 } %570, 0
  store ptr %571, ptr %127, align 8
  %572 = extractvalue { ptr, i64 } %570, 1
  store i64 %572, ptr %163, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %128) #7
  %573 = call { ptr, i64 } @_ZNK8simdjson3dom5array3endEv(ptr noundef nonnull align 8 dereferenceable(16) %124) #7
  %574 = extractvalue { ptr, i64 } %573, 0
  store ptr %574, ptr %128, align 8
  %575 = extractvalue { ptr, i64 } %573, 1
  store i64 %575, ptr %164, align 8
  %576 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  br i1 %576, label %.lr.ph, label %.thread743

.thread743:                                       ; preds = %587, %569
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #7
  br label %597

.lr.ph:                                           ; preds = %569, %587
  %.0415795 = phi i64 [ %592, %587 ], [ 0, %569 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %129) #7
  %577 = call { ptr, i64 } @_ZNK8simdjson3dom5array8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(16) %127) #7
  %578 = extractvalue { ptr, i64 } %577, 0
  store ptr %578, ptr %129, align 8
  %579 = extractvalue { ptr, i64 } %577, 1
  store i64 %579, ptr %165, align 8
  %580 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  %581 = getelementptr inbounds i8, ptr %580, i64 44
  %582 = call noundef i64 @_ZNK8fastgltf4math3vecIfLm3EE4sizeEv(ptr noundef nonnull align 4 dereferenceable(12) %581) #7
  %.not463 = icmp ult i64 %.0415795, %582
  br i1 %.not463, label %583, label %.thread734

.thread734:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %129) #7
  br label %596

583:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %130) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %131) #7
  %584 = call { double, i32 } @_ZNK8simdjson3dom7element10get_doubleEv(ptr noundef nonnull align 8 dereferenceable(16) %129) #7
  %.fca.0.extract = extractvalue { double, i32 } %584, 0
  %.fca.1.extract = extractvalue { double, i32 } %584, 1
  store double %.fca.0.extract, ptr %131, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %585 = call noundef i32 @_ZNO8simdjson15simdjson_resultIdE3getERd(ptr noundef nonnull align 8 dereferenceable(12) %131, ptr noundef nonnull align 8 dereferenceable(8) %130) #7
  %.not464 = icmp eq i32 %585, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %131) #7
  br i1 %.not464, label %587, label %586, !prof !42

586:                                              ; preds = %583
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %129) #7
  br label %596

587:                                              ; preds = %583
  %588 = load double, ptr %130, align 8, !tbaa !44
  %589 = fptrunc double %588 to float
  %590 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  %591 = getelementptr inbounds i8, ptr %590, i64 44
  %592 = add nuw i64 %.0415795, 1
  %593 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8fastgltf4math3vecIfLm3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %591, i64 noundef %.0415795) #7
  store float %589, ptr %593, align 4, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %129) #7
  %594 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom5array8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %127) #7
  %595 = call noundef zeroext i1 @_ZNK8simdjson3dom5array8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(16) %128) #7
  br i1 %595, label %.lr.ph, label %.thread743

596:                                              ; preds = %586, %.thread734
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #7
  br label %.thread749

597:                                              ; preds = %.thread743, %567
  %598 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  br label %.thread749

.thread749:                                       ; preds = %596, %567, %597
  %.74753 = phi i64 [ %.0800, %597 ], [ 5, %567 ], [ 5, %596 ]
  %.77396 = phi i32 [ 4, %597 ], [ 1, %567 ], [ 1, %596 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #7
  br label %599

599:                                              ; preds = %559, %.thread749
  %.78397 = phi i32 [ %.77396, %.thread749 ], [ 1, %559 ]
  %.75 = phi i64 [ %.74753, %.thread749 ], [ 5, %559 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #7
  br label %600

600:                                              ; preds = %599, %550
  %.79398 = phi i32 [ %.78397, %599 ], [ 1, %550 ]
  %.76 = phi i64 [ %.75, %599 ], [ %554, %550 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #7
  call void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #7
  %cond9 = icmp eq i32 %.79398, 4
  br i1 %cond9, label %650, label %.thread791.loopexit

601:                                              ; preds = %194
  %602 = load i64, ptr %152, align 8, !tbaa !11
  %603 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %602, i64 noundef 2097152)
  br i1 %603, label %604, label %650

604:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %132) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %133) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %133, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %605 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %133, ptr noundef nonnull align 8 dereferenceable(16) %132) #7
  %.not456 = icmp eq i32 %605, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %133) #7
  br i1 %.not456, label %606, label %.thread767, !prof !42

.thread767:                                       ; preds = %604
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #7
  br label %.thread791

606:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %134) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %134, i8 0, i64 16, i1 false)
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %159) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef @.str.118) #7
  %607 = load i64, ptr %152, align 8, !tbaa !11
  %608 = load i64, ptr %135, align 8
  %609 = load ptr, ptr %160, align 8
  %610 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %132, i64 %608, ptr %609, ptr noundef nonnull %134, i64 noundef %607, i8 noundef zeroext 0) #7
  switch i64 %610, label %613 [
    i64 0, label %611
    i64 8, label %.thread771
  ], !prof !56

611:                                              ; preds = %606
  %612 = 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) %161, ptr noundef nonnull align 8 dereferenceable(24) %134) #7
  br label %.thread771

.thread771:                                       ; preds = %606, %611
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #7
  br label %650

613:                                              ; preds = %606
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #7
  br label %.thread791

614:                                              ; preds = %194
  %615 = load i64, ptr %152, align 8, !tbaa !11
  %616 = call noundef zeroext i1 @_ZN8fastgltf6hasBitINS_10ExtensionsES1_EEbT_T0_(i64 noundef %615, i64 noundef 4194304)
  br i1 %616, label %617, label %650

617:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %136) #7
  call void @_ZN8simdjson3dom6objectC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %137) #7
  call void @_ZNK8simdjson3dom7element10get_objectEv(ptr dead_on_unwind nonnull writable sret(%"struct.simdjson::simdjson_result") align 8 %137, ptr noundef nonnull align 8 dereferenceable(16) %153) #7
  %618 = call noundef i32 @_ZNO8simdjson8internal20simdjson_result_baseINS_3dom6objectEE3getERS3_(ptr noundef nonnull align 8 dereferenceable(20) %137, ptr noundef nonnull align 8 dereferenceable(16) %136) #7
  %.not = icmp eq i32 %618, 0
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %137) #7
  br i1 %.not, label %619, label %.thread786, !prof !42

.thread786:                                       ; preds = %617
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #7
  br label %.thread791

619:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #7
  call void @_ZSt11make_uniqueIN8fastgltf22MaterialPackedTexturesEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.355") align 8 %138)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %139) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %139, i8 0, i64 16, i1 false)
  call void @_ZNSt10unique_ptrIN8fastgltf16TextureTransformESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %154) #7
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef @.str.119) #7
  %620 = load i64, ptr %152, align 8, !tbaa !11
  %621 = load i64, ptr %140, align 8
  %622 = load ptr, ptr %155, align 8
  %623 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 %621, ptr %622, ptr noundef nonnull %139, i64 noundef %620, i8 noundef zeroext 0) #7
  switch i64 %623, label %647 [
    i64 0, label %624
    i64 8, label %627
  ], !prof !56

624:                                              ; preds = %619
  %625 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  %626 = 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) %625, ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  br label %627

627:                                              ; preds = %624, %619
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef @.str.120) #7
  %628 = load i64, ptr %152, align 8, !tbaa !11
  %629 = load i64, ptr %141, align 8
  %630 = load ptr, ptr %156, align 8
  %631 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 %629, ptr %630, ptr noundef nonnull %139, i64 noundef %628, i8 noundef zeroext 0) #7
  switch i64 %631, label %647 [
    i64 0, label %632
    i64 8, label %636
  ], !prof !56

632:                                              ; preds = %627
  %633 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  %634 = getelementptr inbounds i8, ptr %633, i64 32
  %635 = 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) %634, ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  br label %636

636:                                              ; preds = %632, %627
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %142, ptr noundef @.str.121) #7
  %637 = load i64, ptr %152, align 8, !tbaa !11
  %638 = load i64, ptr %142, align 8
  %639 = load ptr, ptr %157, align 8
  %640 = call noundef i64 @_ZN8fastgltf16parseTextureInfoERN8simdjson3dom6objectESt17basic_string_viewIcSt11char_traitsIcEEPNS_11TextureInfoENS_10ExtensionsENS_15TextureInfoTypeE(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 %638, ptr %639, ptr noundef nonnull %139, i64 noundef %637, i8 noundef zeroext 0) #7
  switch i64 %640, label %647 [
    i64 0, label %641
    i64 8, label %645
  ], !prof !56

641:                                              ; preds = %636
  %642 = call noundef ptr @_ZNKSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  %643 = getelementptr inbounds i8, ptr %642, i64 64
  %644 = 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) %643, ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  br label %645

645:                                              ; preds = %641, %636
  %646 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  br label %647

647:                                              ; preds = %645, %619, %627, %636
  %cond3 = phi i1 [ true, %645 ], [ false, %619 ], [ false, %627 ], [ false, %636 ]
  %.88407 = phi i32 [ 4, %645 ], [ 1, %619 ], [ 1, %627 ], [ 1, %636 ]
  %.84 = phi i64 [ %.0800, %645 ], [ %623, %619 ], [ %631, %627 ], [ %640, %636 ]
  call void @_ZN8fastgltf11TextureInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %139) #7
  call void @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #7
  br i1 %cond3, label %650, label %.thread791.loopexit

.thread791.loopexit:                              ; preds = %228, %281, %378, %442, %506, %530, %600, %647
  %.90.ph.ph = phi i32 [ %.3322, %228 ], [ %.15334, %281 ], [ %.34353, %378 ], [ %.47366, %442 ], [ %.60379, %506 ], [ %.65384, %530 ], [ %.79398, %600 ], [ %.88407, %647 ]
  %.87.ph.ph = phi i64 [ %.3523, %228 ], [ %.14, %281 ], [ %.32, %378 ], [ %.45, %442 ], [ %.58, %506 ], [ %.62709, %530 ], [ %.76, %600 ], [ %.84, %647 ]
  %648 = icmp eq i32 %.90.ph.ph, 2
  %649 = select i1 %648, i64 0, i64 %.87.ph.ph
  br label %.thread791

.thread791:                                       ; preds = %.thread791.loopexit, %613, %537, %317, %305, %293, %.thread525, %.thread529, %.thread533, %.thread558, %.thread562, %.thread566, %.thread574, %.thread582, %.thread615, %.thread619, %.thread654, %.thread658, %.thread694, %.thread698, %.thread711, %.thread715, %.thread754, %.thread758, %.thread767, %.thread786
  %.90.ph = phi i64 [ 5, %.thread786 ], [ 5, %.thread767 ], [ 5, %.thread758 ], [ 5, %.thread754 ], [ 5, %.thread715 ], [ 5, %.thread711 ], [ 5, %.thread698 ], [ 5, %.thread694 ], [ 5, %.thread658 ], [ 5, %.thread654 ], [ 5, %.thread619 ], [ 5, %.thread615 ], [ 5, %.thread582 ], [ 5, %.thread574 ], [ 5, %.thread566 ], [ 4, %.thread562 ], [ 5, %.thread558 ], [ 4, %.thread533 ], [ 4, %.thread529 ], [ 5, %.thread525 ], [ 5, %293 ], [ 5, %305 ], [ 4, %317 ], [ 5, %537 ], [ %610, %613 ], [ %649, %.thread791.loopexit ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  br label %.loopexit

650:                                              ; preds = %.thread771, %.thread719, %.thread586, %.thread578, %.thread570, %194, %614, %601, %538, %531, %507, %443, %379, %318, %306, %294, %282, %229, %197, %228, %281, %378, %442, %506, %530, %600, %647
  %.86 = phi i64 [ %.0800, %194 ], [ %.84, %647 ], [ %.0800, %614 ], [ %.0800, %601 ], [ %.76, %600 ], [ %.0800, %538 ], [ %.0800, %531 ], [ %.62709, %530 ], [ %.0800, %507 ], [ %.58, %506 ], [ %.0800, %443 ], [ %.45, %442 ], [ %.0800, %379 ], [ %.32, %378 ], [ %.0800, %318 ], [ %.0800, %306 ], [ %.0800, %294 ], [ %.0800, %282 ], [ %.14, %281 ], [ %.0800, %229 ], [ %.3523, %228 ], [ %.0800, %197 ], [ %.0800, %.thread570 ], [ %.0800, %.thread578 ], [ %.0800, %.thread586 ], [ %.0800, %.thread719 ], [ %.0800, %.thread771 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  %651 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8simdjson3dom6object8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  %652 = call noundef zeroext i1 @_ZNK8simdjson3dom6object8iteratorneERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br i1 %652, label %194, label %.loopexit

.loopexit:                                        ; preds = %650, %3, %.thread791
  %.92 = phi i64 [ %.90.ph, %.thread791 ], [ 0, %3 ], [ 0, %650 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  ret i64 %.92
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf18MaterialAnisotropyEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.299") align 8) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 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 noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN8fastgltf18MaterialAnisotropyESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf17MaterialClearcoatEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.307") align 8) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf19MaterialIridescenceEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.315") align 8) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf13MaterialSheenEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.323") align 8) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf16MaterialSpecularEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.331") align 8) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf20MaterialTransmissionEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.339") align 8) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf14MaterialVolumeEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.347") align 8) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN8fastgltf14MaterialVolumeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) 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: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_uniqueIN8fastgltf22MaterialPackedTexturesEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.355") align 8) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN8fastgltf22MaterialPackedTexturesESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) 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: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

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

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

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


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